public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH 1/3] network/dhcpd: improve testcase, use dummy module
@ 2014-12-03 13:55 Alexey Kodanev
  2014-12-03 13:55 ` [LTP] [PATCH 2/3] network/dhcpd: rename to dhcp Alexey Kodanev
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Alexey Kodanev @ 2014-12-03 13:55 UTC (permalink / raw)
  To: ltp-list; +Cc: vasily.isaenko

Run dhcp client and check that the interface configured as expected.

Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
 testcases/network/dhcpd/dhcpd_tests.sh |  148 +++++++++++++++++++++-----------
 1 files changed, 98 insertions(+), 50 deletions(-)

diff --git a/testcases/network/dhcpd/dhcpd_tests.sh b/testcases/network/dhcpd/dhcpd_tests.sh
index ad95875..c4c2c21 100755
--- a/testcases/network/dhcpd/dhcpd_tests.sh
+++ b/testcases/network/dhcpd/dhcpd_tests.sh
@@ -17,6 +17,7 @@
 # Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 # Author:       Manoj Iyer, manjo@mail.utexas.edu
+# Author:       Alexey Kodanev alexey.kodanev@oracle.com
 
 TST_CLEANUP=cleanup
 TST_TOTAL=1
@@ -28,42 +29,62 @@ stop_dhcp()
 {
 	if [ "$(pgrep -x dhcpd)" ]; then
 		tst_resm TINFO "stopping DHCP server"
-		pkill -x dhcpd || tst_brkm "failed to stop DHCP server"
+		pkill -x dhcpd
+		sleep 1
 	fi
 }
 
-# alias ethX to ethX:1 with IP 10.1.1.12
-init()
+setup_conf()
 {
-	tst_require_root
-	tst_tmpdir
-	tst_check_cmds cat dhcpd awk ip pgrep pkill diff
-
-	stop_dhcp
-
 	cat > tst_dhcpd.conf <<-EOF
+	ddns-update-style none;
+	update-static-leases off;
 	subnet 10.1.1.0 netmask 255.255.255.0 {
-        # default gateway
-		range 10.1.1.12 10.1.1.12;
-		default-lease-time 600;
-		max-lease-time 1200;
-		option routers 10.1.1.1;
-		option subnet-mask
-		255.255.255.0;
-		option
-		domain-name-servers
-		10.1.1.1;
-		option
-		domain-name
-		"dhcptest.net";
+		range 10.1.1.100 10.1.1.100;
+		default-lease-time 60;
+		max-lease-time 60;
 	}
-	ddns-update-style interim;
 	EOF
+}
 
-	if [ $? -ne 0 ]; then
-		tst_brkm TBROK "unable to create temp file: tst_dhcpd.conf"
+setup_conf6()
+{
+	cat > tst_dhcpd.conf <<-EOF
+	ddns-update-style none;
+	update-static-leases off;
+	subnet6 fd00:1:1:2::/64 {
+		range6 fd00:1:1:2::100 fd00:1:1:2::100;
+		default-lease-time 60;
+		max-lease-time 60;
+	}
+	EOF
+}
+
+init()
+{
+	tst_require_root
+	tst_check_cmds cat dhcpd awk ip pgrep pkill dhclient
+
+	dummy_loaded=
+	lsmod | grep -q '^dummy '
+	if [ $? -eq 0 ]; then
+		dummy_loaded=1
+	else
+		modprobe dummy || tst_brkm TCONF "failed to find dummy module"
 	fi
 
+	tst_resm TINFO "create dummy interface"
+	ip li add $iface type dummy || \
+		tst_brkm TBROK "failed to add dummy $iface"
+
+	ip li set up $iface || tst_brkm TBROK "failed to bring $iface up"
+
+	tst_tmpdir
+
+	stop_dhcp
+
+	setup_conf$TST_IPV6
+
 	if [ -f /etc/dhcpd.conf ]; then
 		DHCPD_CONF="/etc/dhcpd.conf"
 	elif [ -f /etc/dhcp/dhcpd.conf ]; then
@@ -78,58 +99,85 @@ init()
 	mv tst_dhcpd.conf $DHCPD_CONF
 	[ $? -ne 0 ] && tst_brkm TBROK "failed to create dhcpd.conf"
 
-	tst_resm TINFO "add $iface:1 10.1.1.12/24 to create private network"
-	ip addr add 10.1.1.12/24 dev $iface label $iface:1
-	if [ $? -ne 0 ]; then
-		tst_brkm TBROK "failed to add alias"
+	dhclient_lease="/var/lib/dhclient/dhclient${TST_IPV6}.leases"
+	if [ -f $dhclient_lease ]; then
+		tst_resm TINFO "backup dhclient${TST_IPV6}.leases"
+		mv $dhclient_lease .
 	fi
+
+	tst_resm TINFO "add $ip_addr to $iface to create private network"
+	ip addr add $ip_addr dev $iface || \
+		tst_brkm TBROK "failed to add ip address"
 }
 
 cleanup()
 {
 	stop_dhcp
+
+	pkill -f "dhclient -$ipv $iface"
+
 	[ -f dhcpd.conf ] && mv dhcpd.conf $DHCPD_CONF
 
-	ip addr show $iface | grep "$iface:1" > /dev/null &&
-		ip addr del 10.1.1.12/24 dev $iface label $iface:1
+	# restore dhclient leases
+	rm -f $dhclient_lease
+	[ -f "dhclient${TST_IPV6}.leases" ] && \
+		mv dhclient${TST_IPV6}.leases $dhclient_lease
+
+	if [ "$dummy_loaded" ]; then
+		ip li del $iface
+	else
+		rmmod dummy
+	fi
 
 	tst_rmdir
 }
 
 test01()
 {
-	tst_resm TINFO "start/stop DHCP server"
+	tst_resm TINFO "starting DHCPv${ipv} server on $iface"
+	dhcpd -$ipv $iface > tst_dhcpd.err 2>&1
+	if [ $? -ne 0 ]; then
+		cat tst_dhcpd.err
+		tst_brkm TBROK "Failed to start dhcpd"
+	fi
 
-	cat > tst_dhcpd.exp <<-EOF
-	Sending on   Socket/fallback/fallback-net
-	EOF
-	[ $? -ne 0 ] && tst_brkm TBROK "unable to create expected results"
+	sleep 1
 
-	tst_resm TINFO "starting DHCP server"
-	dhcpd > tst_dhcpd.err 2>&1
-	if [ $? -ne 0 ]; then
+	if [ "$(pgrep 'dhcpd -$ipv $iface')" ]; then
 		cat tst_dhcpd.err
 		tst_brkm TBROK "Failed to start dhcpd"
 	fi
 
-	cat tst_dhcpd.err | tail -n 1 > tst_dhcpd.out
-	[ $? -ne 0 ] && tst_brkm TBROK "unable to create output file"
+	tst_resm TINFO "starting dhclient -${ipv} $iface"
+	dhclient -$ipv $iface || \
+		tst_brkm TBROK "dhclient failed"
 
-	diff -iwB tst_dhcpd.out tst_dhcpd.exp
-	if [ $? -ne 0 ]; then
-		tst_resm TFAIL "failed to start dhcpd"
-		return
+	# check that we get configured ip address
+	ip addr show $iface | grep $ip_addr_check > /dev/null
+	if [ $? -eq 0 ]; then
+		tst_resm TPASS "'$ip_addr_check' configured by DHCPv$ipv"
+	else
+		tst_resm TFAIL "'$ip_addr_check' not configured by DHCPv$ipv"
 	fi
 
 	stop_dhcp
-
-	tst_resm TPASS "dhcpd started and stopped successfully"
 }
 
-iface=$(tst_iface)
+tst_read_opts $*
 
-init
+iface="ltp_dummy"
+ipv=${TST_IPV6:-"4"}
 
-test01
+if [ $TST_IPV6 ]; then
+	ip_addr="fd00:1:1:2::12/64"
+	ip_addr_check="fd00:1:1:2::100/64"
+else
+	ip_addr="10.1.1.12/24"
+	ip_addr_check="10.1.1.100/24"
+fi
+
+trap "tst_brkm TBROK 'test interrupted'" INT
 
+init
+test01
 tst_exit
-- 
1.7.1


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

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

end of thread, other threads:[~2015-02-18 10:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-03 13:55 [LTP] [PATCH 1/3] network/dhcpd: improve testcase, use dummy module Alexey Kodanev
2014-12-03 13:55 ` [LTP] [PATCH 2/3] network/dhcpd: rename to dhcp Alexey Kodanev
2014-12-03 13:55 ` [LTP] [PATCH 3/3] network/dhcp: add dnsmasq to dhcp test Alexey Kodanev
2015-02-18 10:34 ` [LTP] [PATCH 1/3] network/dhcpd: improve testcase, use dummy module Alexey Kodanev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox