Ondřej Svoboda has uploaded a new change for review.

Change subject: networkTests: Extend a test to also consider DHCPv6
......................................................................

networkTests: Extend a test to also consider DHCPv6

Change-Id: Ic5d821edd54681a7a8c1013a90af61ae835baa39
Signed-off-by: Ondřej Svoboda <[email protected]>
---
M tests/functional/dummy.py
M tests/functional/firewall.py
M tests/functional/networkTests.py
3 files changed, 32 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/32/30532/1

diff --git a/tests/functional/dummy.py b/tests/functional/dummy.py
index aa56c71..b94c77d 100644
--- a/tests/functional/dummy.py
+++ b/tests/functional/dummy.py
@@ -54,9 +54,9 @@
                        (dummyName, e))
 
 
-def setIP(dummyName, ipaddr, netmask):
+def setIP(dummyName, ipaddr, netmask, family=4):
     try:
-        addrAdd(dummyName, ipaddr, netmask)
+        addrAdd(dummyName, ipaddr, netmask, family)
     except IPRoute2Error:
         raise SkipTest('Failed to set device ip')
 
diff --git a/tests/functional/firewall.py b/tests/functional/firewall.py
index ee7bb9f..9940a75 100644
--- a/tests/functional/firewall.py
+++ b/tests/functional/firewall.py
@@ -43,7 +43,10 @@
         if _serviceRunning('iptables'):
             _execCmdChecker([_IPTABLES_BINARY.cmd, '-I', 'INPUT', '-i',
                             veth, '-p', 'udp', '--sport', '68', '--dport',
-                            '67', '-j', 'ACCEPT'])
+                            '67', '-j', 'ACCEPT'])  # DHCPv4
+            _execCmdChecker([_IPTABLES_BINARY.cmd, '-I', 'INPUT', '-i',
+                            veth, '-p', 'udp', '--sport', '546', '--dport',
+                            '547', '-j', 'ACCEPT'])  # DHCPv6
         elif _serviceRunning('firewalld'):
             _execCmdChecker([_FIREWALLD_BINARY.cmd, '--zone=trusted',
                             '--change-interface=' + veth])
@@ -68,7 +71,10 @@
     if _serviceRunning('iptables'):
         _execCmdChecker([_IPTABLES_BINARY.cmd, '-D', 'INPUT', '-i',
                         veth, '-p', 'udp', '--sport', '68', '--dport',
-                        '67', '-j', 'ACCEPT'])
+                        '67', '-j', 'ACCEPT'])  # DHCPv4
+        _execCmdChecker([_IPTABLES_BINARY.cmd, '-D', 'INPUT', '-i',
+                        veth, '-p', 'udp', '--sport', '546', '--dport',
+                        '547', '-j', 'ACCEPT'])  # DHCPv6
     elif _serviceRunning('firewalld'):
         _execCmdChecker([_FIREWALLD_BINARY.cmd, '--zone=trusted',
                         '--remove-interface=' + veth])
diff --git a/tests/functional/networkTests.py b/tests/functional/networkTests.py
index f87f49b..0033c19 100644
--- a/tests/functional/networkTests.py
+++ b/tests/functional/networkTests.py
@@ -64,8 +64,11 @@
 DHCP_RANGE_TO = '240.0.0.100'
 CUSTOM_PROPS = {'linux': 'rules', 'vdsm': 'as well'}
 
-IPv6_ADDRESS = 'fdb3:84e5:4ff4:55e3::1/64'
+IPv6_ADDRESS = 'fdb3:84e5:4ff4:55e3::1'
+IPv6_CIDR = '64'
+IPv6_ADDRESS_AND_CIDR = IPv6_ADDRESS + '/' + IPv6_CIDR
 IPv6_GATEWAY = 'fdb3:84e5:4ff4:55e3::ff'
+DHCPv6_ADDRESS = 'fdb3:84e5:4ff4:55e3::2'
 
 dummyPool = set()
 DUMMY_POOL_SIZE = 5
