All of lore.kernel.org
 help / color / mirror / Atom feed
* [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate.
@ 2019-11-18 10:49 Wang Mingyu
  2019-11-18 10:49 ` [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn Wang Mingyu
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Wang Mingyu @ 2019-11-18 10:49 UTC (permalink / raw)
  To: fuego

Logrotate is designed to ease administration of systems that generate
large numbers of log files.
This test set is used to check if rotate file can be created.

Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
---
 tests/Functional.logrotate/data/test.conf     |   8 ++++
 tests/Functional.logrotate/data/testlog.sh    |   8 ++++
 tests/Functional.logrotate/data/testlog100k   | Bin 0 -> 105984 bytes
 tests/Functional.logrotate/fuego_test.sh      |  23 ++++++++++
 tests/Functional.logrotate/logrotate_test.sh  |   4 ++
 tests/Functional.logrotate/spec.json          |   6 +++
 tests/Functional.logrotate/test.yaml          |  24 ++++++++++
 .../tests/logrotate_config.sh                 |  28 ++++++++++++
 .../tests/logrotate_help.sh                   |  13 ++++++
 .../tests/logrotate_rotation.sh               |  42 ++++++++++++++++++
 .../tests/logrotate_size.sh                   |  39 ++++++++++++++++
 .../tests/logrotate_status.sh                 |  26 +++++++++++
 12 files changed, 221 insertions(+)
 create mode 100644 tests/Functional.logrotate/data/test.conf
 create mode 100644 tests/Functional.logrotate/data/testlog.sh
 create mode 100644 tests/Functional.logrotate/data/testlog100k
 create mode 100644 tests/Functional.logrotate/fuego_test.sh
 create mode 100755 tests/Functional.logrotate/logrotate_test.sh
 create mode 100644 tests/Functional.logrotate/spec.json
 create mode 100644 tests/Functional.logrotate/test.yaml
 create mode 100644 tests/Functional.logrotate/tests/logrotate_config.sh
 create mode 100644 tests/Functional.logrotate/tests/logrotate_help.sh
 create mode 100644 tests/Functional.logrotate/tests/logrotate_rotation.sh
 create mode 100644 tests/Functional.logrotate/tests/logrotate_size.sh
 create mode 100644 tests/Functional.logrotate/tests/logrotate_status.sh

diff --git a/tests/Functional.logrotate/data/test.conf b/tests/Functional.logrotate/data/test.conf
new file mode 100644
index 0000000..a346adf
--- /dev/null
+++ b/tests/Functional.logrotate/data/test.conf
@@ -0,0 +1,8 @@
+/var/log/testlog {
+        create 600 root root
+        ifempty
+        daily
+        nocompress
+        missingok
+        rotate 1
+}
diff --git a/tests/Functional.logrotate/data/testlog.sh b/tests/Functional.logrotate/data/testlog.sh
new file mode 100644
index 0000000..663abe3
--- /dev/null
+++ b/tests/Functional.logrotate/data/testlog.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+today=$(date +%s)
+# there are 86000 seconds in a day
+yesterday=$(( $today - 86000 ))
+ddch=$(date --date "@$yesterday" "+%Y-%m-%d")
+echo "logrotate state -- version 2" >> /var/lib/logrotate.status
+echo "\"/var/log/testlog\" $ddch" >> /var/lib/logrotate.status
diff --git a/tests/Functional.logrotate/data/testlog100k b/tests/Functional.logrotate/data/testlog100k
new file mode 100644
index 0000000000000000000000000000000000000000..1dc679f54731568a9cbda775a663b7ea51595fe3
GIT binary patch
literal 105984
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

literal 0
HcmV?d00001

diff --git a/tests/Functional.logrotate/fuego_test.sh b/tests/Functional.logrotate/fuego_test.sh
new file mode 100644
index 0000000..c6e0579
--- /dev/null
+++ b/tests/Functional.logrotate/fuego_test.sh
@@ -0,0 +1,23 @@
+NEED_ROOT=1
+
+function test_pre_check {
+    assert_has_program logrotate
+    assert_has_program ntpdate
+    assert_has_program date
+}
+
+function test_deploy {
+    put $TEST_HOME/logrotate_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
+    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
+    put -r $TEST_HOME/data $BOARD_TESTDIR/fuego.$TESTDIR/
+}
+
+function test_run {
+    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+    export test_host=$SRV_IP;\
+    ./logrotate_test.sh"
+}
+
+function test_processing {
+    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
+}
diff --git a/tests/Functional.logrotate/logrotate_test.sh b/tests/Functional.logrotate/logrotate_test.sh
new file mode 100755
index 0000000..dd5ce37
--- /dev/null
+++ b/tests/Functional.logrotate/logrotate_test.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+for i in tests/*.sh; do
+    sh $i
+done
diff --git a/tests/Functional.logrotate/spec.json b/tests/Functional.logrotate/spec.json
new file mode 100644
index 0000000..cfd6646
--- /dev/null
+++ b/tests/Functional.logrotate/spec.json
@@ -0,0 +1,6 @@
+{
+    "testName": "Functional.logrotate",
+    "specs": {
+        "default": {}
+    }
+}
diff --git a/tests/Functional.logrotate/test.yaml b/tests/Functional.logrotate/test.yaml
new file mode 100644
index 0000000..d43799f
--- /dev/null
+++ b/tests/Functional.logrotate/test.yaml
@@ -0,0 +1,24 @@
+fuego_package_version: 1
+name: Functional.logrotate
+description: |
+      Logrotate is designed to ease administration of systems that generate
+      large numbers of log files.
+      It allows automatic rotation, compression, removal, and mailing of log files.
+      This is a simple test to check the common options and features of logrotate.
+license: BSD-3-Clause
+author: Wang Mingyu <wangmy@cn.fujitsu.com>
+maintainer: Wang Mingyu <wangmy@cn.fujitsu.com>
+version: 1.00
+fuego_release: 1
+type: Functional
+tags: ['logrotate']
+params:
+    SRV_IP:
+        description: the IP address of your host - Defined in board file
+data_files:
+ - logrotate_test.sh
+ - fuego_test.sh
+ - spec.json
+ - test.yaml
+ - data
+ - tests
diff --git a/tests/Functional.logrotate/tests/logrotate_config.sh b/tests/Functional.logrotate/tests/logrotate_config.sh
new file mode 100644
index 0000000..bc8d707
--- /dev/null
+++ b/tests/Functional.logrotate/tests/logrotate_config.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+#  Turns on verbose mode and confirm the result.
+#  option : -dv
+
+test="test config"
+
+if [ -f /var/lib/logrotate.status ]
+then
+    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
+fi
+
+cp data/test.conf /etc/logrotate.d/test.conf
+
+chown root /etc/logrotate.d/test.conf
+
+if logrotate -dv /etc/logrotate.d/test.conf
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+if [ -f /var/lib/logrotate.status_bak ]
+then
+    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
+fi
+rm -f /etc/logrotate.d/test.conf
diff --git a/tests/Functional.logrotate/tests/logrotate_help.sh b/tests/Functional.logrotate/tests/logrotate_help.sh
new file mode 100644
index 0000000..37390df
--- /dev/null
+++ b/tests/Functional.logrotate/tests/logrotate_help.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+#  In the target to execute command logrotate and confirm the result.
+#  option : --help
+
+test="help"
+
+if logrotate --help | grep "Usage"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
diff --git a/tests/Functional.logrotate/tests/logrotate_rotation.sh b/tests/Functional.logrotate/tests/logrotate_rotation.sh
new file mode 100644
index 0000000..f0d5e92
--- /dev/null
+++ b/tests/Functional.logrotate/tests/logrotate_rotation.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+#  Verify that the rotate file is created in the specified directory.
+#  option : -v
+
+test="log rotation"
+
+if [ -f /var/log/testlog* ]
+then
+    rm -f /var/log/testlog*
+fi
+
+if [ -f /var/lib/logrotate.status ]
+then
+    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
+fi
+
+ntpdate $test_host
+
+cp data/test.conf /etc/logrotate.d/test.conf
+
+touch /var/log/testlog
+
+cp data/testlog.sh data/testlog_test.sh
+chmod +x data/testlog_test.sh
+data/testlog_test.sh
+chown root /etc/logrotate.d/test.conf
+logrotate -v /etc/logrotate.d/test.conf
+if ls /var/log/testlog.1
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+rm -f /etc/logrotate.d/test.conf
+rm -f /var/log/testlog*
+rm -f data/testlog_test.sh
+if [ -f /var/lib/logrotate.status_bak ]
+then
+    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
+fi
diff --git a/tests/Functional.logrotate/tests/logrotate_size.sh b/tests/Functional.logrotate/tests/logrotate_size.sh
new file mode 100644
index 0000000..2e215cd
--- /dev/null
+++ b/tests/Functional.logrotate/tests/logrotate_size.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+#  Verify that the rotate file is created in the specified directory.
+#  option : -v
+
+test="log rotation size"
+
+if [ -f /var/log/testlog* ]
+then
+    rm -f /var/log/testlog*
+fi
+
+if [ -f /var/lib/logrotate.status ]
+then
+    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
+fi
+cp data/test.conf /etc/logrotate.d/test.conf
+
+cp data/testlog100k /var/log/testlog
+
+cp data/testlog.sh data/testlog_test.sh
+chmod +x data/testlog_test.sh
+data/testlog_test.sh
+chown root /etc/logrotate.d/test.conf
+logrotate -v /etc/logrotate.d/test.conf
+if ls /var/log/testlog.1
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+rm -f /etc/logrotate.d/test.conf
+rm -f /var/log/testlog*
+rm -f data/testlog_test.sh
+if [ -f /var/lib/logrotate.status_bak ]
+then
+    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
+fi
diff --git a/tests/Functional.logrotate/tests/logrotate_status.sh b/tests/Functional.logrotate/tests/logrotate_status.sh
new file mode 100644
index 0000000..36f61a3
--- /dev/null
+++ b/tests/Functional.logrotate/tests/logrotate_status.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+#  Turns on verbose mode.
+#  option : -v
+
+test="log status add"
+
+if [ -f /var/lib/logrotate.status ]
+then
+    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
+fi
+cp data/test.conf /etc/logrotate.d/test.conf
+
+logrotate -v /etc/logrotate.d/test.conf
+
+if tail /var/lib/logrotate.status | grep testlog
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+rm -f /etc/logrotate.d/test.conf
+if [ -f /var/lib/logrotate.status_bak ]
+then
+    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
+fi
-- 
2.17.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn.
  2019-11-18 10:49 [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Wang Mingyu
@ 2019-11-18 10:49 ` Wang Mingyu
  2019-11-19 17:00   ` Tim.Bird
  2019-11-18 10:49 ` [Fuego] [PATCH] Add function to get the status of module Wang Mingyu
  2019-11-18 18:16 ` [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Tim.Bird
  2 siblings, 1 reply; 6+ messages in thread
From: Wang Mingyu @ 2019-11-18 10:49 UTC (permalink / raw)
  To: fuego

This test set is used to check if the service openvpn can be started.
And check the process file, syslog file, tap0 can be created or not.

Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
---
 scripts/fuego_board_function_lib.sh           | 14 ++++
 tests/Functional.openvpn/data/host-target.key | 22 ++++++
 tests/Functional.openvpn/data/testcli.conf    |  7 ++
 tests/Functional.openvpn/data/testenv.sh      | 79 +++++++++++++++++++
 tests/Functional.openvpn/data/testsrv.conf    | 16 ++++
 tests/Functional.openvpn/fuego_test.sh        | 21 +++++
 tests/Functional.openvpn/openvpn_test.sh      | 14 ++++
 tests/Functional.openvpn/spec.json            |  6 ++
 .../tests/openvpn_genkey.sh                   | 26 ++++++
 .../Functional.openvpn/tests/openvpn_lport.sh | 34 ++++++++
 tests/Functional.openvpn/tests/openvpn_pid.sh | 31 ++++++++
 tests/Functional.openvpn/tests/openvpn_ps.sh  | 36 +++++++++
 .../tests/openvpn_syslog-ng.sh                | 42 ++++++++++
 tests/Functional.openvpn/tests/openvpn_tun.sh | 27 +++++++
 14 files changed, 375 insertions(+)
 create mode 100644 tests/Functional.openvpn/data/host-target.key
 create mode 100644 tests/Functional.openvpn/data/testcli.conf
 create mode 100644 tests/Functional.openvpn/data/testenv.sh
 create mode 100644 tests/Functional.openvpn/data/testsrv.conf
 create mode 100644 tests/Functional.openvpn/fuego_test.sh
 create mode 100755 tests/Functional.openvpn/openvpn_test.sh
 create mode 100644 tests/Functional.openvpn/spec.json
 create mode 100644 tests/Functional.openvpn/tests/openvpn_genkey.sh
 create mode 100644 tests/Functional.openvpn/tests/openvpn_lport.sh
 create mode 100644 tests/Functional.openvpn/tests/openvpn_pid.sh
 create mode 100644 tests/Functional.openvpn/tests/openvpn_ps.sh
 create mode 100644 tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
 create mode 100644 tests/Functional.openvpn/tests/openvpn_tun.sh

diff --git a/scripts/fuego_board_function_lib.sh b/scripts/fuego_board_function_lib.sh
index a6cd842..115c615 100644
--- a/scripts/fuego_board_function_lib.sh
+++ b/scripts/fuego_board_function_lib.sh
@@ -12,6 +12,7 @@
 init_manager="init_manager-not-set"
 logger_service="logger_service-not-set"
 service_status="unknown"
+module_status="unknown"
 
 # set_init_manager:
 #   detects and sets the init_manager variable, which indicates which
@@ -100,3 +101,16 @@ get_service_logfile() {
     fi
     echo $service_logfile
 }
+
+# get_module_status:
+# get status of module
+# returns: status of module
+get_module_status() {
+    if lsmod | grep $1
+    then
+        module_status="loaded"
+    else
+        module_status="unloaded"
+    fi
+    echo $module_status
+}
diff --git a/tests/Functional.openvpn/data/host-target.key b/tests/Functional.openvpn/data/host-target.key
new file mode 100644
index 0000000..99743bf
--- /dev/null
+++ b/tests/Functional.openvpn/data/host-target.key
@@ -0,0 +1,22 @@
+#
+# 2048 bit OpenVPN static key
+#
+-----BEGIN OpenVPN Static key V1-----
+debe9557c7eb224c5cf4f3369d5211ff
+fb9c375a4784759edf6b0f6eb8f5da31
+bb280394d40382cc8e02d6cbb3e47492
+3509eac6b48965078e3d317b0791dea2
+dbcf0eddcab0fb20780fcf0908ce94cd
+7cb65a913fea73ac6bfe0ab34f085aa3
+a6c8b89a97d189e5145c3199955c4b34
+6d51f864f2b49f3252d1548c3b3510ec
+0ecd4b9f17f2039439a79f41a46f6a54
+c0385b962b2b94fcbe73e0108b224a5b
+2efae27d872f0efef67b244c7eb6f525
+581e4c2b4e6aa193fb1d37798bdb46ff
+7c6727f08e9601c10ac7478d73d731e6
+f4b652252f3e5309cd1d6d30c7a433cc
+134bd6dd50fa6a6fc7a843fdc058d38d
+fb8679b48eb09745badf004fbf4a434c
+-----END OpenVPN Static key V1-----
+
diff --git a/tests/Functional.openvpn/data/testcli.conf b/tests/Functional.openvpn/data/testcli.conf
new file mode 100644
index 0000000..2c252bb
--- /dev/null
+++ b/tests/Functional.openvpn/data/testcli.conf
@@ -0,0 +1,7 @@
+remote  192.168.0.1
+port    5000
+dev     tap
+#dev    tun
+verb    3
+ping    60
+
diff --git a/tests/Functional.openvpn/data/testenv.sh b/tests/Functional.openvpn/data/testenv.sh
new file mode 100644
index 0000000..0d89191
--- /dev/null
+++ b/tests/Functional.openvpn/data/testenv.sh
@@ -0,0 +1,79 @@
+service_name="service_name-not-set"
+config_file="config_file-not-set"
+pid_file="pid_file-not-set"
+module_status="unknown"
+
+#set the variable of service openvpn
+set_service_file() {
+    if [ "$init_manager" == "systemd" ]
+    then
+        service_name="openvpn@loopback-server.service"
+        config_file="/etc/openvpn/loopback-server.conf"
+        pid_file="/var/run/openvpn/loopback-server.pid"
+    else
+        service_name="openvpn"
+        if [ "$test_type" == "client" ]
+        then
+                config_file="/etc/openvpn/testcli.conf"
+                pid_file="/var/run/openvpn.testcli.pid"
+        elif [ "$test_type" == "server" ]
+        then
+                config_file="/etc/openvpn/testsrv.conf"
+                pid_file="/var/run/openvpn.testsrv.pid"
+        fi
+    fi
+}
+
+setup_routine() {
+    set_service_file
+    service_status=$(get_service_status $service_name)
+    module_status=$(get_module_status tun)
+    exec_service_on_target $service_name stop
+
+    if [ -f $config_file ]
+    then
+        mv $config_file "${config_file}_bak"
+    fi
+
+    test_type=$1
+    if [ "$test_type" = "client" ]
+    then
+        cp data/testcli.conf $config_file
+    elif [ "$test_type" = "server" ] ; then
+        cp data/testsrv.conf $config_file
+    fi
+
+    if [ -f /etc/openvpn/host-target.key ]
+    then
+        mv /etc/openvpn/host-target.key /etc/openvpn/host-target.key_bak
+    fi
+    cp data/host-target.key /etc/openvpn/host-target.key
+
+    if [ -d /dev/net ]
+    then
+        mv /dev/net /dev/net_bak
+    fi
+    mkdir -m 755 /dev/net
+    mknod /dev/net/tun c 10 200
+}
+
+restore_routine() {
+    if [ -d /dev/net_bak ]
+    then
+        mv /dev/net_bak /dev/net
+    fi
+    rm $config_file
+    if [ -f "${config_file}_bak" ]
+    then
+        mv "${config_file}_bak" $config_file
+    fi
+    rm -r /etc/openvpn/host-target.key
+    if [ -f /etc/openvpn/host-target.key_bak ]
+    then
+        mv /etc/openvpn/host-target.key_bak /etc/openvpn/host-target.key
+    fi
+    if [ "$module_status" = "unloaded" ]
+    then
+        modprobe -r tun
+    fi
+}
diff --git a/tests/Functional.openvpn/data/testsrv.conf b/tests/Functional.openvpn/data/testsrv.conf
new file mode 100644
index 0000000..0c18a40
--- /dev/null
+++ b/tests/Functional.openvpn/data/testsrv.conf
@@ -0,0 +1,16 @@
+#
+proto           udp
+port            5000
+
+dev             tap
+
+secret          /etc/openvpn/host-target.key
+#link-mtu       1200
+
+ping            10
+ping-restart    60
+ping-timer-rem
+persist-key
+persist-tun
+verb            3
+
diff --git a/tests/Functional.openvpn/fuego_test.sh b/tests/Functional.openvpn/fuego_test.sh
new file mode 100644
index 0000000..a94740e
--- /dev/null
+++ b/tests/Functional.openvpn/fuego_test.sh
@@ -0,0 +1,21 @@
+function test_pre_check {
+    assert_has_program openvpn
+    assert_has_program netstat
+    assert_has_program ifconfig
+}
+
+function test_deploy {
+    put $TEST_HOME/openvpn_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
+    put $FUEGO_CORE/scripts/fuego_board_function_lib.sh $BOARD_TESTDIR/fuego.$TESTDIR
+    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
+    put -r $TEST_HOME/data $BOARD_TESTDIR/fuego.$TESTDIR/
+}
+
+function test_run {
+    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+    ./openvpn_test.sh"
+}
+
+function test_processing {
+    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
+}
diff --git a/tests/Functional.openvpn/openvpn_test.sh b/tests/Functional.openvpn/openvpn_test.sh
new file mode 100755
index 0000000..13bcf82
--- /dev/null
+++ b/tests/Functional.openvpn/openvpn_test.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+. ./fuego_board_function_lib.sh
+set_init_manager
+
+. data/testenv.sh
+
+for i in tests/*.sh; do
+    if [ "$i" = "tests/openvpn_genkey.sh" ]; then
+        source $i
+    else
+        source $i client
+        source $i server
+    fi
+done
diff --git a/tests/Functional.openvpn/spec.json b/tests/Functional.openvpn/spec.json
new file mode 100644
index 0000000..e9fdc5a
--- /dev/null
+++ b/tests/Functional.openvpn/spec.json
@@ -0,0 +1,6 @@
+{
+    "testName": "Functional.openvpn",
+    "specs": {
+        "default": {}
+    }
+}
diff --git a/tests/Functional.openvpn/tests/openvpn_genkey.sh b/tests/Functional.openvpn/tests/openvpn_genkey.sh
new file mode 100644
index 0000000..90d2474
--- /dev/null
+++ b/tests/Functional.openvpn/tests/openvpn_genkey.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+#  In target, run command openvpn.
+#  option: --genkey
+
+test="genkey"
+
+if [ -f /etc/openvpn/host-target.key ]
+then
+    mv /etc/openvpn/host-target.key /etc/openvpn/host-target.key_bak
+fi
+
+openvpn --genkey --secret /etc/openvpn/host-target.key
+if [ -f /etc/openvpn/host-target.key ]
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+rm -f /etc/openvpn/host-target.key
+
+if [ -f /etc/openvpn/host-target.key_bak ]
+then
+    mv /etc/openvpn/host-target.key_bak /etc/openvpn/host-target.key
+fi
+
diff --git a/tests/Functional.openvpn/tests/openvpn_lport.sh b/tests/Functional.openvpn/tests/openvpn_lport.sh
new file mode 100644
index 0000000..f19659a
--- /dev/null
+++ b/tests/Functional.openvpn/tests/openvpn_lport.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+#  In the target, run openvpn and check the Listening port.
+
+test="lport_$1"
+
+test_type=$1
+
+setup_routine $test_type
+
+if exec_service_on_target $service_name start
+then
+    echo " -> $test: service start succeeded."
+else
+    echo " -> $test: service start failed."
+    echo " -> $test: TEST-FAIL"
+    restore_routine
+    exit
+fi
+
+sleep 5
+
+if netstat -ln | grep ":5000"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+if [ "$service_status" = "inactive" ]
+then
+    exec_service_on_target $service_name stop
+fi
+restore_routine
diff --git a/tests/Functional.openvpn/tests/openvpn_pid.sh b/tests/Functional.openvpn/tests/openvpn_pid.sh
new file mode 100644
index 0000000..dbcb61a
--- /dev/null
+++ b/tests/Functional.openvpn/tests/openvpn_pid.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+#  In the target, run openvpn and check the pidfile.
+
+test="pid_$1"
+
+test_type=$1
+
+setup_routine $test_type
+
+if exec_service_on_target $service_name start
+then
+    echo " -> $test: service start succeeded."
+else
+    echo " -> $test: service start failed."
+    echo " -> $test: TEST-FAIL"
+    restore_routine
+    exit
+fi
+
+if [ -f $pid_file ]
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+if [ "$service_status" = "inactive" ]
+then
+    exec_service_on_target $service_name stop
+fi
+restore_routine
diff --git a/tests/Functional.openvpn/tests/openvpn_ps.sh b/tests/Functional.openvpn/tests/openvpn_ps.sh
new file mode 100644
index 0000000..d8b8c52
--- /dev/null
+++ b/tests/Functional.openvpn/tests/openvpn_ps.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+#  In the target, run openvpn and check the status of process.
+
+test="ps_$1"
+
+test_type=$1
+
+setup_routine $test_type
+
+exec_service_on_target $service_name start
+
+if ps aux | grep "[/]usr/sbin/openvpn"
+then
+    echo " -> $test: get the process of openvpn succeeded."
+else
+    echo " -> $test: get the process of openvpn failed."
+    echo " -> $test: TEST-FAIL"
+    exec_service_on_target $service_name stop
+    restore_routine
+    exit
+fi
+
+exec_service_on_target $service_name stop
+
+if ! ps aux | grep "[/]usr/sbin/openvpn"
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+restore_routine
+if [ "$service_status" = "active" -o "$service_status" = "unknown" ]
+then
+    exec_service_on_target $service_name start
+fi
diff --git a/tests/Functional.openvpn/tests/openvpn_syslog-ng.sh b/tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
new file mode 100644
index 0000000..8dd84ee
--- /dev/null
+++ b/tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+#  In the target, run openvpn and check the message of syslog-ng.
+
+test="syslog-ng_$1"
+
+test_type=$1
+
+setup_routine $test_type
+logger_service=$(detect_logger_service)
+openvpn_logfile=$(get_service_logfile)
+
+exec_service_on_target $logger_service stop
+
+if [ -f $openvpn_logfile ]
+then
+    mv $openvpn_logfile $openvpn_logfile"_bak"
+fi
+
+exec_service_on_target $logger_service restart
+
+sleep 2
+
+exec_service_on_target $service_name start
+
+sleep 5
+
+if cat $openvpn_logfile | grep OpenVPN
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+exec_service_on_target $service_name stop
+
+restore_routine
+
+if [ "$service_status" = "active" -o "$service_status" = "unknown" ]
+then
+    exec_service_on_target $service_name start
+fi
diff --git a/tests/Functional.openvpn/tests/openvpn_tun.sh b/tests/Functional.openvpn/tests/openvpn_tun.sh
new file mode 100644
index 0000000..8902df8
--- /dev/null
+++ b/tests/Functional.openvpn/tests/openvpn_tun.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Verify the creation of the tun device (tap0) interface by openvpn.
+
+test="tun_$1"
+
+test_type=$1
+
+setup_routine $test_type
+
+exec_service_on_target $service_name start
+
+if ifconfig tap0
+then
+    echo " -> $test: TEST-PASS"
+else
+    echo " -> $test: TEST-FAIL"
+fi
+
+exec_service_on_target $service_name stop
+
+restore_routine
+
+if [ "$service_status" = "active" -o "$service_status" = "unknown" ]
+then
+    exec_service_on_target $service_name start
+fi
-- 
2.17.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Fuego] [PATCH] Add function to get the status of module.
  2019-11-18 10:49 [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Wang Mingyu
  2019-11-18 10:49 ` [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn Wang Mingyu
@ 2019-11-18 10:49 ` Wang Mingyu
  2019-11-18 17:59   ` Tim.Bird
  2019-11-18 18:16 ` [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Tim.Bird
  2 siblings, 1 reply; 6+ messages in thread
From: Wang Mingyu @ 2019-11-18 10:49 UTC (permalink / raw)
  To: fuego

Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
---
 scripts/fuego_board_function_lib.sh | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/scripts/fuego_board_function_lib.sh b/scripts/fuego_board_function_lib.sh
index a6cd842..115c615 100644
--- a/scripts/fuego_board_function_lib.sh
+++ b/scripts/fuego_board_function_lib.sh
@@ -12,6 +12,7 @@
 init_manager="init_manager-not-set"
 logger_service="logger_service-not-set"
 service_status="unknown"
+module_status="unknown"
 
 # set_init_manager:
 #   detects and sets the init_manager variable, which indicates which
@@ -100,3 +101,16 @@ get_service_logfile() {
     fi
     echo $service_logfile
 }
+
+# get_module_status:
+# get status of module
+# returns: status of module
+get_module_status() {
+    if lsmod | grep $1
+    then
+        module_status="loaded"
+    else
+        module_status="unloaded"
+    fi
+    echo $module_status
+}
-- 
2.17.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Fuego] [PATCH] Add function to get the status of module.
  2019-11-18 10:49 ` [Fuego] [PATCH] Add function to get the status of module Wang Mingyu
@ 2019-11-18 17:59   ` Tim.Bird
  0 siblings, 0 replies; 6+ messages in thread
From: Tim.Bird @ 2019-11-18 17:59 UTC (permalink / raw)
  To: wangmy, fuego



> -----Original Message-----
> From: Wang Mingyu
> Sent: Monday, November 18, 2019 11:49 AM
> To: fuego@lists.linuxfoundation.org
> Subject: [Fuego] [PATCH] Add function to get the status of module
Would have been nice to have a bit of description in the body
of the commit message, but this is short enough that I just
applied as is.

> 
> Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
> ---
>  scripts/fuego_board_function_lib.sh | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/scripts/fuego_board_function_lib.sh
> b/scripts/fuego_board_function_lib.sh
> index a6cd842..115c615 100644
> --- a/scripts/fuego_board_function_lib.sh
> +++ b/scripts/fuego_board_function_lib.sh
> @@ -12,6 +12,7 @@
>  init_manager="init_manager-not-set"
>  logger_service="logger_service-not-set"
>  service_status="unknown"
> +module_status="unknown"
> 
>  # set_init_manager:
>  #   detects and sets the init_manager variable, which indicates which
> @@ -100,3 +101,16 @@ get_service_logfile() {
>      fi
>      echo $service_logfile
>  }
> +
> +# get_module_status:
> +# get status of module
> +# returns: status of module
> +get_module_status() {
> +    if lsmod | grep $1
> +    then
> +        module_status="loaded"
> +    else
> +        module_status="unloaded"
> +    fi
> +    echo $module_status
> +}
> --
> 2.17.1

Looks good.  Applied and pushed to master.

Thanks!
 -- Tim


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate.
  2019-11-18 10:49 [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Wang Mingyu
  2019-11-18 10:49 ` [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn Wang Mingyu
  2019-11-18 10:49 ` [Fuego] [PATCH] Add function to get the status of module Wang Mingyu
@ 2019-11-18 18:16 ` Tim.Bird
  2 siblings, 0 replies; 6+ messages in thread
From: Tim.Bird @ 2019-11-18 18:16 UTC (permalink / raw)
  To: wangmy, fuego

Thanks for addressing my comments.  It looks good.

I've applied it, but I'm still testing it locally.  Can you give it a test and 
let me know if you see any problems?

Thanks,
 -- Tim


> -----Original Message-----
> From: Fuego [mailto:fuego-bounces@lists.linuxfoundation.org] On Behalf Of
> Wang Mingyu
> Sent: Monday, November 18, 2019 11:49 AM
> To: fuego@lists.linuxfoundation.org
> Subject: [Fuego] [PATCH v2] logrotate: Add test cases for command
> logrotate.
> 
> Logrotate is designed to ease administration of systems that generate
> large numbers of log files.
> This test set is used to check if rotate file can be created.
> 
> Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
> ---
>  tests/Functional.logrotate/data/test.conf     |   8 ++++
>  tests/Functional.logrotate/data/testlog.sh    |   8 ++++
>  tests/Functional.logrotate/data/testlog100k   | Bin 0 -> 105984 bytes
>  tests/Functional.logrotate/fuego_test.sh      |  23 ++++++++++
>  tests/Functional.logrotate/logrotate_test.sh  |   4 ++
>  tests/Functional.logrotate/spec.json          |   6 +++
>  tests/Functional.logrotate/test.yaml          |  24 ++++++++++
>  .../tests/logrotate_config.sh                 |  28 ++++++++++++
>  .../tests/logrotate_help.sh                   |  13 ++++++
>  .../tests/logrotate_rotation.sh               |  42 ++++++++++++++++++
>  .../tests/logrotate_size.sh                   |  39 ++++++++++++++++
>  .../tests/logrotate_status.sh                 |  26 +++++++++++
>  12 files changed, 221 insertions(+)
>  create mode 100644 tests/Functional.logrotate/data/test.conf
>  create mode 100644 tests/Functional.logrotate/data/testlog.sh
>  create mode 100644 tests/Functional.logrotate/data/testlog100k
>  create mode 100644 tests/Functional.logrotate/fuego_test.sh
>  create mode 100755 tests/Functional.logrotate/logrotate_test.sh
>  create mode 100644 tests/Functional.logrotate/spec.json
>  create mode 100644 tests/Functional.logrotate/test.yaml
>  create mode 100644 tests/Functional.logrotate/tests/logrotate_config.sh
>  create mode 100644 tests/Functional.logrotate/tests/logrotate_help.sh
>  create mode 100644 tests/Functional.logrotate/tests/logrotate_rotation.sh
>  create mode 100644 tests/Functional.logrotate/tests/logrotate_size.sh
>  create mode 100644 tests/Functional.logrotate/tests/logrotate_status.sh
> 
> diff --git a/tests/Functional.logrotate/data/test.conf
> b/tests/Functional.logrotate/data/test.conf
> new file mode 100644
> index 0000000..a346adf
> --- /dev/null
> +++ b/tests/Functional.logrotate/data/test.conf
> @@ -0,0 +1,8 @@
> +/var/log/testlog {
> +        create 600 root root
> +        ifempty
> +        daily
> +        nocompress
> +        missingok
> +        rotate 1
> +}
> diff --git a/tests/Functional.logrotate/data/testlog.sh
> b/tests/Functional.logrotate/data/testlog.sh
> new file mode 100644
> index 0000000..663abe3
> --- /dev/null
> +++ b/tests/Functional.logrotate/data/testlog.sh
> @@ -0,0 +1,8 @@
> +#!/bin/sh
> +
> +today=$(date +%s)
> +# there are 86000 seconds in a day
> +yesterday=$(( $today - 86000 ))
> +ddch=$(date --date "@$yesterday" "+%Y-%m-%d")
> +echo "logrotate state -- version 2" >> /var/lib/logrotate.status
> +echo "\"/var/log/testlog\" $ddch" >> /var/lib/logrotate.status
> diff --git a/tests/Functional.logrotate/data/testlog100k
> b/tests/Functional.logrotate/data/testlog100k
> new file mode 100644
> index
> 0000000000000000000000000000000000000000..1dc679f54731568a9cbda775a6
> 63b7ea51595fe3
> GIT binary patch
> literal 105984
> zcmeI5d0-U9^2b*N!X;-EJdh;28zdV8yGaO9L{XdL$K@>wVs7M00!a`-
> {fUA^e4r2f
> z0X{&`=Zyl&Q#|l~hzE+OPr(y!P(TqC1(8=ZGs|u^JKbNze|~PwA7rMhr<;7HQr%
> Ns
> zU6bVTc!qWHcq*%_x`gQ5?O<8e*uv_n8n+rAPq1rNC?_k_H7l6i&ArxNU$S6W
> ifZ-y
> zk)EdQlWR@CZ4y=Z>I|EIwx%-6guez*l;{ECU-I)25dX$>-
> %vpRqnejf1A)hgf1_4M
> z7;4#K*8gz@nEk0KzI>#vQI=m>IJPjWrn;)EB&)b8tE^_!NHSSj#T8kjDs{L1rDXps
> zN>PjQT9E#?9bo#!nE#v+Hvb$=WtJ6=FRjv4@sw9omsS?%BszZ2C1ok<`|`us{*
> >!@
> zv5fgIclhUODzi-ZYXC)wiirR24b5QwUpV}AlNOc<|0u|s(+c80cS&=Yzvpt>{^V)e
> zWSQ{S0E!Y#CjNsqCc*q~A>+>T|L#$3#GbND#@|>f@vlD~nWEmjt}*e)#^2f&
> Hvjzi
> z%~_=^6aCi!iV{6PIz_Es*c8_P7f!bM2fIc!5_8HjdH;%m;&QoeBJqE{A@hgcf0KJ
> U
> z{DUqHQgM)EM*CAVG8F2b@Y7Gvsn4gVdGmPw+4c)}qPB$Jf7=55P3?$0Lg3y
> PQdF<e
> zO(O-
> GGv>dbiLL+Hx&c_zhKTACIBHFb+WLF5x`i%R%zrgt|6OjE;y47hZc0&oKR+^#
> zq<#_ee+BS=*1uCq+z2GUpQ3v1!u)T{e>UL%aqCOU>l0YFHAQ{9v3_~H66XIo;
> D3mB
> zuaw0n@DA}m^T?$5!kAL#KOK1gin&cLH3Z%z{vJQhf0?8II{&ApI}ybY*hu_;or&
> B3
> z{SJSf|1G8qxzrHYPW<N#Yow_W5wZQLEU@SQy7l+S9dc$O(Ei&Lwdq~_{p$w
> 6|7q$|
> z<PieQzgc7K{fkG5=St1`FYzZ4zNWL`52dQ7&d2?4-
> #Gjw{=`HUlaC_)O`qoVceDSK
> z?f<iY{$o8$EhaF5_}@CE0R)5XPX<LbAn|Xq{sJNO?0+~_ZCq@{UqSH?y&e7%e
> }eHf
> z)k=CKRe3@<|00LK?)^*RPfXM!@|MK^YTN!p`oFxBZGUv}C$v1@4YNO?gkJy
> ~{z9sn
> z^g$CIf5$|gO8he(e-
> Zxi@0QYd1e&c$RqMN8@4r0$zTe)g|NOUMT>q8$PwR0^_&8PN
> zbz=LE#h=_b-
> sZ3K|B(I3E37IkDvbBQowDk}uEB&iKE&dLZK>+ZbZh<neGM*4#P$c_
> zZ)!*65dvL^f2aG{vX~F9wNv!p4C)|iEch-}^>5#j?GL2?2>*lVKH;lAPW%Uci0l6m
> z$J+K^7k<Lwp<@3r)vDZ?s&>D}^G~z>^HVzeIGevI{!`{Z82=GJrK%0zG=S$n&p
> P~d
> z@t;*)f?ehP3*$fS=Tx=gHxKbQzkjj*mw0Xc4{8>`ScdVJ{YMY(PF1B(TK<2?|4<a
> >
> zZ-~DY{+Rx+B>v;S$M=7I9OkcCfC-
> XJ_+$K66aQn5!uKET4fEGHpo1h6{uuw4h<|ra
> zBewsL{Ym#Z_Fv<G4w6jvUts(v{gSF`npyi_YE5^r{{fl*o7xe1guvb2G__-Ai%5ay
> zjQJM=>o1xnL=;2dlk_yTZ(zfi()gFme-
> B{)<KHc%@d#`o{xetN@mIxR{+juJynduC
> zK7p;o|ApgQ#uvtvTJ|T*Uo-
> !YxlJxL1hx@>&tbUz`6$d^Gym6gC!!bvJBWY3Yhwys
> zE?NJTGyZC(|1Nh+aXbRwoS3HWdGUyNqIzY_zq7+%%zr&Rf2d$P@jp4UIdm`
> cNBo~q
> zV^YZ?u&8sIn%fYIe_;NrC{((-`bzESs}(xjLs{Lj@=pq8b?cT_H8ye5UDeaNCr(OJ
> zYbRjiFV`B`yIvFZ3WR?>B(4R_|EftCfBq|B{)qk$7~H4dAlF_+zyz2j^Z)otj6bix
> zp!~;IR8$LPJppF<Eb*WE3_kw)0sp7ISCK{&c#HTi%EbK-
> TT5;Kv%G#qQ~cxSmu97@
> zEB9jYCp`Zd48%YD@&8TY-TB!?X{t*)C6xgV=D!JuzXh6-Dh`2fh=0eg@$t8!z_vfS
> z_g{*?3e}Wq!*4w-m-t)S&-
> Fu^8uu#4KeSzMQcAW`^Bn#<`%nC{g};fWEiWeiEv8!W
> z&k+AYa=h{WJDvZHWwQQ@@lX0aP3>)i=buk<@-JzY-
> #si7{uuu@#DDZ%R{qsm(;Yni
> zzDkD2r2nRNL>?i~f%sSVja=)_*#6JxZ067Q2aEraEigYf@~Y;yTk(elI`%AM{@We
> ?
> zy8VxM{%zqOO!BHb=34Pr1<Y7?F#lZV`xm<XUr7G#$oF4#k-WP9&0j;-
> x3O3CTxsQh
> zFnZyc|7A4sNAhoD_DABM%bIxA8H4fo=UEPaUHm`Ggg^H8Iga=zZ|D6NSp4U
> M4u8}B
> z7vYcbpG5peY`5$W6o32rFx&ocj%~MtWy0T$PTlggt-R{^Q*r(G9PRMeIDnA-
> FEakx
> z&tX}zSIzvvihqX2-_IQX1MjhLJ6I<B@7(CrE&m|JtG-
> )<e}8HkB^BWL5AU&XJ6LM6
> zKcfq)E5!fl@ia{Hs+$J!{J-rvZal-~JpX)htixa903!am;{Oa&)Bo(zne6{vhr|Bo
> zY$yMGNW-
> 6HVt@49!_x9DUbQ(3%YVZDx1=;%|7nUZ$Dcsp?4Di~JPXgimr`Q$4{01g
> zEHl}klFN%LgSojU1%r86qYJN~bOobFb}!GWtcv~+B-
> y&Z`tkD_UUg$O%|BZ&s4@Mn
> zZ2$X)`D+|NA(9Dy6HQxw*_mE-
> JH<30{Mr8W0r+D*OD!g_ueVpdlZ)9O=HD^QUt@oS
> z>_HId<5kyn!1%NMsXog*{_@x?_6K_gNyNWN4()#j?SJt^8GkXdSgpBzy(;@F
> eEc1J
> zsm(uIGXZ6p>HXLK{<5rpbspnY=bdQf-zYFWF}6QfIrb-
> {aX_<7?2n12Ee}+B)#zTB
> z{o(O<5TO59&r*vCw7bfymQ`T!=dAyedpY)BGykXX!#vFXNdDm|*Lc;mh3x;q
> @?YH+
> z=C4V>7b2O-{!~>Ljj5<8Nq86NY~sJ-JC1*AYutp&`u~)}-
> !%T3{BKp&h1DY~$`hXd
> za^k-)o#Wry&S!h1JJ|j|3GmmoA+ovz-
> XQ*GKYw`LLYFJ%KOe9^F1Jf@90I;;z3R(t
> z*#0B7KV#`rsl5KhHs0-E88-gP{QrL9zxYfm|9^oS&u}^G|Cf&bYnETa)#WEZ;Lci#
> zKiP)wKbi@|Ujf}p6^FpI8D5pP2b=%1{;vb#e*`X0pqBXGRf^|-
> TMER#;k`@E8N~m*
> zFF3P+`C$DY?(o+PzvhOd#sLB|iT~@l`1~^mh(ABjxSSXX47$myhM$3tzdsyh&p
> #78
> zYTt+zu5dQ-&o06256}N^prj@||JThwS!VM8Nc@BSi1z-
> ?tA?IT{x@L#i|v01h`+L1
> zmVXff?O*k(xvyd0|7HH0f%sdbU#Vjg=s^4zj54}Dt;)<F$v+@$aRLk9@TzOG$*
> BVz
> z%zs{iZT~gl=RiwRB}`xm@t@ispZ_57&*8S^r<uT=#Q*qixcwgi#Q&Ikl^S6J`!;#i
> z$xE^MC)=N*iH`qS;@`pu59w#ePrNE`Al3x)pA5vGV690lCeUs(#XsNE0D{5%rvd
> L@
> zP-9ZbBJk1YUNvzSHvi%G-
> &y2%<M&@p_?w5truSc#C;Z|&@f_OEr`jy!@2_F`uikX{
> zYqp;<f5|@v{(YAb|Dqn&{yQlD)%h2i=l}d}Ao-WD2hj8!pZdF{|H-wcJJ|kAb@-
> e7
> zZ^GY1)0U?Z|Cg=(cV_-
> P{+<WuKi0F<Vgdo;KmR=@Yd%>2Kd8a%4;FtS`DgYI@u^eJ
> z!Sm0&M@wZq|IvisdRQj>&HBtWT3zf@S-0W&H-
> ?g{i23W*e_1B{G5#Hh|5uOl{%b7%
> zPpLEi)NH@-u*@|7m-R3E`K&AQsmor)_Mfu-Uq8~;e^dS|;g9M6v!y=uTx-
> &QVEvK#
> zFTKR!Z^*wS{4xH6M)}l)_vrl#<Ug&4!(a0Pz~7%0`;YMtj`gXV_u${Z&b!9puW>*i
> z`LFE#k23#!y27Wt-?IM)8-IsUs3OmQO!;R-
> |1tf4kNBV7$BI8MH{HSZf5u^s{%aP1
> zDgRQoiNEB(vT08r?^EYn-+#yQU$trJ=)Y$Di}TNz_{;uloBuU8`qb9dmi;NPOWglu
> z{cjxhKWkn9c>lGD|M-
> z(E5??VXD9j^z@%9|)qatce{Y#Pd0WC>q9lO7sU49=2;95C
> zr|#*7@Bey-
> oIBR|YtVo3KSvnr&ThHirxrBEzQ4fs=d=@S{>J^khVSo)|G|DLwU78z
> zqc57l?_blC9sZj4-
> )uPlu<U=FwA!a;x3lsO6zKj=SjP7MZNUDR+7Wq#z+?aMspiXR
> zQV$%=|9W8k5ok)PI0RmQ*Qc)k2_JudJ=L~98uyR&{Uh<eVJi0Kr#^LCN6Nne`
> rk5o
> zV)Gy2kMZyInNJ-
> *8{^ORXFag~i}ftEn85b!K9yO5#lJECOMvx9A&V3Ep7{T=0FVEi
> z3i$u=-lgVF;$MCWIn{uJ^?w5p{{S>4RU8685&y5B!EiADZov8r)|%8}0{e;o|E<RN
> z9}NZ8UxX}9;IJJ&)w?C0f1ook|HONjnltwK)Q-
> ;h{O186{z0hX1ZEQdr+>u0KhE~Q
> z=Lu&2C*Hf%yoLDZ&&TJVZvgRELKP=4oA@6!4d4Ix3*i63dzYGXi2oC_F#j9dpA
> sPc
> zQ>fwunl|*S$NMu`^TF$1&s8|~UsIjJgR)KjH<l;*+B+lkH}$LFht~SLasL-TC4|4`
> z(TFI9z~VH&s@#m}Ki5L`pT=|{ml^^~h=1+h*s_=p=8x<@HMb-
> +!UXOn{zH~v`p-}4
> zMaosc@h7tXI!y4;etH-CRo(#J|Ap<pet3|x{-x=b!*gZ))c}eTokIMt*ueY0F#b!=
> zmHAH;zC%7eW{F=tvx?$>K>mw{+WbxH?-
> KupJ({9B{c7q2YyWAj=?=F4s~!HP{inj;
> zMAMd!C;sQHwe~+6`SU2f5YT_DXQ{;mCK3O`AH(vWv;Oa)*g~HFnCy=!{#^DS
> +4^_x
> zgMQWUX3l?t?LR7@xM$|C34gZs{|bMbuj$`q#DD+$c>aN_{>SET+W#y3P2_F)
> <HSEN
> z4cq_4_8<BF8rHMaVgjum@~d4xWBzBh|LZ#0`cH0X*MrPccTE4~`*(96^{c*5S
> o%N4
> z6{sU%{&)0o?2jh?KPd74CX@%{m%Zp$a|^BgF9in*T~3()PyHPJhW*zv|962HQ
> (X3M
> zziKyzzdvZsf5rUY2#>#-
> 2`KIV%@zMo3}~0j%C&w~nvDB@visZmuiO95yW_?Fy8w?V
> z9{!47U4Ae7f3WYLe&_6e327V<EHm-1DH<6J<;x0Wlh^zzcMIp=Xgek5(bT)-
> `R6u(
> zf4v)}z?DD?;(tbeEdGS;f3E_^{)qm&GCdf<__zG(wm@T8|4#?_A58y=UUwexA
> Mp<U
> z{?)Av(|^<Vmsx&g;n;+aK{;%*U!{7Qv;Ge-
> =_1>ofzJLf&avTk(EKM~=AUkK>XuLc
> z%&$Iu+u{$!{~-
> M9_8?a}0!xU0v*q~syQ;Tie+>F>ntw|ECHtxD+TvFer}O%kIsX#R
> zKN0@A=Pk0j1b!s`1%t5tM{NK9b+uXlk^D=+u34d+tWejiU}Aqs^4wj1)&FeE|5
> I7_
> z$<)7M{{Aa${-*ph;(x2pFJ8&0-F|ibddvS%8&4ix#{Bovp9-%(W^4SPEHl}E(SMt4
> z)vtclak91k2<iWYG)uMkYw{mvlT7$WYp(nGir@Td=?hl=J&6CTVGe(d|2dmvg;j
> +`
> zh3?&Ysw-
> +nRMd1$_yw>HEz;GNQ?2;_EgD>wi03~u0sf|TL>?h9@u+mQVjBMaQy(z?
> zMp~CM6M_C6($y7jv1XeOuJt3Z{%CGVYJ>?Sbxc=tcH;Z5p911P!)?n?Gl8R-
> e>rY{
> zh6C|$=3b>nm_VzHbhWNHe5L=%_GfZ<{av>KM&FD`qX@Jn{=qjf|3CB31^oX
> }&C98Q
> zz+J>YtsKw)fb9P=bSdH}0&9u?-KS7eAK+m9NA@29O-U7pz$?VRHD-
> RS{I^K_mB7Ub
> zyh{APZ;sD@ko}K%?^5$E;(x(*Z2gPv&$G_{$54*2`!fg}6G&H0hv50g!u*5ujS)Ex
> zodEMM+sc}4KI-Vd#{X|_Nos@%983K7z1%E(sr^}pzr25GS)syI;(x<jZ2x04|DbLI
> z4BENW^Q5u;zxEH<AI<ugV8sdeh=1=4>;<5X{^MOpO$`C&zjy}z{(E5lqlv%LbSI)
> 1
> z0)FCu4SjzTIimGHq}hLmv?X<H0?hx1)p-8T1NyIt{};A60p`EP%aJ|igZ2L_Ape88
> zC8-f6P)Ypr-^KkuOZwRHC%ng3jzcF<nxC#VG{E9NS^uX2-
> (NfQ|5f6&FoO6`e}KuF
> z53Y4%XIuZp{buHc)c7ayzqk+X|J>&A7xx=N*Ieg5;=lJbJpN=Q5Pxp&RceF@d_
> esF
> z(H{3d@1dc>6#pD<TYj1ed_??<Uc$%U3xN1%bFWe(OyKC#(pA#l@Rj~2kH4+
> yQ&p`0
> z{Ec@x4xPX%;-7pz{{Bm;Qf&U>e?D~h)WQ?Q|HB)w_g}7cg7f_&-
> SP|ld32Tizu4nh
> zd+mv8U^hJf%qb3k-Rm#$4+?*b|C_{r!%ohBWzPT1_8-
> xItY@jk1Pa%ls0MVRK@~Wd
> zKcfFYQ&PntP(u8t{4W;&$@YK5D0}?X*?*Rq_TSn0Z-WV+fa&hd8LCYgo`3J-
> aW;Rk
> z|9{S(aQDwLly@SQe}naZufty#{==^aGX7%E=S<@Nzyy5$a}n(=wfqm7<~cM1
> vp+cr
> zZ-0`%%1|GT;QUwS{M$VKBKZ$Bk48i>1iZw5^-
> #?J$@b@ZNB?#Hf0jx9hZxW<m*0M!
> zp_*;PzkjjV;ZHwY50(jkS3GqDKNA1HS6cR`wvHgq1>2wN0R4}1s}#8qXt*UqojU
> |u
> z|6=>I_;h>x)!84K|K!O0#|3yyaoMg6HSl>W|CKTS8}rZYW%Jj$pIIjJpBT_CmskI
> m
> zp>n+~;rS2p{^in@6vrXZt3g05UyRuww*QFziPMb~xe#Ff8xMj%^8V}6l@!Mz!
> 2E|T
> zW6N$nxYn(dtAO8s#s6dGh1A$h{QHf=zd!h}!(aSA2wk8~!+<(w4L<+LFEP(Qd2
> VW&
> z|49Bl``OG+3aIusH|6<HrRiz0{khHIuM0nCnY{m+Xxj1>O#<q;et7=LR~-Jj?Jq1d
> zy?;gYzpL(1V!y=y<63K)2Got6tnY7*HvJkr|9lzXZ)!*65ds5R1=Q|MOxAp`{n_ut
> z9~$+a^84#rl>GlTogu9QYSky4e;CXEUpCm8e`+Q`oY7hAk52m{vh#fbb<-
> yP{!X&d
> z{;>W}C+Che|JOL6gCsM}e`NjLeg<h70adsNTYqOO^*dmHB2QP&OayKX29$c=
> RLhpL
> z{;zQSpC<c{>3_nfANH)w4ygN{wDf<B=_xS(EZQn>*&ofUk-
> QUm!rw&GmJiDhs1X&G
> z{fGE3cjlkE{2MHj?;m0O&pSDww(h~^KWzV(1NH~&S!ywXZ;1a#cd=zLAIu-
> IKjxOC
> zMwq}3;@|2RZ2uQOrB9Eu?Z0mPCHHi`*#9tL{m=G20;=so%l}}s|E&KAe|?W4j
> V3UJ
> z`1gCPL3EMpIqQF$<DL1B<`018KcfGx6zd8~iT~lJTHham^nV#J|Eb%9T<HkRIxV
> 2u
> zwZZalu>OyC_TL3H^M97f{8L9gBAa@8K>fRi_5Ilak<$2Q%>VNf9Q&i$|H$)y)A
> $?l
> z|0nkM*XHyJs7rcS@juY|mvZ*sg)|#rSSI=(Ux#B$pCkTL?zX;vWYmA2|9lAOe{3
> Ie
> z?M~o>3j%6KCoKM)`IiCvzubEhNi2b1hXhpl#n}9l`FD5bKf3ta*goXioxr%_fSNk9
> zxqF2u3G=@JSbvGSMNSO_<`Vx$ZZ=eM#LPbjh=0aflUht*en~)G_Zpsm=0a!x
> g`^+;
> zbM)sv;@@!!_Ws5CKi{$cn%A#C=RcMptrUz3sOfXDUzYjb?&!Z}`5kLaYFPw691
> ~Cv
> z`SASPX94eDf)*#RbZkJ~*%+VyoCElO@ZP27a^l}43D<ul{$Hr#1RlO4poXl(^Pl|I
> z!}h;v+&>;#|C0Py;3IgH_)oqQ+ke61FTx+}TB;F&;rCGd!(M#<9kTyLz~Tf-i2qHG
> z;p^}Jp{g8zCH4nrtgAUOH&b2o631Ve^S|-
> >%THndv!+qro@a`GW_iLVpCN|V5&!)s
> zHG=uCJl58KP58NoWwQTBqo7fuTk|v3yKgt)`19JR;<%@*|LYz8I{y#LgnwLw^$
> PDH
> z{`XT-
> ZG=D1e;xt!zg{O&;7Z^T;$Jfh^S`nF|8OE^e@yG|vj4(<B<=cUs&Nmp{ZB4%
> zeMpXg`ENbi=C51-
> LiYa(e;ewu!I|pPVw`_YJDb1G|H(3w{!9Fc&HwOoGS%BFt@!^+
> zyTtup*8c~F*!*c3()D1OjK8jU>Ieo8$yB>*t^M!N{HG|{=C50Sq4|HF%>V0PcD
> *>M
> rFjK9XhUMR8{oi(p%|EDl0jAe4@xQqeuPfMaO{VH_1<yat@4x>AP`)FD
> 
> literal 0
> HcmV?d00001
> 
> diff --git a/tests/Functional.logrotate/fuego_test.sh
> b/tests/Functional.logrotate/fuego_test.sh
> new file mode 100644
> index 0000000..c6e0579
> --- /dev/null
> +++ b/tests/Functional.logrotate/fuego_test.sh
> @@ -0,0 +1,23 @@
> +NEED_ROOT=1
> +
> +function test_pre_check {
> +    assert_has_program logrotate
> +    assert_has_program ntpdate
> +    assert_has_program date
> +}
> +
> +function test_deploy {
> +    put $TEST_HOME/logrotate_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
> +    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
> +    put -r $TEST_HOME/data $BOARD_TESTDIR/fuego.$TESTDIR/
> +}
> +
> +function test_run {
> +    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
> +    export test_host=$SRV_IP;\
> +    ./logrotate_test.sh"
> +}
> +
> +function test_processing {
> +    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
> +}
> diff --git a/tests/Functional.logrotate/logrotate_test.sh
> b/tests/Functional.logrotate/logrotate_test.sh
> new file mode 100755
> index 0000000..dd5ce37
> --- /dev/null
> +++ b/tests/Functional.logrotate/logrotate_test.sh
> @@ -0,0 +1,4 @@
> +#!/bin/sh
> +for i in tests/*.sh; do
> +    sh $i
> +done
> diff --git a/tests/Functional.logrotate/spec.json
> b/tests/Functional.logrotate/spec.json
> new file mode 100644
> index 0000000..cfd6646
> --- /dev/null
> +++ b/tests/Functional.logrotate/spec.json
> @@ -0,0 +1,6 @@
> +{
> +    "testName": "Functional.logrotate",
> +    "specs": {
> +        "default": {}
> +    }
> +}
> diff --git a/tests/Functional.logrotate/test.yaml
> b/tests/Functional.logrotate/test.yaml
> new file mode 100644
> index 0000000..d43799f
> --- /dev/null
> +++ b/tests/Functional.logrotate/test.yaml
> @@ -0,0 +1,24 @@
> +fuego_package_version: 1
> +name: Functional.logrotate
> +description: |
> +      Logrotate is designed to ease administration of systems that generate
> +      large numbers of log files.
> +      It allows automatic rotation, compression, removal, and mailing of log
> files.
> +      This is a simple test to check the common options and features of
> logrotate.
> +license: BSD-3-Clause
> +author: Wang Mingyu <wangmy@cn.fujitsu.com>
> +maintainer: Wang Mingyu <wangmy@cn.fujitsu.com>
> +version: 1.00
> +fuego_release: 1
> +type: Functional
> +tags: ['logrotate']
> +params:
> +    SRV_IP:
> +        description: the IP address of your host - Defined in board file
> +data_files:
> + - logrotate_test.sh
> + - fuego_test.sh
> + - spec.json
> + - test.yaml
> + - data
> + - tests
> diff --git a/tests/Functional.logrotate/tests/logrotate_config.sh
> b/tests/Functional.logrotate/tests/logrotate_config.sh
> new file mode 100644
> index 0000000..bc8d707
> --- /dev/null
> +++ b/tests/Functional.logrotate/tests/logrotate_config.sh
> @@ -0,0 +1,28 @@
> +#!/bin/sh
> +
> +#  Turns on verbose mode and confirm the result.
> +#  option : -dv
> +
> +test="test config"
> +
> +if [ -f /var/lib/logrotate.status ]
> +then
> +    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
> +fi
> +
> +cp data/test.conf /etc/logrotate.d/test.conf
> +
> +chown root /etc/logrotate.d/test.conf
> +
> +if logrotate -dv /etc/logrotate.d/test.conf
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +if [ -f /var/lib/logrotate.status_bak ]
> +then
> +    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
> +fi
> +rm -f /etc/logrotate.d/test.conf
> diff --git a/tests/Functional.logrotate/tests/logrotate_help.sh
> b/tests/Functional.logrotate/tests/logrotate_help.sh
> new file mode 100644
> index 0000000..37390df
> --- /dev/null
> +++ b/tests/Functional.logrotate/tests/logrotate_help.sh
> @@ -0,0 +1,13 @@
> +#!/bin/sh
> +
> +#  In the target to execute command logrotate and confirm the result.
> +#  option : --help
> +
> +test="help"
> +
> +if logrotate --help | grep "Usage"
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> diff --git a/tests/Functional.logrotate/tests/logrotate_rotation.sh
> b/tests/Functional.logrotate/tests/logrotate_rotation.sh
> new file mode 100644
> index 0000000..f0d5e92
> --- /dev/null
> +++ b/tests/Functional.logrotate/tests/logrotate_rotation.sh
> @@ -0,0 +1,42 @@
> +#!/bin/sh
> +
> +#  Verify that the rotate file is created in the specified directory.
> +#  option : -v
> +
> +test="log rotation"
> +
> +if [ -f /var/log/testlog* ]
> +then
> +    rm -f /var/log/testlog*
> +fi
> +
> +if [ -f /var/lib/logrotate.status ]
> +then
> +    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
> +fi
> +
> +ntpdate $test_host
> +
> +cp data/test.conf /etc/logrotate.d/test.conf
> +
> +touch /var/log/testlog
> +
> +cp data/testlog.sh data/testlog_test.sh
> +chmod +x data/testlog_test.sh
> +data/testlog_test.sh
> +chown root /etc/logrotate.d/test.conf
> +logrotate -v /etc/logrotate.d/test.conf
> +if ls /var/log/testlog.1
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +rm -f /etc/logrotate.d/test.conf
> +rm -f /var/log/testlog*
> +rm -f data/testlog_test.sh
> +if [ -f /var/lib/logrotate.status_bak ]
> +then
> +    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
> +fi
> diff --git a/tests/Functional.logrotate/tests/logrotate_size.sh
> b/tests/Functional.logrotate/tests/logrotate_size.sh
> new file mode 100644
> index 0000000..2e215cd
> --- /dev/null
> +++ b/tests/Functional.logrotate/tests/logrotate_size.sh
> @@ -0,0 +1,39 @@
> +#!/bin/sh
> +
> +#  Verify that the rotate file is created in the specified directory.
> +#  option : -v
> +
> +test="log rotation size"
> +
> +if [ -f /var/log/testlog* ]
> +then
> +    rm -f /var/log/testlog*
> +fi
> +
> +if [ -f /var/lib/logrotate.status ]
> +then
> +    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
> +fi
> +cp data/test.conf /etc/logrotate.d/test.conf
> +
> +cp data/testlog100k /var/log/testlog
> +
> +cp data/testlog.sh data/testlog_test.sh
> +chmod +x data/testlog_test.sh
> +data/testlog_test.sh
> +chown root /etc/logrotate.d/test.conf
> +logrotate -v /etc/logrotate.d/test.conf
> +if ls /var/log/testlog.1
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +rm -f /etc/logrotate.d/test.conf
> +rm -f /var/log/testlog*
> +rm -f data/testlog_test.sh
> +if [ -f /var/lib/logrotate.status_bak ]
> +then
> +    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
> +fi
> diff --git a/tests/Functional.logrotate/tests/logrotate_status.sh
> b/tests/Functional.logrotate/tests/logrotate_status.sh
> new file mode 100644
> index 0000000..36f61a3
> --- /dev/null
> +++ b/tests/Functional.logrotate/tests/logrotate_status.sh
> @@ -0,0 +1,26 @@
> +#!/bin/sh
> +
> +#  Turns on verbose mode.
> +#  option : -v
> +
> +test="log status add"
> +
> +if [ -f /var/lib/logrotate.status ]
> +then
> +    mv /var/lib/logrotate.status /var/lib/logrotate.status_bak
> +fi
> +cp data/test.conf /etc/logrotate.d/test.conf
> +
> +logrotate -v /etc/logrotate.d/test.conf
> +
> +if tail /var/lib/logrotate.status | grep testlog
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +rm -f /etc/logrotate.d/test.conf
> +if [ -f /var/lib/logrotate.status_bak ]
> +then
> +    mv /var/lib/logrotate.status_bak /var/lib/logrotate.status
> +fi
> --
> 2.17.1
> 
> 
> 
> _______________________________________________
> Fuego mailing list
> Fuego@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/fuego

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn.
  2019-11-18 10:49 ` [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn Wang Mingyu
@ 2019-11-19 17:00   ` Tim.Bird
  0 siblings, 0 replies; 6+ messages in thread
From: Tim.Bird @ 2019-11-19 17:00 UTC (permalink / raw)
  To: wangmy, fuego



> -----Original Message-----
> From: Wang Mingyu
> 
> This test set is used to check if the service openvpn can be started.
> And check the process file, syslog file, tap0 can be created or not.
> 
> Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
> ---
>  scripts/fuego_board_function_lib.sh           | 14 ++++
>  tests/Functional.openvpn/data/host-target.key | 22 ++++++
>  tests/Functional.openvpn/data/testcli.conf    |  7 ++
>  tests/Functional.openvpn/data/testenv.sh      | 79 +++++++++++++++++++
>  tests/Functional.openvpn/data/testsrv.conf    | 16 ++++
>  tests/Functional.openvpn/fuego_test.sh        | 21 +++++
>  tests/Functional.openvpn/openvpn_test.sh      | 14 ++++
>  tests/Functional.openvpn/spec.json            |  6 ++
>  .../tests/openvpn_genkey.sh                   | 26 ++++++
>  .../Functional.openvpn/tests/openvpn_lport.sh | 34 ++++++++
>  tests/Functional.openvpn/tests/openvpn_pid.sh | 31 ++++++++
>  tests/Functional.openvpn/tests/openvpn_ps.sh  | 36 +++++++++
>  .../tests/openvpn_syslog-ng.sh                | 42 ++++++++++
>  tests/Functional.openvpn/tests/openvpn_tun.sh | 27 +++++++
>  14 files changed, 375 insertions(+)
>  create mode 100644 tests/Functional.openvpn/data/host-target.key
>  create mode 100644 tests/Functional.openvpn/data/testcli.conf
>  create mode 100644 tests/Functional.openvpn/data/testenv.sh
>  create mode 100644 tests/Functional.openvpn/data/testsrv.conf
>  create mode 100644 tests/Functional.openvpn/fuego_test.sh
>  create mode 100755 tests/Functional.openvpn/openvpn_test.sh
>  create mode 100644 tests/Functional.openvpn/spec.json
>  create mode 100644 tests/Functional.openvpn/tests/openvpn_genkey.sh
>  create mode 100644 tests/Functional.openvpn/tests/openvpn_lport.sh
>  create mode 100644 tests/Functional.openvpn/tests/openvpn_pid.sh
>  create mode 100644 tests/Functional.openvpn/tests/openvpn_ps.sh
>  create mode 100644 tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
>  create mode 100644 tests/Functional.openvpn/tests/openvpn_tun.sh
> 
> diff --git a/scripts/fuego_board_function_lib.sh
> b/scripts/fuego_board_function_lib.sh
> index a6cd842..115c615 100644
> --- a/scripts/fuego_board_function_lib.sh
> +++ b/scripts/fuego_board_function_lib.sh
> @@ -12,6 +12,7 @@
>  init_manager="init_manager-not-set"
>  logger_service="logger_service-not-set"
>  service_status="unknown"
> +module_status="unknown"
> 
>  # set_init_manager:
>  #   detects and sets the init_manager variable, which indicates which
> @@ -100,3 +101,16 @@ get_service_logfile() {
>      fi
>      echo $service_logfile
>  }
> +
> +# get_module_status:
> +# get status of module
> +# returns: status of module
> +get_module_status() {
> +    if lsmod | grep $1
> +    then
> +        module_status="loaded"
> +    else
> +        module_status="unloaded"
> +    fi
> +    echo $module_status
> +}

This has already been applied as a separate patch.  I'll remove this
hunk.

> diff --git a/tests/Functional.openvpn/data/host-target.key
> b/tests/Functional.openvpn/data/host-target.key
> new file mode 100644
> index 0000000..99743bf
> --- /dev/null
> +++ b/tests/Functional.openvpn/data/host-target.key
> @@ -0,0 +1,22 @@
> +#
> +# 2048 bit OpenVPN static key
> +#
> +-----BEGIN OpenVPN Static key V1-----
> +debe9557c7eb224c5cf4f3369d5211ff
> +fb9c375a4784759edf6b0f6eb8f5da31
> +bb280394d40382cc8e02d6cbb3e47492
> +3509eac6b48965078e3d317b0791dea2
> +dbcf0eddcab0fb20780fcf0908ce94cd
> +7cb65a913fea73ac6bfe0ab34f085aa3
> +a6c8b89a97d189e5145c3199955c4b34
> +6d51f864f2b49f3252d1548c3b3510ec
> +0ecd4b9f17f2039439a79f41a46f6a54
> +c0385b962b2b94fcbe73e0108b224a5b
> +2efae27d872f0efef67b244c7eb6f525
> +581e4c2b4e6aa193fb1d37798bdb46ff
> +7c6727f08e9601c10ac7478d73d731e6
> +f4b652252f3e5309cd1d6d30c7a433cc
> +134bd6dd50fa6a6fc7a843fdc058d38d
> +fb8679b48eb09745badf004fbf4a434c
> +-----END OpenVPN Static key V1-----
> +
> diff --git a/tests/Functional.openvpn/data/testcli.conf
> b/tests/Functional.openvpn/data/testcli.conf
> new file mode 100644
> index 0000000..2c252bb
> --- /dev/null
> +++ b/tests/Functional.openvpn/data/testcli.conf
> @@ -0,0 +1,7 @@
> +remote  192.168.0.1
Will this work on any machine?  Does this need address to be
substituted with a valid address for the board under test?
Or does it need to avoid an address already in use by the 
board?

> +port    5000
> +dev     tap
> +#dev    tun
> +verb    3
> +ping    60
> +
> diff --git a/tests/Functional.openvpn/data/testenv.sh
> b/tests/Functional.openvpn/data/testenv.sh
> new file mode 100644
> index 0000000..0d89191
> --- /dev/null
> +++ b/tests/Functional.openvpn/data/testenv.sh
> @@ -0,0 +1,79 @@
> +service_name="service_name-not-set"
> +config_file="config_file-not-set"
> +pid_file="pid_file-not-set"
> +module_status="unknown"
> +
> +#set the variable of service openvpn
> +set_service_file() {
> +    if [ "$init_manager" == "systemd" ]
> +    then
> +        service_name="openvpn@loopback-server.service"
> +        config_file="/etc/openvpn/loopback-server.conf"
> +        pid_file="/var/run/openvpn/loopback-server.pid"
> +    else
> +        service_name="openvpn"
> +        if [ "$test_type" == "client" ]
> +        then
> +                config_file="/etc/openvpn/testcli.conf"
> +                pid_file="/var/run/openvpn.testcli.pid"
> +        elif [ "$test_type" == "server" ]
> +        then
> +                config_file="/etc/openvpn/testsrv.conf"
> +                pid_file="/var/run/openvpn.testsrv.pid"
> +        fi
> +    fi
> +}
> +
> +setup_routine() {
> +    set_service_file
> +    service_status=$(get_service_status $service_name)
> +    module_status=$(get_module_status tun)
> +    exec_service_on_target $service_name stop
> +
> +    if [ -f $config_file ]
> +    then
> +        mv $config_file "${config_file}_bak"
> +    fi
> +
> +    test_type=$1
> +    if [ "$test_type" = "client" ]
> +    then
> +        cp data/testcli.conf $config_file
> +    elif [ "$test_type" = "server" ] ; then
> +        cp data/testsrv.conf $config_file
> +    fi
> +
> +    if [ -f /etc/openvpn/host-target.key ]
> +    then
> +        mv /etc/openvpn/host-target.key /etc/openvpn/host-target.key_bak
> +    fi
> +    cp data/host-target.key /etc/openvpn/host-target.key
> +
> +    if [ -d /dev/net ]
> +    then
> +        mv /dev/net /dev/net_bak
> +    fi
> +    mkdir -m 755 /dev/net
> +    mknod /dev/net/tun c 10 200
> +}
> +
> +restore_routine() {
> +    if [ -d /dev/net_bak ]
> +    then
> +        mv /dev/net_bak /dev/net
> +    fi
> +    rm $config_file
> +    if [ -f "${config_file}_bak" ]
> +    then
> +        mv "${config_file}_bak" $config_file
> +    fi
> +    rm -r /etc/openvpn/host-target.key
> +    if [ -f /etc/openvpn/host-target.key_bak ]
> +    then
> +        mv /etc/openvpn/host-target.key_bak /etc/openvpn/host-target.key
> +    fi
> +    if [ "$module_status" = "unloaded" ]
> +    then
> +        modprobe -r tun
> +    fi
> +}

Nice.  Thanks.  If we use this pattern a lot, then we might want
to add some generic functions for backing up and restoring
files, starting and stopping services, and loading and unloading
modules - and add them to fuego_board_function_lib.sh

However, let's keep these local for now and see if we get more
examples of this in additional tests.

> diff --git a/tests/Functional.openvpn/data/testsrv.conf
> b/tests/Functional.openvpn/data/testsrv.conf
> new file mode 100644
> index 0000000..0c18a40
> --- /dev/null
> +++ b/tests/Functional.openvpn/data/testsrv.conf
> @@ -0,0 +1,16 @@
> +#
> +proto           udp
> +port            5000
> +
> +dev             tap
> +
> +secret          /etc/openvpn/host-target.key
> +#link-mtu       1200
> +
> +ping            10
> +ping-restart    60
> +ping-timer-rem
> +persist-key
> +persist-tun
> +verb            3
> +
> diff --git a/tests/Functional.openvpn/fuego_test.sh
> b/tests/Functional.openvpn/fuego_test.sh
> new file mode 100644
> index 0000000..a94740e
> --- /dev/null
> +++ b/tests/Functional.openvpn/fuego_test.sh
> @@ -0,0 +1,21 @@

Probably need a NEED_ROOT=1 here.
This test does a lot of manipulation of system-wide configuration
files, loading/unloading modules and starting/stopping services.

> +function test_pre_check {
> +    assert_has_program openvpn
> +    assert_has_program netstat
> +    assert_has_program ifconfig
> +}
> +
> +function test_deploy {
> +    put $TEST_HOME/openvpn_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
> +    put $FUEGO_CORE/scripts/fuego_board_function_lib.sh
> $BOARD_TESTDIR/fuego.$TESTDIR
> +    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
> +    put -r $TEST_HOME/data $BOARD_TESTDIR/fuego.$TESTDIR/
> +}
> +
> +function test_run {
> +    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
> +    ./openvpn_test.sh"
> +}
> +
> +function test_processing {
> +    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
> +}
> diff --git a/tests/Functional.openvpn/openvpn_test.sh
> b/tests/Functional.openvpn/openvpn_test.sh
> new file mode 100755
> index 0000000..13bcf82
> --- /dev/null
> +++ b/tests/Functional.openvpn/openvpn_test.sh
> @@ -0,0 +1,14 @@
> +#!/bin/sh
> +. ./fuego_board_function_lib.sh
> +set_init_manager
> +
> +. data/testenv.sh
> +
> +for i in tests/*.sh; do
> +    if [ "$i" = "tests/openvpn_genkey.sh" ]; then
> +        source $i
> +    else
> +        source $i client
> +        source $i server
> +    fi
> +done
> diff --git a/tests/Functional.openvpn/spec.json
> b/tests/Functional.openvpn/spec.json
> new file mode 100644
> index 0000000..e9fdc5a
> --- /dev/null
> +++ b/tests/Functional.openvpn/spec.json
> @@ -0,0 +1,6 @@
> +{
> +    "testName": "Functional.openvpn",
> +    "specs": {
> +        "default": {}
> +    }
> +}
> diff --git a/tests/Functional.openvpn/tests/openvpn_genkey.sh
> b/tests/Functional.openvpn/tests/openvpn_genkey.sh
> new file mode 100644
> index 0000000..90d2474
> --- /dev/null
> +++ b/tests/Functional.openvpn/tests/openvpn_genkey.sh
> @@ -0,0 +1,26 @@
> +#!/bin/sh
> +
> +#  In target, run command openvpn.
> +#  option: --genkey
> +
> +test="genkey"
> +
> +if [ -f /etc/openvpn/host-target.key ]
> +then
> +    mv /etc/openvpn/host-target.key /etc/openvpn/host-target.key_bak
> +fi
> +
> +openvpn --genkey --secret /etc/openvpn/host-target.key
> +if [ -f /etc/openvpn/host-target.key ]
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +rm -f /etc/openvpn/host-target.key
> +
> +if [ -f /etc/openvpn/host-target.key_bak ]
> +then
> +    mv /etc/openvpn/host-target.key_bak /etc/openvpn/host-target.key
> +fi
> +
> diff --git a/tests/Functional.openvpn/tests/openvpn_lport.sh
> b/tests/Functional.openvpn/tests/openvpn_lport.sh
> new file mode 100644
> index 0000000..f19659a
> --- /dev/null
> +++ b/tests/Functional.openvpn/tests/openvpn_lport.sh
> @@ -0,0 +1,34 @@
> +#!/bin/sh
> +
> +#  In the target, run openvpn and check the Listening port.
> +
> +test="lport_$1"
> +
> +test_type=$1
> +
> +setup_routine $test_type
> +
> +if exec_service_on_target $service_name start
> +then
> +    echo " -> $test: service start succeeded."
> +else
> +    echo " -> $test: service start failed."
> +    echo " -> $test: TEST-FAIL"
> +    restore_routine
> +    exit
> +fi
> +
> +sleep 5
> +
> +if netstat -ln | grep ":5000"
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +if [ "$service_status" = "inactive" ]
> +then
> +    exec_service_on_target $service_name stop
> +fi
> +restore_routine
> diff --git a/tests/Functional.openvpn/tests/openvpn_pid.sh
> b/tests/Functional.openvpn/tests/openvpn_pid.sh
> new file mode 100644
> index 0000000..dbcb61a
> --- /dev/null
> +++ b/tests/Functional.openvpn/tests/openvpn_pid.sh
> @@ -0,0 +1,31 @@
> +#!/bin/sh
> +
> +#  In the target, run openvpn and check the pidfile.
> +
> +test="pid_$1"
> +
> +test_type=$1
> +
> +setup_routine $test_type
> +
> +if exec_service_on_target $service_name start
> +then
> +    echo " -> $test: service start succeeded."
> +else
> +    echo " -> $test: service start failed."
> +    echo " -> $test: TEST-FAIL"
> +    restore_routine
> +    exit
> +fi
> +
> +if [ -f $pid_file ]
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +if [ "$service_status" = "inactive" ]
> +then
> +    exec_service_on_target $service_name stop
> +fi
> +restore_routine
> diff --git a/tests/Functional.openvpn/tests/openvpn_ps.sh
> b/tests/Functional.openvpn/tests/openvpn_ps.sh
> new file mode 100644
> index 0000000..d8b8c52
> --- /dev/null
> +++ b/tests/Functional.openvpn/tests/openvpn_ps.sh
> @@ -0,0 +1,36 @@
> +#!/bin/sh
> +
> +#  In the target, run openvpn and check the status of process.
> +
> +test="ps_$1"
> +
> +test_type=$1
> +
> +setup_routine $test_type
> +
> +exec_service_on_target $service_name start
> +
> +if ps aux | grep "[/]usr/sbin/openvpn"
> +then
> +    echo " -> $test: get the process of openvpn succeeded."
> +else
> +    echo " -> $test: get the process of openvpn failed."
> +    echo " -> $test: TEST-FAIL"
> +    exec_service_on_target $service_name stop
> +    restore_routine
> +    exit
> +fi
> +
> +exec_service_on_target $service_name stop
> +
> +if ! ps aux | grep "[/]usr/sbin/openvpn"
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +restore_routine
> +if [ "$service_status" = "active" -o "$service_status" = "unknown" ]
> +then
> +    exec_service_on_target $service_name start
> +fi
> diff --git a/tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
> b/tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
> new file mode 100644
> index 0000000..8dd84ee
> --- /dev/null
> +++ b/tests/Functional.openvpn/tests/openvpn_syslog-ng.sh
> @@ -0,0 +1,42 @@
> +#!/bin/sh
> +
> +#  In the target, run openvpn and check the message of syslog-ng.
> +
> +test="syslog-ng_$1"
> +
> +test_type=$1
> +
> +setup_routine $test_type
> +logger_service=$(detect_logger_service)
> +openvpn_logfile=$(get_service_logfile)
> +
> +exec_service_on_target $logger_service stop
> +
> +if [ -f $openvpn_logfile ]
> +then
> +    mv $openvpn_logfile $openvpn_logfile"_bak"
> +fi
> +
> +exec_service_on_target $logger_service restart
> +
> +sleep 2
> +
> +exec_service_on_target $service_name start
> +
> +sleep 5
> +
> +if cat $openvpn_logfile | grep OpenVPN
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +exec_service_on_target $service_name stop
> +
> +restore_routine
> +
> +if [ "$service_status" = "active" -o "$service_status" = "unknown" ]
> +then
> +    exec_service_on_target $service_name start
> +fi
> diff --git a/tests/Functional.openvpn/tests/openvpn_tun.sh
> b/tests/Functional.openvpn/tests/openvpn_tun.sh
> new file mode 100644
> index 0000000..8902df8
> --- /dev/null
> +++ b/tests/Functional.openvpn/tests/openvpn_tun.sh
> @@ -0,0 +1,27 @@
> +#!/bin/sh
> +
> +# Verify the creation of the tun device (tap0) interface by openvpn.
> +
> +test="tun_$1"
> +
> +test_type=$1
> +
> +setup_routine $test_type
> +
> +exec_service_on_target $service_name start
> +
> +if ifconfig tap0
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +exec_service_on_target $service_name stop
> +
> +restore_routine
> +
> +if [ "$service_status" = "active" -o "$service_status" = "unknown" ]
> +then
> +    exec_service_on_target $service_name start
> +fi
> --
> 2.17.1

OK - this looks good.

I'm going to apply it, but please respond to my comments above.
I'll go ahead and add the NEED_ROOT=1.

Let me know about the address in the configuration file (whether that
matters for this test).

Thanks,
 -- Tim


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-11-19 17:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-18 10:49 [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Wang Mingyu
2019-11-18 10:49 ` [Fuego] [PATCH v3] openvpn: Add test cases of service openvpn Wang Mingyu
2019-11-19 17:00   ` Tim.Bird
2019-11-18 10:49 ` [Fuego] [PATCH] Add function to get the status of module Wang Mingyu
2019-11-18 17:59   ` Tim.Bird
2019-11-18 18:16 ` [Fuego] [PATCH v2] logrotate: Add test cases for command logrotate Tim.Bird

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.