Signed-off-by: Paul Moore <[email protected]>
---
tests/regression | 42 ++++++++++++++++++++++++++++++-----------
tests/util.c | 4 ++--
tests/util.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 89 insertions(+), 13 deletions(-)
create mode 100644 tests/util.py
diff --git a/tests/regression b/tests/regression
index 41205de..5b89096 100755
--- a/tests/regression
+++ b/tests/regression
@@ -43,12 +43,13 @@ function verify_deps() {
#
function usage() {
cat << EOF
-usage: regression [-h] [-a] [-b BATCH_NAME] [-g] [-l [LOG]]
+usage: regression [-h] [-m MODE] [-a] [-b BATCH_NAME] [-g] [-l [LOG]]
[-s SINGLE_TEST] [-t [TEMP_DIR]] [-v]
libseccomp regression test automation script
optional arguments:
-h show this help message and exit
+ -m MODE specified the test mode [c (default), python]
-a specifies all tests are to be run
-b BATCH_NAME specifies batch of tests to be run
-g specifies that tests are to be run with valgrind
@@ -148,7 +149,8 @@ function get_range() {
#
# Arguments:
# 1 string containing generated test number
-# 2 string containing command to run
+# 2 string containing command name
+# 3 string containing command options and redirects
#
function run_test_command() {
local cmd
@@ -156,19 +158,23 @@ function run_test_command() {
if $use_valgrind && $verbose; then
print_valgrind $1
if [[ $logfd -eq 3 ]]; then
- cmd="/usr/bin/valgrind --log-fd=$logfd ./$2"
+ cmd="/usr/bin/valgrind --log-fd=$logfd ./$2 $3"
else
- cmd="/usr/bin/valgrind ./$2"
+ cmd="/usr/bin/valgrind ./$2 $3"
fi
elif $use_valgrind; then
# With -q, valgrind will only print error messages
if [[ $logfd -eq 3 ]]; then
- cmd="/usr/bin/valgrind -q --log-fd=$logfd ./$2"
+ cmd="/usr/bin/valgrind -q --log-fd=$logfd ./$2 $3"
else
- cmd="/usr/bin/valgrind -q ./$2"
+ cmd="/usr/bin/valgrind -q ./$2 $3"
fi
+ elif [[ $mode == "python" ]]; then
+ cmd="PYTHONPATH=$PYTHONPATH"
+ cmd="$cmd:$(cd $(pwd)/../src/python/build/lib.*; pwd)"
+ cmd="$cmd /usr/bin/env python ./$2.py $3"
else
- cmd="./$2"
+ cmd="./$2 $3"
fi
#Run the command
@@ -277,7 +283,7 @@ function run_test_bpf_sim_fuzz() {
done
# Run the test command and put the BPF filter in a temp file
- run_test_command "$testnumstr" "$testname -b > $tmpfile"
+ run_test_command "$testnumstr" "$testname" "-b > $tmpfile"
if [[ $? -ne 0 ]]; then
print_result $testnumstr "ERROR" "$testname rc=$?"
stats_error=$(($stats_error+1))
@@ -471,7 +477,7 @@ function run_test_bpf_sim() {
done
# Run the test command and put the BPF filter in a temp file
- run_test_command "$testnumstr" "$testname -b > $tmpfile"
+ run_test_command "$testnumstr" "$testname" "-b > $tmpfile"
if [[ $? -ne 0 ]]; then
print_result $testnumstr "ERROR" "$testname rc=$?"
stats_error=$(($stats_error+1))
@@ -521,7 +527,7 @@ function run_test_basic() {
print_data "$1" "$2"
# Run the command
- run_test_command "$1" "$2"
+ run_test_command "$1" "$2" ""
if [[ $? -ne 0 ]]; then
print_result $1 "FAILURE" "$2 rc=$?"
stats_failure=$(($stats_failure+1))
@@ -637,6 +643,7 @@ arch=
batch_count=0
logfile=
logfd=
+mode=c
runall=false
singlecount=0
tmpfile=""
@@ -649,7 +656,7 @@ stats_success=0
stats_failure=0
stats_error=0
-while getopts "ab:gl:s:t:vh" opt; do
+while getopts "ab:gl:m:s:t:vh" opt; do
case $opt in
a)
runall=true
@@ -665,6 +672,19 @@ while getopts "ab:gl:s:t:vh" opt; do
l)
logfile="$OPTARG"
;;
+ m)
+ case $OPTARG in
+ c)
+ mode=c
+ ;;
+ python)
+ mode=python
+ ;;
+ *)
+ usage
+ exit 1
+ esac
+ ;;
s)
single_list[single_count]=$OPTARG
single_count=$(($single_count+1))
diff --git a/tests/util.c b/tests/util.c
index d4dc1ff..ce507fa 100644
--- a/tests/util.c
+++ b/tests/util.c
@@ -88,8 +88,8 @@ int util_getopt(int argc, char *argv[], struct util_options
*opts)
* @param opts the options structure
* @param ctx the filter context
*
- * This function outputs the seccomp filter to in either BPF or PFC format
- * depending on the test paramaeters supplied by @opts.
+ * This function outputs the seccomp filter to stdout in either BPF or PFC
+ * format depending on the test paramaeters supplied by @opts.
*
*/
int util_filter_output(const struct util_options *opts,
diff --git a/tests/util.py b/tests/util.py
new file mode 100644
index 0000000..49e2b4b
--- /dev/null
+++ b/tests/util.py
@@ -0,0 +1,56 @@
+#
+# Seccomp Library utility code for tests
+#
+# Copyright (c) 2012 Red Hat <[email protected]>
+# Author: Paul Moore <[email protected]>
+#
+
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of version 2.1 of the GNU Lesser General Public License as
+# published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+# for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <http://www.gnu.org/licenses>.
+#
+
+""" Python utility code for the libseccomp test suite """
+
+import argparse
+import sys
+
+def UtilGetOpt():
+ """ Parse the arguments passed to main
+
+ Description:
+ Parse the arguments passed to the test from the command line. Returns
+ a parsed argparse object.
+ """
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-b", "--bpf", action="store_true")
+ parser.add_argument("-p", "--pfc", action="store_true")
+ return parser.parse_args()
+
+def UtilFilterOutput(args, ctx):
+ """ Output the filter in either BPF or PFC
+
+ Arguments:
+ args - an argparse object from UtilGetOpt()
+ ctx - a seccomp SyscallFilter object
+
+ Description:
+ Output the SyscallFilter to stdout in either BPF or PFC format depending
+ on the test's command line arguments.
+ """
+ if (args.bpf):
+ ctx.export_bpf(sys.stdout)
+ else:
+ ctx.export_pfc(sys.stdout)
+
+# kate: syntax python;
+# kate: indent-mode python; space-indent on; indent-width 4; mixedindent off;
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
libseccomp-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libseccomp-discuss