diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2021-04-09 12:10:19 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2021-04-09 14:12:48 +0200 |
commit | 4e583cd4dedd6467f300eea5947a4f6bb2c036f2 (patch) | |
tree | dae818feb42faa54a1c2e68f0bb8d35f7ee92d13 /test/run_tests.sh | |
parent | 0a7ad7a76ac34d7a0c7635591203de08979b60da (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-x | test/run_tests.sh | 93 |
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 |