[Fuego] [PATCH v2] Add test cases of command samhain.

Wang Mingyu wangmy at cn.fujitsu.com
Tue Nov 6 13:56:02 UTC 2018


Command samhain is used to check file integrity.
This test set is to check the initialization of the database of file signatures.
And check the filesystem against the database of file signatures.

Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
---
 engine/tests/Functional.samhain/fuego_test.sh      | 17 ++++++++
 engine/tests/Functional.samhain/parser.py          | 22 ++++++++++
 engine/tests/Functional.samhain/samhain_test.sh    |  4 ++
 engine/tests/Functional.samhain/spec.json          |  7 ++++
 .../Functional.samhain/tests/samhain_check.sh      | 48 ++++++++++++++++++++++
 .../tests/Functional.samhain/tests/samhain_help.sh | 13 ++++++
 .../tests/Functional.samhain/tests/samhain_init.sh | 32 +++++++++++++++
 7 files changed, 143 insertions(+)
 create mode 100644 engine/tests/Functional.samhain/fuego_test.sh
 create mode 100644 engine/tests/Functional.samhain/parser.py
 create mode 100755 engine/tests/Functional.samhain/samhain_test.sh
 create mode 100644 engine/tests/Functional.samhain/spec.json
 create mode 100644 engine/tests/Functional.samhain/tests/samhain_check.sh
 create mode 100644 engine/tests/Functional.samhain/tests/samhain_help.sh
 create mode 100644 engine/tests/Functional.samhain/tests/samhain_init.sh

diff --git a/engine/tests/Functional.samhain/fuego_test.sh b/engine/tests/Functional.samhain/fuego_test.sh
new file mode 100644
index 0000000..cb35d2b
--- /dev/null
+++ b/engine/tests/Functional.samhain/fuego_test.sh
@@ -0,0 +1,17 @@
+function test_pre_check {
+    assert_has_program samhain
+}
+
+function test_deploy {
+    put $TEST_HOME/samhain_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
+    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
+}
+
+function test_run {
+    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+    ./samhain_test.sh"
+}
+
+function test_processing {
+    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
+}
diff --git a/engine/tests/Functional.samhain/parser.py b/engine/tests/Functional.samhain/parser.py
new file mode 100644
index 0000000..d85abd7
--- /dev/null
+++ b/engine/tests/Functional.samhain/parser.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+# See common.py for description of command-line arguments
+
+import os, sys, collections
+
+sys.path.insert(0, os.environ['FUEGO_CORE'] + '/engine/scripts/parser')
+import common as plib
+
+measurements = {}
+measurements = collections.OrderedDict()
+
+regex_string = '^ -> (.*): TEST-(.*)$'
+matches = plib.parse_log(regex_string)
+
+if matches:
+    for m in matches:
+        measurements['default.' + m[0]] = 'PASS' if m[1] == 'PASS' else 'FAIL'
+
+# split the output for each testcase
+plib.split_output_per_testcase(regex_string, measurements)
+
+sys.exit(plib.process(measurements))
diff --git a/engine/tests/Functional.samhain/samhain_test.sh b/engine/tests/Functional.samhain/samhain_test.sh
new file mode 100755
index 0000000..dd5ce37
--- /dev/null
+++ b/engine/tests/Functional.samhain/samhain_test.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+for i in tests/*.sh; do
+    sh $i
+done
diff --git a/engine/tests/Functional.samhain/spec.json b/engine/tests/Functional.samhain/spec.json
new file mode 100644
index 0000000..5e2f023
--- /dev/null
+++ b/engine/tests/Functional.samhain/spec.json
@@ -0,0 +1,7 @@
+{
+    "testName": "Functional.samhain",
+    "specs": {
+        "default": {}
+    }
+}
+
diff --git a/engine/tests/Functional.samhain/tests/samhain_check.sh b/engine/tests/Functional.samhain/tests/samhain_check.sh
new file mode 100644
index 0000000..4689135
--- /dev/null
+++ b/engine/tests/Functional.samhain/tests/samhain_check.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+#  In target, run command samhain.
+#  Check the filesystem against the database of file signatures.
+#  option: -t
+
+test="check"
+
+cp /etc/samhainrc /etc/samhainrc_bak
+sed -i 's/dir = 99\/usr/dir = 99$BOARD_TESTDIR\/fuego.$TESTDIR\/test_dir\/samhain_test/' /etc/samhainrc
+
+rm -fr /var/samhain/*
+rm -f /var/log/samhain_log
+
+sleep 1
+
+mkdir -p test_dir/samhain_test/
+touch test_dir/samhain_test/test.txt
+
+samhain -t init -p info > /dev/null 2&> 1
+
+sleep 1
+
+echo test > test_dir/samhain_test/test.txt
+
+sleep 1
+
+if samhain -t check
+then
+    echo " -> samhain -t check succeeded."
+else
+    echo " -> $test: TEST-FAIL"
+    rm -fr test_dir
+    mv /etc/samhainrc_bak /etc/samhainrc
+    exit
+fi
+
+sleep 2
+
+if cat /var/log/samhain_log | grep "path=</home/test/samhain_test/test.txt>, size_old=<0>, size_new=<5>"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+rm -fr test_dir
+mv /etc/samhainrc_bak /etc/samhainrc
diff --git a/engine/tests/Functional.samhain/tests/samhain_help.sh b/engine/tests/Functional.samhain/tests/samhain_help.sh
new file mode 100644
index 0000000..f16b680
--- /dev/null
+++ b/engine/tests/Functional.samhain/tests/samhain_help.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#  In target, run command samhain.
+#  option: --help
+
+test="help"
+
+if samhain --help | grep "Usage"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
diff --git a/engine/tests/Functional.samhain/tests/samhain_init.sh b/engine/tests/Functional.samhain/tests/samhain_init.sh
new file mode 100644
index 0000000..e46515b
--- /dev/null
+++ b/engine/tests/Functional.samhain/tests/samhain_init.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+#  In target, run command samhain.
+#  Initialize the database of file signatures.
+#  option: -t
+
+test="init"
+
+cp /etc/samhainrc /etc/samhainrc_bak
+sed -i 's/dir = 99\/usr/dir = 99$BOARD_TESTDIR\/fuego.$TESTDIR\/test_dir\/samhain_test/' /etc/samhainrc
+
+rm -fr /var/samhain/*
+rm -f /var/log/samhain_log
+
+sleep 1
+
+mkdir -p test_dir/samhain_test/
+touch test_dir/samhain_test/test.txt
+
+samhain -t init -p info > /dev/null 2&> 1
+
+sleep 1
+
+if cat /var/log/samhain_log | grep "ALRT.*-.*-.*T.*:.*:.*msg=\"EXIT\""
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+rm -fr test_dir/samhain_test
+mv /etc/samhainrc_bak /etc/samhainrc
-- 
1.8.3.1





More information about the Fuego mailing list