summaryrefslogtreecommitdiff
path: root/test/run_tests.sh
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2021-04-09 12:10:19 +0200
committerToni Uhlig <matzeton@googlemail.com>2021-04-09 14:12:48 +0200
commit4e583cd4dedd6467f300eea5947a4f6bb2c036f2 (patch)
treedae818feb42faa54a1c2e68f0bb8d35f7ee92d13 /test/run_tests.sh
parent0a7ad7a76ac34d7a0c7635591203de08979b60da (diff)
Added JSON schema validation to run_tests.sh
* Python3 scripts are now compatible with versions <3.6 * improved and prettified run_tests.sh Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'test/run_tests.sh')
-rwxr-xr-xtest/run_tests.sh93
1 files changed, 76 insertions, 17 deletions
diff --git a/test/run_tests.sh b/test/run_tests.sh
index 747880c9b..4b2603eff 100755
--- a/test/run_tests.sh
+++ b/test/run_tests.sh
@@ -5,15 +5,6 @@ set -e
LINE_SPACES=${LINE_SPACES:-48}
MYDIR="$(realpath "$(dirname ${0})")"
nDPId_test_EXEC="${2:-"$(realpath "${MYDIR}/../nDPId-test")"}"
-nDPI_SOURCE_ROOT="$(realpath "${1}")"
-LOCKFILE="$(realpath "${0}").lock"
-
-touch "${LOCKFILE}"
-exec 42< "${LOCKFILE}"
-flock -x -n 42 || {
- printf '%s\n' "Could not aquire file lock for ${0}. Already running instance?";
- exit 1;
-}
if [ $# -ne 1 -a $# -ne 2 ]; then
cat <<EOF
@@ -21,14 +12,30 @@ usage: ${0} [path-to-nDPI-source-root] [path-to-nDPId-test-exec]
path-to-nDPId-test-exec defaults to ${nDPId_test_EXEC}
EOF
-exit 1
+exit 2
fi
+nDPI_SOURCE_ROOT="$(realpath "${1}")"
+LOCKFILE="$(realpath "${0}").lock"
+
+touch "${LOCKFILE}"
+exec 42< "${LOCKFILE}"
+flock -x -n 42 || {
+ printf '%s\n' "Could not aquire file lock for ${0}. Already running instance?";
+ exit 3;
+}
+function sighandler()
+{
+ rm -f "${LOCKFILE}"
+ exit 4
+}
+trap sighandler SIGINT SIGTERM
+
if [ ! -x "${nDPId_test_EXEC}" ]; then
cat <<EOF
Required nDPId-test executable does not exist; ${nDPId_test_EXEC}
EOF
-exit 1
+exit 5
fi
nDPI_TEST_DIR="${nDPI_SOURCE_ROOT}/tests/pcap"
@@ -37,12 +44,17 @@ cat <<EOF
nDPId-test......: ${nDPId_test_EXEC}
nDPI source root: ${nDPI_TEST_DIR}
+--------------------------
+-- nDPId PCAP diff tests --
+--------------------------
+
EOF
cd "${nDPI_TEST_DIR}"
mkdir -p /tmp/nDPId-test-stderr
set +e
-RETVAL=0
+TESTS_FAILED=0
+
for pcap_file in $(ls *.pcap*); do
printf '%s\n' "${nDPId_test_EXEC} ${pcap_file}" \
>"/tmp/nDPId-test-stderr/${pcap_file}.out"
@@ -56,7 +68,9 @@ for pcap_file in $(ls *.pcap*); do
if [ $? -eq 0 ]; then
if [ ! -r "${MYDIR}/results/${pcap_file}.out" ]; then
printf '%s\n' '[NEW]'
- RETVAL=1
+ mv -v "${MYDIR}/results/${pcap_file}.out.new" \
+ "${MYDIR}/results/${pcap_file}.out"
+ TESTS_FAILED=$((TESTS_FAILED + 1))
elif diff -u0 "${MYDIR}/results/${pcap_file}.out" \
"${MYDIR}/results/${pcap_file}.out.new" >/dev/null; then
printf '%s\n' '[OK]'
@@ -66,26 +80,71 @@ for pcap_file in $(ls *.pcap*); do
"${MYDIR}/results/${pcap_file}.out.new"
mv -v "${MYDIR}/results/${pcap_file}.out.new" \
"${MYDIR}/results/${pcap_file}.out"
- RETVAL=1
+ TESTS_FAILED=$((TESTS_FAILED + 1))
fi
else
printf '%s\n' '[FAIL]'
printf '%s\n' '----------------------------------------'
printf '%s\n' "-- STDERR of ${pcap_file}"
cat "/tmp/nDPId-test-stderr/${pcap_file}.out"
- RETVAL=1
+ TESTS_FAILED=$((TESTS_FAILED + 1))
fi
rm -f "${MYDIR}/results/${pcap_file}.out.new"
done
+cat <<EOF
+
+----------------------------
+-- JSON schema validation --
+----------------------------
+
+EOF
+
cd "${MYDIR}"
for out_file in $(ls results/*.out); do
pcap_file="${nDPI_TEST_DIR}/$(basename ${out_file%.out})"
if [ ! -r "${pcap_file}" ]; then
printf "%-${LINE_SPACES}s\t%s\n" "$(basename ${pcap_file})" '[MISSING]'
- RETVAL=1
+ TESTS_FAILED=$((TESTS_FAILED + 1))
+ else
+ printf "SCHEMA %-${LINE_SPACES}s\t" "$(basename ${pcap_file})"
+ printf '%s\n' '*** JSON schema validation ***' >>"/tmp/nDPId-test-stderr/$(basename ${pcap_file}).out"
+ if [ ! -r "${out_file}" ]; then
+ printf ' %s\n' '[MISSING]'
+ TESTS_FAILED=$((TESTS_FAILED + 1))
+ continue
+ fi
+ cat "${out_file}" | nc -q 1 -l 127.0.0.1 9000 &
+ nc_pid=$!
+ ${MYDIR}/../examples/py-schema-validation/py-schema-validation.py \
+ --host 127.0.0.1 --port 9000 2>>"/tmp/nDPId-test-stderr/$(basename ${pcap_file}).out"
+ if [ $? -eq 0 ]; then
+ printf ' %s\n' '[OK]'
+ else
+ printf ' %s\n' '[FAIL]'
+ printf '%s\n' '----------------------------------------'
+ printf '%s\n' "-- STDERR of $(basename ${pcap_file})"
+ cat "/tmp/nDPId-test-stderr/$(basename ${pcap_file}).out"
+ TESTS_FAILED=$((TESTS_FAILED + 1))
+ fi
+ kill -SIGTERM ${nc_pid} 2>/dev/null
+ wait ${nc_pid} 2>/dev/null
fi
done
-exit ${RETVAL}
+if [ ${TESTS_FAILED} -eq 0 ]; then
+cat <<EOF
+
+--------------------------
+-- All tests succeeded. --
+--------------------------
+EOF
+ exit 0
+else
+cat <<EOF
+
+*** ${TESTS_FAILED} tests failed. ***
+EOF
+ exit 1
+fi