[Fuego] [PATCH] Add test cases of service dhcrelay.

Wang Mingyu wangmy at cn.fujitsu.com
Wed Dec 26 08:58:56 UTC 2018


dhcrelay provides a means for relaying DHCP and BOOTP requests from a subnet to which no DHCP server is directly connected to one or more DHCP servers on other subnets.
This test set is used to check if syslog and process of service dhcrelay can be generated.

Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
---
 engine/tests/Functional.dhcrelay/dhcrelay_test.sh  |  4 +
 engine/tests/Functional.dhcrelay/fuego_test.sh     | 19 +++++
 engine/tests/Functional.dhcrelay/parser.py         | 22 ++++++
 engine/tests/Functional.dhcrelay/spec.json         |  7 ++
 .../tests/Functional.dhcrelay/tests/dhcrelay_ps.sh | 87 ++++++++++++++++++++++
 .../Functional.dhcrelay/tests/dhcrelay_syslog.sh   | 80 ++++++++++++++++++++
 6 files changed, 219 insertions(+)
 create mode 100755 engine/tests/Functional.dhcrelay/dhcrelay_test.sh
 create mode 100644 engine/tests/Functional.dhcrelay/fuego_test.sh
 create mode 100644 engine/tests/Functional.dhcrelay/parser.py
 create mode 100644 engine/tests/Functional.dhcrelay/spec.json
 create mode 100644 engine/tests/Functional.dhcrelay/tests/dhcrelay_ps.sh
 create mode 100644 engine/tests/Functional.dhcrelay/tests/dhcrelay_syslog.sh

diff --git a/engine/tests/Functional.dhcrelay/dhcrelay_test.sh b/engine/tests/Functional.dhcrelay/dhcrelay_test.sh
new file mode 100755
index 0000000..dd5ce37
--- /dev/null
+++ b/engine/tests/Functional.dhcrelay/dhcrelay_test.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+for i in tests/*.sh; do
+    sh $i
+done
diff --git a/engine/tests/Functional.dhcrelay/fuego_test.sh b/engine/tests/Functional.dhcrelay/fuego_test.sh
new file mode 100644
index 0000000..e81d170
--- /dev/null
+++ b/engine/tests/Functional.dhcrelay/fuego_test.sh
@@ -0,0 +1,19 @@
+function test_pre_check {
+    assert_has_program dhcrelay
+    assert_has_program dnsmasq
+}
+
+function test_deploy {
+    put $TEST_HOME/dhcrelay_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
+    put $FUEGO_CORE/engine/scripts/fuego_board_function_lib.sh $BOARD_TESTDIR/fuego.$TESTDIR
+    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
+}
+
+function test_run {
+    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+    ./dhcrelay_test.sh"
+}
+
+function test_processing {
+    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
+}
diff --git a/engine/tests/Functional.dhcrelay/parser.py b/engine/tests/Functional.dhcrelay/parser.py
new file mode 100644
index 0000000..d85abd7
--- /dev/null
+++ b/engine/tests/Functional.dhcrelay/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.dhcrelay/spec.json b/engine/tests/Functional.dhcrelay/spec.json
new file mode 100644
index 0000000..4d36496
--- /dev/null
+++ b/engine/tests/Functional.dhcrelay/spec.json
@@ -0,0 +1,7 @@
+{
+    "testName": "Functional.dhcrelay",
+    "specs": {
+        "default": {}
+    }
+}
+
diff --git a/engine/tests/Functional.dhcrelay/tests/dhcrelay_ps.sh b/engine/tests/Functional.dhcrelay/tests/dhcrelay_ps.sh
new file mode 100644
index 0000000..461fbaf
--- /dev/null
+++ b/engine/tests/Functional.dhcrelay/tests/dhcrelay_ps.sh
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+#  In the target start dhcrelay, and confirm the process condition by command ps.
+
+test="ps"
+
+. ./fuego_board_function_lib.sh
+
+set_init_manager
+
+dhcrelay_status=$(exec_service_on_target dhcrelay is-active)
+dnsmasq_status=$(exec_service_on_target dnsmasq is-active)
+
+remote_ifeth=$(ifconfig | cut -d' ' -f1 | sed -n 1p)
+exec_service_on_target dhcrelay stop
+exec_service_on_target dnsmasq stop
+
+if [ -f /etc/default/dhcp-relay ]
+then
+    cp /etc/default/dhcp-relay /etc/default/dhcp-relay_bak
+fi
+
+restore_target() {
+    if [ -f /etc/default/dhcp-relay_bak ]
+    then
+        mv /etc/default/dhcp-relay_bak /etc/default/dhcp-relay
+    fi
+}
+
+echo "SERVERS=\"192.168.246.100\"" >  /etc/default/dhcp-relay
+echo "INTERFACES=\"$remote_ifeth\"" >> /etc/default/dhcp-relay
+echo "OPTIONS=\"\"" >> /etc/default/dhcp-relay
+
+if exec_service_on_target dhcrelay start
+then
+    echo " -> start of dhcrelay succeeded."
+else
+    echo " -> start of dhcrelay failed."
+    echo " -> $test: TEST-FAIL"
+    restore_target
+    if [ $dnsmasq_status="active" ]
+    then
+        exec_service_on_target dnsmasq start
+    fi
+    exit
+fi
+
+sleep 5
+
+if ps aux | grep "[/]usr/sbin/dhcrelay"
+then
+    echo " -> get the process of dhcrelay."
+else
+    echo " -> can't get the process of dhcrelay."
+    echo " -> $test: TEST-FAIL"
+    exec_service_on_target dhcrelay stop
+    restore_target
+    if [ $dnsmasq_status="active" ]
+    then
+        exec_service_on_target dnsmasq start
+    fi
+    if [ $dhcrelay_status="active" ]
+    then
+        exec_service_on_target dhcrelay start
+    fi
+    exit
+fi
+
+exec_service_on_target dhcrelay stop
+
+if ps aux | grep "[/]usr/sbin/dhcrelay"
+then
+    echo " -> $test: TEST-FAIL"
+else
+    echo " -> $test: TEST-PASS"
+fi
+restore_target
+
+if [ $dnsmasq_status="active" ]
+then
+    exec_service_on_target dnsmasq start
+fi
+
+if [ $dhcrelay_status="active" ]
+then
+    exec_service_on_target dhcrelay start
+fi
diff --git a/engine/tests/Functional.dhcrelay/tests/dhcrelay_syslog.sh b/engine/tests/Functional.dhcrelay/tests/dhcrelay_syslog.sh
new file mode 100644
index 0000000..2d68fc4
--- /dev/null
+++ b/engine/tests/Functional.dhcrelay/tests/dhcrelay_syslog.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+#  In the target start dhcpd6, and check the messages of /var/log/syslog.
+#  check the keyword "dhcpd".
+
+test="syslog"
+
+. ./fuego_board_function_lib.sh
+
+set_init_manager
+logger_service=$(detect_logger_service)
+dhcrelay_status=$(exec_service_on_target dhcrelay is-active)
+dnsmasq_status=$(exec_service_on_target dnsmasq is-active)
+
+remote_ifeth=$(ifconfig | cut -d' ' -f1 | sed -n 1p)
+exec_service_on_target dhcrelay stop
+exec_service_on_target dnsmasq stop
+exec_service_on_target $logger_service stop
+
+if [ -f /var/log/syslog ]
+then
+    mv /var/log/syslog /var/log/syslog_bak
+fi
+
+if [ -f /etc/default/dhcp-relay ]
+then
+    cp /etc/default/dhcp-relay /etc/default/dhcp-relay_bak
+fi
+
+restore_target() {
+    if [ -f /etc/default/dhcp-relay_bak ]
+    then
+        mv /etc/default/dhcp-relay_bak /etc/default/dhcp-relay
+    fi
+    if [ -f /var/log/syslog_bak ]
+    then
+        mv /var/log/syslog_bak /var/log/syslog
+    fi
+}
+
+echo "SERVERS=\"192.168.246.100\"" >  /etc/default/dhcp-relay
+echo "INTERFACES=\"$remote_ifeth\"" >> /etc/default/dhcp-relay
+echo "OPTIONS=\"\"" >> /etc/default/dhcp-relay
+
+exec_service_on_target $logger_service restart
+
+if exec_service_on_target dhcrelay start
+then
+    echo " -> start of dhcrelay succeeded."
+else
+    echo " -> start of dhcrelay failed."
+    echo " -> $test: TEST-FAIL"
+    restore_target
+    if [ $dnsmasq_status="active" ]
+    then
+        exec_service_on_target dnsmasq start
+    fi
+    exit
+fi
+
+sleep 10
+
+if cat /var/log/syslog | grep "dhcrelay"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+exec_service_on_target dhcrelay stop
+restore_target
+
+if [ $dhcrelay_status="active" ]
+then
+    exec_service_on_target dhcrelay start
+fi
+if [ $dnsmasq_status="active" ]
+then
+    exec_service_on_target dnsmasq start
+fi
-- 
1.8.3.1





More information about the Fuego mailing list