From c3a8853f6e2da0677bfe962fc2fd828e7bce6c9a Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 9 Feb 2019 22:56:42 +0900 Subject: [PATCH] test-network: add tests for bonding --- test/test-network/conf/bond99.network | 6 ++ test/test-network/conf/dhcp-server.network | 1 + test/test-network/conf/veth-bond.network | 6 ++ test/test-network/conf/vlan6.netdev | 7 ++ test/test-network/conf/vlan6.network | 6 ++ test/test-network/systemd-networkd-tests.py | 74 +++++++++++++++++++++ 6 files changed, 100 insertions(+) create mode 100644 test/test-network/conf/bond99.network create mode 100644 test/test-network/conf/veth-bond.network create mode 100644 test/test-network/conf/vlan6.netdev create mode 100644 test/test-network/conf/vlan6.network diff --git a/test/test-network/conf/bond99.network b/test/test-network/conf/bond99.network new file mode 100644 index 00000000000..9c18eeb80c2 --- /dev/null +++ b/test/test-network/conf/bond99.network @@ -0,0 +1,6 @@ +[Match] +Name=bond99 + +[Network] +IPv6AcceptRA=no +DHCP=yes diff --git a/test/test-network/conf/dhcp-server.network b/test/test-network/conf/dhcp-server.network index 9e49691a9b6..439258a5399 100644 --- a/test/test-network/conf/dhcp-server.network +++ b/test/test-network/conf/dhcp-server.network @@ -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 index 00000000000..2095b7ac26c --- /dev/null +++ b/test/test-network/conf/veth-bond.network @@ -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 index 00000000000..310be91fa52 --- /dev/null +++ b/test/test-network/conf/vlan6.netdev @@ -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 index 00000000000..64e9db520e5 --- /dev/null +++ b/test/test-network/conf/vlan6.network @@ -0,0 +1,6 @@ +[Match] +Name=vlan6 + +[Network] +IPv6AcceptRA=false +Address=100.100.100.2/24 diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 8bd85816972..9d70a0afcdd 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -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',