From 07008eae5e0a2549633ce915225acc0f32835726 Mon Sep 17 00:00:00 2001
From: Anh <zenpoems@gmail.com>
Date: Fri, 30 Nov 2018 10:26:52 -0800
Subject: [PATCH] Add sanity checks to test functionality instead of relying
 solely on differential testing

Former-commit-id: cffb3e2424976f51b778b6bd4a7fe0b586248951
---
 tests/bzip2/test_script.sh   |  2 +-
 tests/du/test_script.sh      |  5 +++++
 tests/egrep/test_script.sh   | 17 +++++++++++++++++
 tests/fgrep/test_script.sh   | 18 ++++++++++++++++++
 tests/grep/test_script.sh    | 18 ++++++++++++++++++
 tests/ls/test_script.sh      |  7 +++++++
 tests/ncal/test_script.sh    |  6 ++++++
 tests/objdump/test_script.sh |  6 ++++++
 tests/readelf/test_script.sh |  6 ++++++
 tests/sort/data/data.abc     |  3 +++
 tests/sort/data/data.cba     |  3 +++
 tests/sort/test_script.sh    |  8 ++++++++
 tests/tar/test_script.sh     |  6 ++++++
 tests/tcpdump/test_script.sh |  7 +++++++
 tests/touch/test_script.sh   |  8 +++++++-
 15 files changed, 118 insertions(+), 2 deletions(-)
 create mode 100644 tests/sort/data/data.abc
 create mode 100644 tests/sort/data/data.cba

diff --git a/tests/bzip2/test_script.sh b/tests/bzip2/test_script.sh
index bf756f88c..6c9704e61 100755
--- a/tests/bzip2/test_script.sh
+++ b/tests/bzip2/test_script.sh
@@ -67,4 +67,4 @@ if [[ -z "$IGNORE_RESULTS" ]] && [[ -f $DATA_DIR/compression_input1_orig.bz2 ]];
 	fi 
 fi
 cleanup
-report_success
\ No newline at end of file
+report_success
diff --git a/tests/du/test_script.sh b/tests/du/test_script.sh
index d208e7a10..0b3009610 100755
--- a/tests/du/test_script.sh
+++ b/tests/du/test_script.sh
@@ -18,6 +18,11 @@ ORIG_NAME=du
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+timeout 10 $BENCH /usr | grep bin
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/egrep/test_script.sh b/tests/egrep/test_script.sh
index de2e8967e..f310d63bd 100755
--- a/tests/egrep/test_script.sh
+++ b/tests/egrep/test_script.sh
@@ -18,6 +18,23 @@ ORIG_NAME=grep
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+# test basic grep functionality
+TMP_LOG=/tmp/tmp.hello.$(whoami)
+timeout 10 ls / | $BENCH tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+echo "hello" > $TMP_LOG
+$BENCH hello $TMP_LOG
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+$BENCH foobar $TMP_LOG
+if [ $? -eq 0 ]; then
+	report_failure
+fi
+rm $TMP_LOG
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/fgrep/test_script.sh b/tests/fgrep/test_script.sh
index de2e8967e..a401200c9 100755
--- a/tests/fgrep/test_script.sh
+++ b/tests/fgrep/test_script.sh
@@ -18,6 +18,24 @@ ORIG_NAME=grep
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+# test basic grep functionality
+TMP_LOG=/tmp/tmp.hello.$(whoami)
+ls / | $BENCH tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+
+echo "hello" > $TMP_LOG
+$BENCH hello $TMP_LOG
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+$BENCH foobar $TMP_LOG
+if [ $? -eq 0 ]; then
+	report_failure
+fi
+rm $TMP_LOG
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/grep/test_script.sh b/tests/grep/test_script.sh
index 9d01bdf48..f12d37246 100755
--- a/tests/grep/test_script.sh
+++ b/tests/grep/test_script.sh
@@ -18,6 +18,24 @@ ORIG_NAME=grep
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+
+# test basic grep functionality
+TMP_LOG=/tmp/tmp.hello.$(whoami)
+ls / | $BENCH tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+echo "hello" > $TMP_LOG
+$BENCH hello $TMP_LOG
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+$BENCH foobar $TMP_LOG
+if [ $? -eq 0 ]; then
+	report_failure
+fi
+rm $TMP_LOG
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/ls/test_script.sh b/tests/ls/test_script.sh
index 3fe317f0c..294a7dc06 100755
--- a/tests/ls/test_script.sh
+++ b/tests/ls/test_script.sh
@@ -18,6 +18,13 @@ ORIG_NAME=ls
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+
+# sanity check
+$BENCH / | grep tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure 
+fi
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/ncal/test_script.sh b/tests/ncal/test_script.sh
index 443aa38e0..6bfac8c67 100755
--- a/tests/ncal/test_script.sh
+++ b/tests/ncal/test_script.sh
@@ -16,6 +16,12 @@ ORIG_NAME=ncal
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+# sanity check
+timeout 10 $BENCH 2000 | grep -i october
+if [ ! $? -eq 0 ];then 
+	report_failure
+fi
+
 ARGS=("" "-h" "-bogus" "2000" "-w 2000" "-3 5 2001" "1 2000" "1 1999" "-j 2000" "-J 2000" "-S 1000" "-M 1015" "-J -o 12 9999" "-e -p -y 2000" "-M -y -B9 -A5 2000" "-S -y -B10 -A10 2000" "-1" "-A-20 -B-5 1000"  "-w -m 3 1111" "-N 2000" "-N -w 2000" "-N -3 8 2001" "-N 1 2000" "-N 1 1999" "-N -j 2000" "-N -J 2000" "-N -S 1000" "-N -M 1015" "-N -J -o 12 9999" "-N -e -p -y 2000" "-N -M -y -B9 -A5 2000" "-N -S -y -B10 -A10 2000" "-N -1" "-N -A-20 -B-5 1000"  "-N -w -m 3 1111" "-N -y 1999 -m 3" "-N -y -b" "-N -s GB 2000")
 
 for ix in ${!ARGS[*]}
