From ec9cdb73e7584a7936b17963a0acc30fe384855a Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Thu, 27 Jul 2023 14:43:08 +0200 Subject: [PATCH] tests: add test script for pySim-trace pySim-trace has no test coverage yet. Let's use a script to run a GSAMTAP pcacp through it and check that no exceptions are raised. Related: OS#6094 Change-Id: Icfabfa7c59968021eef0399991bd05b92467d8d2 --- contrib/jenkins.sh | 2 ++ pysim-testdata/pySim-trace_test_gsmtap.pcapng | Bin 0 -> 116540 bytes tests/pySim-trace_test.sh | 20 ++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 pysim-testdata/pySim-trace_test_gsmtap.pcapng create mode 100755 tests/pySim-trace_test.sh diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh index 03098777..3e025469 100755 --- a/contrib/jenkins.sh +++ b/contrib/jenkins.sh @@ -22,6 +22,7 @@ case "$JOB_TYPE" in . venv/bin/activate pip install -r requirements.txt + pip install pyshark # Execute automatically discovered unit tests first python -m unittest discover -v -s tests/ @@ -29,6 +30,7 @@ case "$JOB_TYPE" in # Run the test with physical cards cd pysim-testdata ../tests/pysim-test.sh + ../tests/pySim-trace_test.sh ;; "pylint") # Print pylint version diff --git a/pysim-testdata/pySim-trace_test_gsmtap.pcapng b/pysim-testdata/pySim-trace_test_gsmtap.pcapng new file mode 100644 index 0000000000000000000000000000000000000000..35c3003e79e9a8eec5a1564dcc1092bd5872d920 GIT binary patch literal 116540 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 PgE)$nfdj&Tk{~+(BD#^0 literal 0 HcmV?d00001 diff --git a/tests/pySim-trace_test.sh b/tests/pySim-trace_test.sh new file mode 100755 index 00000000..0ec5e0f8 --- /dev/null +++ b/tests/pySim-trace_test.sh @@ -0,0 +1,20 @@ +#/bin/bash + +PYSIM_TRACE=../pySim-trace.py +GSMTAP_TRACE=pySim-trace_test_gsmtap.pcapng + +echo "pySim-trace_test - a test program to test pySim-trace.py" +echo "========================================================" + +$PYSIM_TRACE gsmtap-pyshark-pcap -f $GSMTAP_TRACE +if [ $? -ne 0 ]; then + echo "" + echo "========================================================" + echo "Testrun with $GSMTAP_TRACE failed." + exit 1 +fi + +echo "" +echo "========================================================" +echo "trace parsed without problems -- everything ok!" +