diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2024-02-08 00:58:40 +0100 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2024-02-08 01:01:35 +0100 |
commit | 8949ba39e63cd7eeb279f20a74db834d02de1bc1 (patch) | |
tree | 0ffad9bbf6d4d37d33adcdd4a875f0b0c9307884 /test | |
parent | ea968180a23d48edc121215359277e418b476487 (diff) |
Added test mode for influx push daemon.
* required for regression testing
* added new confidence value (match by custom rule)
* updated / tweaked grafana exported dashboard
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'test')
-rwxr-xr-x | test/run_tests.sh | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/test/run_tests.sh b/test/run_tests.sh index c3464cc2e..a39e4e2a8 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -14,6 +14,7 @@ FLOW_INFO="$(realpath "${5:-"${MYDIR}/../examples/py-flow-info/flow-info.py"}")" NDPISRVD_ANALYSED="$(realpath "${6:-"$(dirname ${nDPId_test_EXEC})/nDPIsrvd-analysed"}")" NDPISRVD_CAPTURED="$(realpath "${6:-"$(dirname ${nDPId_test_EXEC})/nDPIsrvd-captured"}")" NDPISRVD_COLLECTD="$(realpath "${6:-"$(dirname ${nDPId_test_EXEC})/nDPIsrvd-collectd"}")" +NDPISRVD_INFLUXD="$(realpath "${6:-"$(dirname ${nDPId_test_EXEC})/nDPIsrvd-influxd"}")" IS_GIT=$(test -d "${MYDIR}/../.git" -o -f "${MYDIR}/../.git" && printf '1' || printf '0') function usage() @@ -29,6 +30,7 @@ usage: ${0} [path-to-nDPI-source-root] \\ path-to-nDPIsrvd-analysed defaults to ${NDPISRVD_ANALYSED} path-to-nDPIsrvd-captured defaults to ${NDPISRVD_CAPTURED} path-to-nDPIsrvd-collectd defaults to ${NDPISRVD_COLLECTD} + path-to-nDPIsrvd-influxd defaults to ${NDPISRVD_INFLUXD} EOF return 0 } @@ -483,6 +485,79 @@ fi cat <<EOF +----------------------------- +-- Influxd Statistics DIFF -- +----------------------------- + +EOF + +if [ -x "${NDPISRVD_INFLUXD}" ]; then + cd "${MYDIR}" + for out_file in results/*/*.out; do + if [ ! -r "${out_file}" ]; then + printf '%s: %s\n' "${0}" "${out_file} does not exist!" + TESTS_FAILED=$((TESTS_FAILED + 1)) + continue + fi + out_name="$(basename ${out_file})" + pcap_cfg="$(basename $(dirname ${out_file%.out}))" + stdout_file="/tmp/nDPId-test-stdout/${pcap_cfg}_${out_name}.influxd.new" + stderr_file="/tmp/nDPId-test-stderr/${out_name}" + result_file="${MYDIR}/results/influxd/${pcap_cfg}/${out_name}" + mkdir -p "$(dirname ${result_file})" + printf "%-${LINE_SPACES}s\t" "${out_name}" + cat "${out_file}" | grep -vE '^~~.*$' | ${NETCAT_EXEC} & + nc_pid=$! + while ! ss -x -t -n -l | grep -q "${NETCAT_SOCK}"; do sleep 0.1; printf '%s\n' "Waiting until socket ${NETCAT_SOCK} is available.." >>"${stderr_file}"; done + ${NDPISRVD_INFLUXD} -t -i 10 -c -s "${NETCAT_SOCK}" 2>>"${stderr_file}" 1>"${stdout_file}" + kill -SIGTERM ${nc_pid} 2>/dev/null + wait ${nc_pid} 2>/dev/null + while ss -x -t -n -l | grep -q "${NETCAT_SOCK}"; do sleep 0.1; printf '%s\n' "Waiting until socket ${NETCAT_SOCK} is not available anymore.." >>"${stderr_file}"; done + + unknown_count="$(cat "${stdout_file}" | tr ' ' '\n' | tr ',' '\n' | grep -E '^flow.*_unknown' | wc -l || printf '%s' '0')" + if [ "${unknown_count}" -ne 5 ]; then + printf '%s: Unknown count: %s\n' '[INTERNAL]' "${unknown_count}" + TESTS_FAILED=$((TESTS_FAILED + 1)) + elif cat "${stdout_file}" | tr ' ' '\n' | tr ',' '\n' | grep -E '^flow.*_unknown' | grep -qvE '=0'; then + printf '%s\n' '[INTERNAL]' + cat "${stdout_file}" | tr ' ' '\n' | tr ',' '\n' | grep -E '^flow.*_unknown' | grep -vE '=0' || true + TESTS_FAILED=$((TESTS_FAILED + 1)) + elif [ ! -r "${result_file}" ]; then + printf '%s\n' '[NEW]' + test ${IS_GIT} -eq 1 && \ + mv "${stdout_file}" "${result_file}" + TESTS_FAILED=$((TESTS_FAILED + 1)) + elif diff -u0 "${result_file}" "${stdout_file}" >/dev/null; then + printf '%s\n' '[OK]' + rm -f "${stdout_file}" + else + printf '%s\n' '[DIFF]' + diff -u0 "${result_file}" "${stdout_file}" + test ${IS_GIT} -eq 1 && \ + mv "${stdout_file}" "${result_file}" + TESTS_FAILED=$((TESTS_FAILED + 1)) + fi + done + + for out_file in ${MYDIR}/results/influxd/*/*.out; do + if [ ! -r "${out_file}" ]; then + printf '%s: %s\n' "${0}" "${out_file} does not exist!" + TESTS_FAILED=$((TESTS_FAILED + 1)) + continue + fi + result_file="$(basename ${out_file})" + pcap_cfg="$(basename $(dirname ${out_file%.out}))" + if [ ! -r "${MYDIR}/results/${pcap_cfg}/${result_file}" ]; then + printf "%-${LINE_SPACES}s\t%s\n" "${result_file}" "[MISSING][config: ${pcap_cfg}]" + TESTS_FAILED=$((TESTS_FAILED + 1)) + fi + done +else + printf '%s\n' "Not found or not executable: ${NDPISRVD_INFLUXD}" +fi + +cat <<EOF + -------------------------------- -- SCHEMA/SEMANTIC Validation -- -------------------------------- |