]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-network: add tests for bonding 11681/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 9 Feb 2019 13:56:42 +0000 (22:56 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 18 Feb 2019 09:07:11 +0000 (18:07 +0900)
test/test-network/conf/bond99.network [new file with mode: 0644]
test/test-network/conf/dhcp-server.network
test/test-network/conf/veth-bond.network [new file with mode: 0644]
test/test-network/conf/vlan6.netdev [new file with mode: 0644]
test/test-network/conf/vlan6.network [new file with mode: 0644]
test/test-network/systemd-networkd-tests.py

diff --git a/test/test-network/conf/bond99.network b/test/test-network/conf/bond99.network
new file mode 100644 (file)
index 0000000..9c18eeb
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+Name=bond99
+
+[Network]
+IPv6AcceptRA=no
+DHCP=yes
index 9e49691a9b61317094cc7501654f8976c265bc90..439258a53994c8a887257b941bc2817fea0107d3 100644 (file)
@@ -3,6 +3,7 @@ Name=veth-peer
 
 [Network]
 Address=192.168.5.1/24
+IPv6AcceptRA=false
 DHCPServer=yes
 
 [DHCPServer]
diff --git a/test/test-network/conf/veth-bond.network b/test/test-network/conf/veth-bond.network
new file mode 100644 (file)
index 0000000..2095b7a
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+Name=veth99
+
+[Network]
+Bond=bond99
+IPv6AcceptRA=false
diff --git a/test/test-network/conf/vlan6.netdev b/test/test-network/conf/vlan6.netdev
new file mode 100644 (file)
index 0000000..310be91
--- /dev/null
@@ -0,0 +1,7 @@
+[NetDev]
+Name=vlan6
+Kind=vlan
+MTUBytes=1500
+
+[VLAN]
+Id=6
diff --git a/test/test-network/conf/vlan6.network b/test/test-network/conf/vlan6.network
new file mode 100644 (file)
index 0000000..64e9db5
--- /dev/null
@@ -0,0 +1,6 @@
+[Match]
+Name=vlan6
+
+[Network]
+IPv6AcceptRA=false
+Address=100.100.100.2/24
index 8bd85816972a68113691bb660d50e0bcde7a9893..9d70a0afcdda001631a0cd304aae06c0bdca02d6 100755 (executable)
@@ -1009,6 +1009,80 @@ class NetworkdNetWorkTests(unittest.TestCase, Utilities):
         output = subprocess.check_output(['networkctl', 'status', 'test1']).rstrip().decode('utf-8')
         self.assertRegex(output, 'State: routable \(configured\)')
 
+class NetworkdNetWorkBondTests(unittest.TestCase, Utilities):
+    links = [
+        'bond99',
+        'veth99']
+
+    units = [
+        '25-bond.netdev',
+        '25-veth.netdev',
+        'bond99.network',
+        'dhcp-server.network',
+        'veth-bond.network']
+
+    def setUp(self):
+        self.link_remove(self.links)
+
+    def tearDown(self):
+        self.link_remove(self.links)
+        self.remove_unit_from_networkd_path(self.units)
+
+    def test_bridge_property(self):
+        self.copy_unit_to_networkd_unit_path('25-bond.netdev', '25-veth.netdev', 'bond99.network',
+                                             'dhcp-server.network', 'veth-bond.network')
+        self.start_networkd()
+
+        self.assertTrue(self.link_exits('bond99'))
+        self.assertTrue(self.link_exits('veth99'))
+        self.assertTrue(self.link_exits('veth-peer'))
+
+        output = subprocess.check_output(['ip', '-d', 'link', 'show', 'veth-peer']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'UP,LOWER_UP')
+
+        output = subprocess.check_output(['ip', '-d', 'link', 'show', 'veth99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'SLAVE,UP,LOWER_UP')
+
+        output = subprocess.check_output(['ip', '-d', 'link', 'show', 'bond99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'MASTER,UP,LOWER_UP')
+
+        output = subprocess.check_output(['networkctl', 'status', 'veth-peer']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: routable \(configured\)')
+
+        output = subprocess.check_output(['networkctl', 'status', 'veth99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: enslaved \(configured\)')
+
+        output = subprocess.check_output(['networkctl', 'status', 'bond99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: routable \(configured\)')
+
+        self.assertEqual(subprocess.call(['ip', 'link', 'set', 'veth99', 'down']), 0)
+        time.sleep(2)
+
+        output = subprocess.check_output(['networkctl', 'status', 'veth99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: off \(configured\)')
+
+        output = subprocess.check_output(['networkctl', 'status', 'bond99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: degraded \(configured\)')
+
+        self.assertEqual(subprocess.call(['ip', 'link', 'set', 'veth99', 'up']), 0)
+        time.sleep(2)
+
+        output = subprocess.check_output(['networkctl', 'status', 'veth99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: enslaved \(configured\)')
+
+        output = subprocess.check_output(['networkctl', 'status', 'bond99']).rstrip().decode('utf-8')
+        print(output)
+        self.assertRegex(output, 'State: routable \(configured\)')
+
 class NetworkdNetWorkBridgeTests(unittest.TestCase, Utilities):
     links = [
         'bridge99',