[Fuego] [PATCH] Add test cases for commands of sysvinit.

Wang Mingyu wangmy at cn.fujitsu.com
Wed Nov 14 09:30:17 UTC 2018


sysvinit is the default init program used by some system.
This test set is used to check the programs for controlling the startup, running, and shutdown of the system.

Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
---
 engine/tests/Functional.sysvinit/fuego_test.sh     | 24 ++++++++++++++++++++++
 engine/tests/Functional.sysvinit/parser.py         | 22 ++++++++++++++++++++
 engine/tests/Functional.sysvinit/spec.json         |  7 +++++++
 engine/tests/Functional.sysvinit/sysvinit_test.sh  |  4 ++++
 .../Functional.sysvinit/tests/sysvinit_halt.sh     | 12 +++++++++++
 .../Functional.sysvinit/tests/sysvinit_last.sh     | 12 +++++++++++
 .../Functional.sysvinit/tests/sysvinit_mesg.sh     | 13 ++++++++++++
 .../Functional.sysvinit/tests/sysvinit_runlevel.sh | 12 +++++++++++
 .../Functional.sysvinit/tests/sysvinit_shutdown.sh | 12 +++++++++++
 .../Functional.sysvinit/tests/sysvinit_sulogin.sh  | 18 ++++++++++++++++
 .../Functional.sysvinit/tests/sysvinit_utmpdump.sh | 12 +++++++++++
 .../Functional.sysvinit/tests/sysvinit_wall.sh     | 12 +++++++++++
 12 files changed, 160 insertions(+)
 create mode 100644 engine/tests/Functional.sysvinit/fuego_test.sh
 create mode 100644 engine/tests/Functional.sysvinit/parser.py
 create mode 100644 engine/tests/Functional.sysvinit/spec.json
 create mode 100755 engine/tests/Functional.sysvinit/sysvinit_test.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_halt.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_last.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_mesg.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_runlevel.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_shutdown.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_sulogin.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_utmpdump.sh
 create mode 100644 engine/tests/Functional.sysvinit/tests/sysvinit_wall.sh

diff --git a/engine/tests/Functional.sysvinit/fuego_test.sh b/engine/tests/Functional.sysvinit/fuego_test.sh
new file mode 100644
index 0000000..1ac7b1d
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/fuego_test.sh
@@ -0,0 +1,24 @@
+function test_pre_check {
+    assert_has_program halt
+    assert_has_program last
+    assert_has_program mesg
+    assert_has_program runlevel
+    assert_has_program shutdown
+    assert_has_program sulogin
+    assert_has_program utmpdump
+    assert_has_program wall
+}
+
+function test_deploy {
+    put $TEST_HOME/sysvinit_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
+    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
+}
+
+function test_run {
+    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+    ./sysvinit_test.sh"
+}
+
+function test_processing {
+    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
+}
diff --git a/engine/tests/Functional.sysvinit/parser.py b/engine/tests/Functional.sysvinit/parser.py
new file mode 100644
index 0000000..d85abd7
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/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.sysvinit/spec.json b/engine/tests/Functional.sysvinit/spec.json
new file mode 100644
index 0000000..49f2afb
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/spec.json
@@ -0,0 +1,7 @@
+{
+    "testName": "Functional.sysvinit",
+    "specs": {
+        "default": {}
+    }
+}
+
diff --git a/engine/tests/Functional.sysvinit/sysvinit_test.sh b/engine/tests/Functional.sysvinit/sysvinit_test.sh
new file mode 100755
index 0000000..dd5ce37
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/sysvinit_test.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+for i in tests/*.sh; do
+    sh $i
+done
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_halt.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_halt.sh
new file mode 100644
index 0000000..765a45e
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_halt.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#  In target, run command halt.
+
+test="halt"
+
+if halt -w
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi;
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_last.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_last.sh
new file mode 100644
index 0000000..dd37235
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_last.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#  In target, run command last.
+
+test="last"
+
+if last | grep "root.*still logged in"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi;
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_mesg.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_mesg.sh
new file mode 100644
index 0000000..a47c8ab
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_mesg.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#  In target, run command mesg.
+
+test="mesg"
+
+mesg n
+if echo $? = 1
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_runlevel.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_runlevel.sh
new file mode 100644
index 0000000..22e107e
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_runlevel.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#  In target, run command runlevel.
+
+test="runlevel"
+
+if runlevel | grep "N "
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi;
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_shutdown.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_shutdown.sh
new file mode 100644
index 0000000..4847db1
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_shutdown.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#  In target, run command shutdown.
+
+test="shutdown"
+
+if shutdown -k now
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi;
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_sulogin.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_sulogin.sh
new file mode 100644
index 0000000..8b56d17
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_sulogin.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+#  In target, run command sulogin.
+
+test="sulogin"
+
+expect <<-EOF
+spawn sulogin
+expect ":"
+send "$PASSWORD\r"
+expect {
+"#" {
+          send_user " -> $test: TEST-PASS\n"
+          }
+default { send_user " -> $test: TEST-FAIL\n" }  }
+send "exit\r"
+expect eof
+EOF
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_utmpdump.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_utmpdump.sh
new file mode 100644
index 0000000..a5b20f1
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_utmpdump.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#  In target, run command utmpdump.
+
+test="utmpdump"
+
+if utmpdump /var/log/wtmp
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi;
diff --git a/engine/tests/Functional.sysvinit/tests/sysvinit_wall.sh b/engine/tests/Functional.sysvinit/tests/sysvinit_wall.sh
new file mode 100644
index 0000000..ae22656
--- /dev/null
+++ b/engine/tests/Functional.sysvinit/tests/sysvinit_wall.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+#  In target, run command wall.
+
+test="wall"
+
+if wall "Testing wall command"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi;
-- 
1.8.3.1





More information about the Fuego mailing list