@@ -90,11 +93,16 @@
 
 
 @contextmanager
-def dnsmasqDhcp(interface):
+def dnsmasqDhcp(interface, family=4):
     """Manages the life cycle of dnsmasq as a DHCP server."""
     dhcpServer = dhcp.Dnsmasq()
+    if family == 4:
+        rangeFrom, rangeTo = DHCP_RANGE_FROM, DHCP_RANGE_TO
+    else:
+        rangeFrom, rangeTo = DHCPv6_ADDRESS, DHCPv6_ADDRESS
+
     try:
-        dhcpServer.start(interface, DHCP_RANGE_FROM, DHCP_RANGE_TO)
+        dhcpServer.start(interface, rangeFrom, rangeTo)
     except dhcp.DhcpError as e:
         raise SkipTest(e)
 
@@ -1769,11 +1777,11 @@
             nic, = nics
             networks = {
                 NETWORK_NAME + '1':
-                {'nic': nic, 'bootproto': 'none', 'ipv6addr': IPv6_ADDRESS,
-                 'ipv6gateway': IPv6_GATEWAY},
+                {'nic': nic, 'bootproto': 'none', 'ipv6gateway': IPv6_GATEWAY,
+                 'ipv6addr': IPv6_ADDRESS_AND_CIDR},
                 NETWORK_NAME + '2':
-                {'nic': nic, 'bootproto': 'none', 'ipv6addr': IPv6_ADDRESS,
-                 'ipv6gateway': IPv6_GATEWAY, 'ipaddr': IP_ADDRESS,
+                {'nic': nic, 'bootproto': 'none', 'ipv6gateway': IPv6_GATEWAY,
+                 'ipv6addr': IPv6_ADDRESS_AND_CIDR, 'ipaddr': IP_ADDRESS,
                  'gateway': IP_GATEWAY,
                  'netmask': prefix2netmask(int(IP_CIDR))}}
             for network, netdict in networks.iteritems():
@@ -1783,7 +1791,7 @@
                     self.assertEqual(status, SUCCESS, msg)
                     self.assertNetworkExists(network)
                     self.assertIn(
-                        IPv6_ADDRESS,
+                        IPv6_ADDRESS_AND_CIDR,
                         self.vdsm_net.netinfo.networks[network]['ipv6addrs'])
                     self.assertEqual(
                         IPv6_GATEWAY,
@@ -1836,14 +1844,15 @@
                 NOCHK)
 
     @permutations([[True], [False]])
+    @permutations([[(4, IP_ADDRESS, IP_CIDR)], [(6, IPv6_ADDRESS, IPv6_CIDR)]])
     @cleanupNet
     @RequireVethMod
     @ValidateRunningAsRoot
-    def testSetupNetworksAddDelDhcp(self, bridged):
+    def testSetupNetworksAddDelDhcp(self, bridged, (family, addr, cidr)):
         with vethIf() as (left, right):
-            veth.setIP(left, IP_ADDRESS, IP_CIDR)
+            veth.setIP(left, addr, cidr)
             veth.setLinkUp(left)
-            with dnsmasqDhcp(left):
+            with dnsmasqDhcp(left, family):
                 network = {NETWORK_NAME: {'nic': right, 'bridged': bridged,
                                           'bootproto': 'dhcp',
                                           'blockingdhcp': True}}
@@ -1853,7 +1862,8 @@
                 self.assertNetworkExists(NETWORK_NAME)
 
                 net = self.vdsm_net.netinfo.networks[NETWORK_NAME]
-                self.assertEqual(net['bootproto4'], 'dhcp')
+                if family == 4:
+                    self.assertEqual(net['bootproto4'], 'dhcp')
 
                 if bridged:
                     self.assertEqual(net['cfg']['BOOTPROTO'], 'dhcp')


-- 
To view, visit http://gerrit.ovirt.org/30532
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic5d821edd54681a7a8c1013a90af61ae835baa39
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Ondřej Svoboda <[email protected]>
_______________________________________________
vdsm-patches mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to