[Fuego] [PATCH] samba: Add test case to access the target from host using samba.
Wang Mingyu
wangmy at cn.fujitsu.com
Tue Nov 5 09:01:12 UTC 2019
Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
---
tests/Functional.samba/data/smb04.conf | 4 +-
tests/Functional.samba/data/smb05.conf | 19 ++++
tests/Functional.samba/data/smb06.conf | 18 +++
tests/Functional.samba/fuego_test.sh | 20 +++-
tests/Functional.samba/samba_test.sh | 8 +-
tests/Functional.samba/test.yaml | 10 +-
.../Functional.samba/tests/restore_target.sh | 24 ++++
tests/Functional.samba/tests/test_samba04.sh | 16 +--
tests/Functional.samba/tests/test_samba05.sh | 103 ++++++++++++++++++
tests/Functional.samba/tests/test_samba06.sh | 58 ++++++++++
.../tests/test_samba06_host.sh | 23 ++++
11 files changed, 278 insertions(+), 25 deletions(-)
create mode 100644 tests/Functional.samba/data/smb05.conf
create mode 100644 tests/Functional.samba/data/smb06.conf
mode change 100644 => 100755 tests/Functional.samba/samba_test.sh
create mode 100644 tests/Functional.samba/tests/restore_target.sh
create mode 100644 tests/Functional.samba/tests/test_samba05.sh
create mode 100644 tests/Functional.samba/tests/test_samba06.sh
create mode 100644 tests/Functional.samba/tests/test_samba06_host.sh
diff --git a/tests/Functional.samba/data/smb04.conf b/tests/Functional.samba/data/smb04.conf
index 94acbbc..c836021 100644
--- a/tests/Functional.samba/data/smb04.conf
+++ b/tests/Functional.samba/data/smb04.conf
@@ -6,14 +6,12 @@
load printers = yes
log file = /var/log/samba/log.%m
max log size = 50
- max protocol = SMB3_10
- min protocol = SMB2
interfaces = 127.0.0.1 test_target
dns proxy = no
[test]
comment = samba server
- path = /home/test_for_fuego/samba
+ path = /home/test/samba
writable = yes
browseable = yes
guest ok = yes
diff --git a/tests/Functional.samba/data/smb05.conf b/tests/Functional.samba/data/smb05.conf
new file mode 100644
index 0000000..63d3d02
--- /dev/null
+++ b/tests/Functional.samba/data/smb05.conf
@@ -0,0 +1,19 @@
+[global]
+ workgroup = MYGROUP
+ server string = Samba Server
+ security = user
+ passdb backend = tdbsam
+ hosts allow = 127.0.0.1 test_target
+ load printers = no
+ log file = /var/log/samba/log.%m
+ max log size = 50
+ max protocol = SMB3_10
+ min protocol = SMB2
+ interfaces = 127.0.0.1 test_target
+ dns proxy = no
+
+[test]
+ comment = samba server
+ path = /home/test/samba
+ writable = yes
+ browseable = yes
diff --git a/tests/Functional.samba/data/smb06.conf b/tests/Functional.samba/data/smb06.conf
new file mode 100644
index 0000000..1bbacd4
--- /dev/null
+++ b/tests/Functional.samba/data/smb06.conf
@@ -0,0 +1,18 @@
+[global]
+ workgroup = MYGROUP
+ server string = Samba Server
+ security = user
+ hosts allow = 127.0.0.1 test_host
+ load printers = yes
+ log file = /var/log/samba/log.%m
+ max log size = 50
+ interfaces = 127.0.0.1 test_target
+ dns proxy = no
+
+[test]
+ comment = samba server
+ path = /home/test/samba
+ writable = yes
+ browseable = yes
+ guest ok = yes
+ public = yes
diff --git a/tests/Functional.samba/fuego_test.sh b/tests/Functional.samba/fuego_test.sh
index 1f694ef..63e0cef 100644
--- a/tests/Functional.samba/fuego_test.sh
+++ b/tests/Functional.samba/fuego_test.sh
@@ -1,7 +1,9 @@
+NEED_ROOT=1
+
function test_pre_check {
+ assert_has_program samba
assert_has_program expect
assert_has_program smbclient
- assert_has_program sed
}
function test_deploy {
@@ -12,9 +14,19 @@ function test_deploy {
}
function test_run {
- report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \
- export test_target=$IPADDR; \
- ./samba_test.sh"
+ report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+ export test_target=$IPADDR;\
+ export test_host=$SRV_IP;\
+ ./samba_test.sh"
+
+ service_file=/tmp/test_for_fuego
+ report_append "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+ sh tests/test_samba06.sh $SRV_IP $IPADDR $service_file"
+
+ log_this "cd $TEST_HOME; sh tests/test_samba06_host.sh $IPADDR"
+
+ report_append "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
+ sh tests/restore_target.sh $service_file"
}
function test_processing {
diff --git a/tests/Functional.samba/samba_test.sh b/tests/Functional.samba/samba_test.sh
old mode 100644
new mode 100755
index 95c34db..93b0740
--- a/tests/Functional.samba/samba_test.sh
+++ b/tests/Functional.samba/samba_test.sh
@@ -2,6 +2,8 @@
. ./fuego_board_function_lib.sh
set_init_manager
-for i in tests/*.sh; do
- source $i
-done
+source tests/test_samba01.sh
+source tests/test_samba02.sh
+source tests/test_samba03.sh
+source tests/test_samba04.sh
+source tests/test_samba05.sh
diff --git a/tests/Functional.samba/test.yaml b/tests/Functional.samba/test.yaml
index bd61de6..f38dcf9 100644
--- a/tests/Functional.samba/test.yaml
+++ b/tests/Functional.samba/test.yaml
@@ -1,11 +1,9 @@
fuego_package_version: 1
name: Functional.samba
description: |
- The Samba software suite is a collection of programs that implements
- the Server Message Block protocol for UNIX systems.
- This is a simple test to check the ps/pid/syslog of samba and use
- smbclient to implement a simple ftp-like client.
-license: BSD-3-Clause
+ The Samba software suite is a collection of programs that implements the Server Message Block protocol for UNIX systems.
+ This is a simple test to check the ps/pid/syslog of samba and use smbclient to implement a simple ftp-like client.
+license: BSD-3-Clause
author: Wang Mingyu <wangmy at cn.fujitsu.com>
maintainer: Wang Mingyu <wangmy at cn.fujitsu.com>
version: 1.00
@@ -15,6 +13,8 @@ tags: ['samba']
params:
IPADDR:
description: the IP address of your target board - Defined in board file
+ SRV_IP:
+ description: the IP address of your host - Defined in board file
data_files:
- samba_test.sh
- fuego_test.sh
diff --git a/tests/Functional.samba/tests/restore_target.sh b/tests/Functional.samba/tests/restore_target.sh
new file mode 100644
index 0000000..6610923
--- /dev/null
+++ b/tests/Functional.samba/tests/restore_target.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# In the target start samba, and confirm the process condition by command ps.
+# check the keyword "smbd".
+
+. ./fuego_board_function_lib.sh
+set_init_manager
+
+if [ -f /etc/samba/smb.conf_bak ]
+then
+ mv /etc/samba/smb.conf_bak /etc/samba/smb.conf
+fi
+mv data/smb06.conf_bak data/smb06.conf
+
+if [ "$(tail -n 1 $1)" = "active" -o "$(tail -n 1 $1)" = "unknown" ]
+then
+ exec_service_on_target iptables start
+fi
+if [ "$(head -n 1 $1)" = "inactive" ]
+then
+ exec_service_on_target smb stop
+fi
+
+rm -fr $1
diff --git a/tests/Functional.samba/tests/test_samba04.sh b/tests/Functional.samba/tests/test_samba04.sh
index 2ad6e59..c1dac10 100644
--- a/tests/Functional.samba/tests/test_samba04.sh
+++ b/tests/Functional.samba/tests/test_samba04.sh
@@ -10,14 +10,12 @@ iptables_status=$(get_service_status iptables)
exec_service_on_target smb stop
exec_service_on_target iptables stop
-useradd test_for_fuego
+mkdir -p /home/test/samba
+mkdir -p /home/test/samba_test
-mkdir -p /home/test_for_fuego/samba
-mkdir -p /home/test_for_fuego/samba_test
+cp data/test1 /home/test/samba/
-cp data/test1 /home/test_for_fuego/samba/
-
-chown nobody:nobody -R /home/test_for_fuego/samba
+chown nobody:nobody -R /home/test/samba
if [ -f /etc/samba/smb.conf ]
then
@@ -30,8 +28,6 @@ restore_target(){
mv /etc/samba/smb.conf_bak /etc/samba/smb.conf
fi
mv data/smb04.conf_bak data/smb04.conf
- rm -fr /home/test_for_fuego
- userdel test_for_fuego
if [ "$iptables_status" = "active" -o "$iptables_status" = "unknown" ]
then
exec_service_on_target iptables start
@@ -62,7 +58,7 @@ expect <<-EOF
spawn smbclient //$test_target/test -N
expect {
-re ".*smb: .*" {
- send "get test1 /home/test_for_fuego/samba_test/test1\n"
+ send "get test1 /home/test/samba_test/test1\n"
}
default { send_user "Can not log into the board.\n"} }
expect {
@@ -74,7 +70,7 @@ send "exit\n"
expect eof
EOF
-if ls /home/test_for_fuego/samba_test/test1
+if ls /home/test/samba_test/test1
then
echo " -> $test: TEST-PASS"
else
diff --git a/tests/Functional.samba/tests/test_samba05.sh b/tests/Functional.samba/tests/test_samba05.sh
new file mode 100644
index 0000000..f66a92f
--- /dev/null
+++ b/tests/Functional.samba/tests/test_samba05.sh
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# In the target start samba,
+# Set the server to access the target having password from the server, and make sure the server can access the target.
+
+test="samba05"
+
+. ./fuego_board_function_lib.sh
+
+set_init_manager
+
+useradd test_for_fuego
+
+expect <<-EOF
+spawn smbpasswd -a test_for_fuego
+expect "SMB password:"
+send "goodluck\r"
+expect "Retype new SMB password:"
+send "goodluck\r"
+expect "Added user root."
+EOF
+
+smb_status=$(get_service_status smb)
+iptables_status=$(get_service_status iptables)
+
+exec_service_on_target smb stop
+exec_service_on_target iptables stop
+
+mkdir -p /home/test/samba
+
+cp data/test1 /home/test/samba/
+
+chown nobody:nobody -R /home/test/samba
+
+if [ -f /etc/samba/smb.conf ]
+then
+ mv /etc/samba/smb.conf /etc/samba/smb.conf_bak
+fi
+
+restore_target(){
+ if [ -f /etc/samba/smb.conf_bak ]
+ then
+ mv /etc/samba/smb.conf_bak /etc/samba/smb.conf
+ fi
+ smbpasswd -x test_for_fuego
+ rm -fr /home/test_for_fuego
+ mv data/smb05.conf_bak data/smb05.conf
+ userdel test_for_fuego
+ if [ "$iptables_status" = "active" -o "$iptables_status" = "unknown" ]
+ then
+ exec_service_on_target iptables start
+ fi
+ if [ "$smb_status" = "inactive" ]
+ then
+ exec_service_on_target smb stop
+ fi
+}
+
+cp data/smb05.conf data/smb05.conf_bak
+sed -i 's/test_target/'"$test_target"'/g' data/smb05.conf
+cp data/smb05.conf /etc/samba/smb.conf
+
+if exec_service_on_target smb start
+then
+ echo " -> start of smb succeeded."
+else
+ echo " -> start of smb failed."
+ echo " -> $test: TEST-FAIL"
+ restore_target
+ exit
+fi
+
+sleep 5
+
+expect <<-EOF
+spawn sh
+expect ".*"
+send "smbclient //$test_target/test --user=test_for_fuego\r"
+expect {
+ -re ".*Enter.*password:.*" {
+ send "goodluck\r"
+ }
+ default { send_user "Can not access the board.\n"} }
+expect {
+ -re ".*Password:.*" {
+ send "goodluck\r"
+ }
+ default { send_user "Password is wrong.\n"} }
+expect {
+ -re ".*smb:.*" {
+ send "ls\r"
+ }
+ default { send_user "Can not log into the board.\n"} }
+expect {
+ -re ".*test1.*" {
+ send_user " -> $test: TEST-PASS\n"
+ }
+ default { send_user " -> $test: TEST-FAIL\n"} }
+send "exit\n"
+expect eof
+EOF
+
+restore_target
diff --git a/tests/Functional.samba/tests/test_samba06.sh b/tests/Functional.samba/tests/test_samba06.sh
new file mode 100644
index 0000000..29c1dd1
--- /dev/null
+++ b/tests/Functional.samba/tests/test_samba06.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# In the target start samba, and confirm the process condition by command ps.
+# check the keyword "smbd".
+
+
+. ./fuego_board_function_lib.sh
+set_init_manager
+
+echo $(get_service_status smb) > $3
+echo $(get_service_status iptables) >> $3
+
+exec_service_on_target smb stop
+exec_service_on_target iptables stop
+
+mkdir -p /home/test/samba
+
+cp data/test1 /home/test/samba/
+
+chown nobody:nobody -R /home/test/samba
+
+if [ -f /etc/samba/smb.conf ]
+then
+ mv /etc/samba/smb.conf /etc/samba/smb.conf_bak
+fi
+
+restore_target(){
+ if [ -f /etc/samba/smb.conf_bak ]
+ then
+ mv /etc/samba/smb.conf_bak /etc/samba/smb.conf
+ fi
+ mv data/smb06.conf_bak data/smb06.conf
+ if [ "$iptables_status" = "active" -o "$iptables_status" = "unknown" ]
+ then
+ exec_service_on_target iptables start
+ fi
+ if [ "$smb_status" = "inactive" ]
+ then
+ exec_service_on_target smb stop
+ fi
+}
+
+
+cp data/smb06.conf data/smb06.conf_bak
+sed -i 's/test_target/'"$2"'/g' data/smb06.conf
+sed -i 's/test_host/'"$1"'/g' data/smb06.conf
+cp data/smb06.conf /etc/samba/smb.conf
+
+if exec_service_on_target smb start
+then
+ echo " -> start of smb succeeded."
+else
+ echo " -> start of smb failed."
+ echo " -> $test: TEST-FAIL"
+ exit
+fi
+
+sleep 5
diff --git a/tests/Functional.samba/tests/test_samba06_host.sh b/tests/Functional.samba/tests/test_samba06_host.sh
new file mode 100644
index 0000000..77ff7a5
--- /dev/null
+++ b/tests/Functional.samba/tests/test_samba06_host.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# In the target start samba, and confirm the process condition by command ps.
+# check the keyword "smbd".
+
+test="samba06"
+expect <<-EOF
+spawn sh
+expect ".*"
+send "smbclient //$1/test -N\r"
+expect {
+ -re ".*smb:.*" {
+ send "ls\r"
+ }
+ default { send_user "Can't connect to the board"\n"} }
+expect {
+ -re ".*test1.*" {
+ send_user " -> $test: TEST-PASS\n"
+ }
+ default { send_user " -> $test: TEST-FAIL\n"} }
+send "exit\n"
+expect eof
+EOF
--
2.17.1
More information about the Fuego
mailing list