From: Dan Streetman Date: Mon, 27 Apr 2020 19:35:30 +0000 (-0400) Subject: test: expand configure-without-carrier test X-Git-Tag: v246-rc1~261^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9bacf4313eb2f54fd6d9affce10b027e80ec50ef;p=thirdparty%2Fsystemd.git test: expand configure-without-carrier test The test currently doesn't actually test configure-without-carrier since it does have carrier for the entire test. It now forces carrier down before starting the network portion of the test. Also, it tests to verify the configuration is retained across future carrier losses/gains. --- diff --git a/test/test-network/conf/configure-without-carrier.network b/test/test-network/conf/25-test1.network similarity index 71% rename from test/test-network/conf/configure-without-carrier.network rename to test/test-network/conf/25-test1.network index 5bd9d7e84ab..965013f5587 100644 --- a/test/test-network/conf/configure-without-carrier.network +++ b/test/test-network/conf/25-test1.network @@ -4,4 +4,3 @@ Name=test1 [Network] Address=192.168.0.15/24 Gateway=192.168.0.1 -ConfigureWithoutCarrier=true diff --git a/test/test-network/conf/25-test1.network.d/configure-without-carrier.conf b/test/test-network/conf/25-test1.network.d/configure-without-carrier.conf new file mode 100644 index 00000000000..fed3b0eef34 --- /dev/null +++ b/test/test-network/conf/25-test1.network.d/configure-without-carrier.conf @@ -0,0 +1,2 @@ +[Network] +ConfigureWithoutCarrier=true diff --git a/test/test-network/conf/25-test1.network.d/ignore-carrier-loss-no.conf b/test/test-network/conf/25-test1.network.d/ignore-carrier-loss-no.conf new file mode 100644 index 00000000000..b091e98fc47 --- /dev/null +++ b/test/test-network/conf/25-test1.network.d/ignore-carrier-loss-no.conf @@ -0,0 +1,2 @@ +[Network] +IgnoreCarrierLoss=false diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 3fc93a725f7..7f9737f809e 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -1671,11 +1671,11 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): '25-gateway-next-static.network', '25-sysctl-disable-ipv6.network', '25-sysctl.network', + '25-test1.network', '25-veth-peer.network', '25-veth.netdev', '25-vrf.netdev', '26-link-local-addressing-ipv6.network', - 'configure-without-carrier.network', 'routing-policy-rule-dummy98.network', 'routing-policy-rule-test1.network'] @@ -1762,15 +1762,56 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): self.assertNotRegex(output, '192.168.100.10/24') def test_configure_without_carrier(self): - copy_unit_to_networkd_unit_path('configure-without-carrier.network', '11-dummy.netdev') + copy_unit_to_networkd_unit_path('11-dummy.netdev') start_networkd() - self.wait_online(['test1:routable']) + self.wait_operstate('test1', 'off', '') + check_output('ip link set dev test1 up carrier off') - output = check_output(*networkctl_cmd, '-n', '0', 'status', 'test1', env=env) - print(output) - self.assertRegex(output, '192.168.0.15') - self.assertRegex(output, '192.168.0.1') - self.assertRegex(output, 'routable') + copy_unit_to_networkd_unit_path('25-test1.network.d/configure-without-carrier.conf', dropins=False) + restart_networkd() + self.wait_online(['test1:no-carrier']) + + carrier_map = {'on': '1', 'off': '0'} + routable_map = {'on': 'routable', 'off': 'no-carrier'} + for carrier in ['off', 'on', 'off']: + with self.subTest(carrier=carrier): + if carrier_map[carrier] != read_link_attr('test1', 'carrier'): + check_output(f'ip link set dev test1 carrier {carrier}') + self.wait_online([f'test1:{routable_map[carrier]}']) + + output = check_output(*networkctl_cmd, '-n', '0', 'status', 'test1', env=env) + print(output) + self.assertRegex(output, '192.168.0.15') + self.assertRegex(output, '192.168.0.1') + self.assertRegex(output, routable_map[carrier]) + + def test_configure_without_carrier_yes_ignore_carrier_loss_no(self): + copy_unit_to_networkd_unit_path('11-dummy.netdev') + start_networkd() + self.wait_operstate('test1', 'off', '') + check_output('ip link set dev test1 up carrier off') + + copy_unit_to_networkd_unit_path('25-test1.network') + restart_networkd() + self.wait_online(['test1:no-carrier']) + + carrier_map = {'on': '1', 'off': '0'} + routable_map = {'on': 'routable', 'off': 'no-carrier'} + for (carrier, have_config) in [('off', True), ('on', True), ('off', False)]: + with self.subTest(carrier=carrier, have_config=have_config): + if carrier_map[carrier] != read_link_attr('test1', 'carrier'): + check_output(f'ip link set dev test1 carrier {carrier}') + self.wait_online([f'test1:{routable_map[carrier]}']) + + output = check_output(*networkctl_cmd, '-n', '0', 'status', 'test1', env=env) + print(output) + if have_config: + self.assertRegex(output, '192.168.0.15') + self.assertRegex(output, '192.168.0.1') + else: + self.assertNotRegex(output, '192.168.0.15') + self.assertNotRegex(output, '192.168.0.1') + self.assertRegex(output, routable_map[carrier]) def test_routing_policy_rule(self): copy_unit_to_networkd_unit_path('routing-policy-rule-test1.network', '11-dummy.netdev')