[PATCH 2/2] libnuma: added regression test for new --all option
Petr Holasek <[email protected]> Tue, 10 Sep 2013 15:13:17 +0200
| Newsgroups | org.kernel.vger.linux-numa |
|---|---|
| Message-ID | <[email protected]> |
---
test/bind_range | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
test/regress2 | 1 +
2 files changed, 105 insertions(+)
diff --git a/test/bind_range b/test/bind_range
new file mode 100755
index 0000000..8e0bc22
--- /dev/null
+++ b/test/bind_range
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# This simple script checks --all/-a option which is used for
+# supressing of default cpuset awareness of options --cpunodebind,
+# --physcpubind, --interleave, --preferred and --membind.
+
+# NOTE: Test needs two nodes and two cpus at least
+
+
+export old_mask
+
+eval_test() {
+ echo "Running $1.."
+ $1
+ if [ $? == 1 ] ; then
+ echo -e "$1 FAILED!"
+ reset_mask
+ exit 1
+ fi
+ echo -e "$1 PASSED"
+}
+
+function check_arg_order
+{
+ numactl --all --physcpubind=$HIGHESTCPU ls > /dev/null 2>&1
+ if [ $? == 1 ] ; then
+ return 1;
+ fi
+ numactl --physcpubind=$HIGHESTCPU --all ls > /dev/null 2>&1
+ if [ $? == 0 ] ; then
+ return 1;
+ fi
+
+ return 0
+}
+
+function check_physcpubind
+{
+ reset_mask
+ set_cpu_affinity 0
+ numactl --physcpubind=$HIGHESTCPU ls > /dev/null 2>&1
+ if [ $? == 0 ] ; then # shouldn't pass so easy
+ return 1;
+ fi
+ numactl --all --physcpubind=$HIGHESTCPU ls > /dev/null 2>&1
+ if [ $? == 1 ] ; then # shouldn't fail
+ return 1;
+ fi
+
+ return 0
+}
+
+function check_cpunodebind
+{
+ local low_cpu_range
+ local high_cpu
+
+ reset_mask
+ low_cpu_range=$(cat /sys/devices/system/node/node$LOWESTNODE/cpulist)
+ set_cpu_affinity $low_cpu_range
+ numactl --cpunodebind=$HIGHESTNODE ls > /dev/null 2>&1
+ if [ $? == 1 ] ; then # should pass
+ return 1;
+ fi
+ numactl --all --cpunodebind=$HIGHESTNODE ls > /dev/null 2>&1
+ if [ $? == 1 ] ; then # should pass for sure
+ return 1;
+ fi
+
+ return 0
+}
+
+function set_cpu_affinity
+{
+ taskset -p -c $1 $$ > /dev/null
+ #echo -e "\taffinity of shell was set to" $1
+}
+
+function get_mask
+{
+ old_mask=$(taskset -p $$ | cut -f2 -d: | sed -e 's/^[ \t]*//')
+}
+
+function reset_mask
+{
+ taskset -p $old_mask $$ > /dev/null
+ #echo -e "\taffinity of shell was reset to" $old_mask
+}
+
+HIGHESTCPU=$(grep 'processor' /proc/cpuinfo | tail -n1 | cut -f2 -d' ')
+HIGHESTNODE=$(numactl -H | grep -e 'node [0-9]* cpus' | tail -n1 | cut -f2 -d' ')
+LOWESTNODE=$(numactl -H | grep -e 'node [0-9]* cpus' | head -n1 | cut -f2 -d' ')
+
+get_mask
+
+eval_test check_arg_order
+eval_test check_physcpubind
+eval_test check_cpunodebind
+
+reset_mask
+
+exit 0
+
+
diff --git a/test/regress2 b/test/regress2
index b6a9211..d71f290 100755
--- a/test/regress2
+++ b/test/regress2
@@ -23,4 +23,5 @@ T ./nodemap
T ./checkaffinity
T ./checktopology
T ./tbitmap
+T ./bind_range
#T ./randmap
--
1.8.1.4