diff --git a/tests/objdump/test_script.sh b/tests/objdump/test_script.sh
index 1f544d6ae..29a4e2f50 100755
--- a/tests/objdump/test_script.sh
+++ b/tests/objdump/test_script.sh
@@ -18,6 +18,12 @@ ORIG_NAME=objdump
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+# sanity check
+timeout 10 $BENCH -D /bin/ls | grep -e add >/dev/null 2>&1
+if [ ! $? -eq 0 ];then 
+	report_failure
+fi
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/readelf/test_script.sh b/tests/readelf/test_script.sh
index dceaed61b..dab4fa9a8 100755
--- a/tests/readelf/test_script.sh
+++ b/tests/readelf/test_script.sh
@@ -18,6 +18,12 @@ ORIG_NAME=readelf
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+# sanity check readelf
+timeout 10 $BENCH -h /bin/ls | grep -i "header" >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+
 run_basic_test 120 --help
 run_basic_test 120 --version
 run_basic_test 120 --doesnotexist
diff --git a/tests/sort/data/data.abc b/tests/sort/data/data.abc
new file mode 100644
index 000000000..de980441c
--- /dev/null
+++ b/tests/sort/data/data.abc
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/tests/sort/data/data.cba b/tests/sort/data/data.cba
new file mode 100644
index 000000000..e274b2bb1
--- /dev/null
+++ b/tests/sort/data/data.cba
@@ -0,0 +1,3 @@
+c
+b
+a
diff --git a/tests/sort/test_script.sh b/tests/sort/test_script.sh
index a1c1b0051..0ac6b3526 100755
--- a/tests/sort/test_script.sh
+++ b/tests/sort/test_script.sh
@@ -18,6 +18,14 @@ ORIG_NAME=sort
 pwd
 echo "TEST_PROG: $TEST_PROG"
 
+# sanity check
+SORTED=/tmp/tmp.sorted.$(whoami)
+timeout 20 $BENCH $DATA_DIR/data.cba > $SORTED
+diff $SORTED $DATA_DIR/data.abc
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+rm $SORTED
 
 run_basic_test 120 --help
 run_basic_test 120 --version
diff --git a/tests/tar/test_script.sh b/tests/tar/test_script.sh
index 274a2b5c5..98a249c31 100755
--- a/tests/tar/test_script.sh
+++ b/tests/tar/test_script.sh
@@ -24,6 +24,12 @@ run_basic_test 120 --doesnotexist
 run_basic_test 120 -cvf $DATA_DIR.tar $DATA_DIR
 run_basic_test 120 -tvf $DATA_DIR/test.tar $DATA_DIR
 
+# sanity check tar functionality
+timeout 10 $BENCH -tf $DATA_DIR.tar | grep dir1
+if [ ! $? -eq 0 ];then 
+	report_failure
+fi
+
 rm $DATA_DIR.tar
 cleanup
 
diff --git a/tests/tcpdump/test_script.sh b/tests/tcpdump/test_script.sh
index 334d32391..dfc1a02b0 100755
--- a/tests/tcpdump/test_script.sh
+++ b/tests/tcpdump/test_script.sh
@@ -13,6 +13,13 @@ DELETE_FILTER="stonesoup|gcc|lib|DUMMY|exec|python|tcpdump"
 
 run_basic_test 20 -h
 run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/bgp_vpn_attrset.pcap -t -v
+
+# sanity check tcpdump
+timeout 10 $BENCH -n -r $TEST_DIR/tcpd_tests/bgp_vpn_attrset.pcap -t -v | grep -i "message" >/dev/null 2>&1
+if [ ! $? -eq 0 ];then
+	report_failure
+fi
+
 run_basic_test 20 -$i -s0 -nr $TEST_DIR/tcpd_tests/print-flags.pcap
 run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/mpbgp-linklocal-nexthop.pcap -t -v
 run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/eapon1.pcap -t
diff --git a/tests/touch/test_script.sh b/tests/touch/test_script.sh
index a280f88e7..091698b6e 100755
--- a/tests/touch/test_script.sh
+++ b/tests/touch/test_script.sh
@@ -7,6 +7,12 @@ ORIG_NAME=touch
 #must import the library here, as it depends on some of the above variables
 . $TEST_LIB
 
+# sanity check
+timeout 10 $BENCH --help | grep FILE
+if [ ! $? -eq 0 ];then
+	report_failure
+fi
+
 run_basic_test 20 --help
 run_basic_test 20 --version
 rm -f tmp
@@ -15,4 +21,4 @@ rm -f tmp
 #no arg test
 run_basic_test 10
 
-report_success
\ No newline at end of file
+report_success
-- 
GitLab