aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2024-02-08 00:58:40 +0100
committerToni Uhlig <matzeton@googlemail.com>2024-02-08 01:01:35 +0100
commit8949ba39e63cd7eeb279f20a74db834d02de1bc1 (patch)
tree0ffad9bbf6d4d37d33adcdd4a875f0b0c9307884 /test
parentea968180a23d48edc121215359277e418b476487 (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-xtest/run_tests.sh75
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 --
--------------------------------