From 83bceef02796e45b5583337e553ffd86334d56d6 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:10:06 +0100 Subject: [PATCH 01/11] test-network: drop superfluous parens --- test/test-network/systemd-networkd-tests.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 7013f73851..16610683f9 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -486,9 +486,9 @@ def remove_unit_from_networkd_path(units): Drop-ins will be removed automatically. """ for unit in units: - if (os.path.exists(os.path.join(network_unit_file_path, unit))): + if os.path.exists(os.path.join(network_unit_file_path, unit)): os.remove(os.path.join(network_unit_file_path, unit)) - if (os.path.exists(os.path.join(network_unit_file_path, unit + '.d'))): + if os.path.exists(os.path.join(network_unit_file_path, unit + '.d')): shutil.rmtree(os.path.join(network_unit_file_path, unit + '.d')) def copy_networkd_conf_dropin(*dropins): @@ -499,7 +499,7 @@ def copy_networkd_conf_dropin(*dropins): def remove_networkd_conf_dropin(dropins): """Remove previously copied networkd.conf dropin files from the testbed.""" for dropin in dropins: - if (os.path.exists(os.path.join(networkd_conf_dropin_path, dropin))): + if os.path.exists(os.path.join(networkd_conf_dropin_path, dropin)): os.remove(os.path.join(networkd_conf_dropin_path, dropin)) def start_dnsmasq(additional_options='', interface='veth-peer', ipv4_range='192.168.5.10,192.168.5.200', ipv4_router='192.168.5.1', ipv6_range='2600::10,2600::20', lease_time='1h'): @@ -3819,9 +3819,9 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities): self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'unicast_flood'), '1') self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_flood'), '0') # CONFIG_BRIDGE_IGMP_SNOOPING=y - if (os.path.exists('/sys/devices/virtual/net/bridge00/lower_dummy98/brport/multicast_to_unicast')): + if os.path.exists('/sys/devices/virtual/net/bridge00/lower_dummy98/brport/multicast_to_unicast'): self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_to_unicast'), '1') - if (os.path.exists('/sys/devices/virtual/net/bridge99/lower_dummy98/brport/neigh_suppress')): + if os.path.exists('/sys/devices/virtual/net/bridge99/lower_dummy98/brport/neigh_suppress'): self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'neigh_suppress'), '1') self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'learning'), '0') self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'priority'), '23') @@ -3857,9 +3857,9 @@ class NetworkdBridgeTests(unittest.TestCase, Utilities): self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'unicast_flood'), '1') self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_flood'), '0') # CONFIG_BRIDGE_IGMP_SNOOPING=y - if (os.path.exists('/sys/devices/virtual/net/bridge00/lower_dummy98/brport/multicast_to_unicast')): + if os.path.exists('/sys/devices/virtual/net/bridge00/lower_dummy98/brport/multicast_to_unicast'): self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'multicast_to_unicast'), '1') - if (os.path.exists('/sys/devices/virtual/net/bridge99/lower_dummy98/brport/neigh_suppress')): + if os.path.exists('/sys/devices/virtual/net/bridge99/lower_dummy98/brport/neigh_suppress'): self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'neigh_suppress'), '1') self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'learning'), '0') self.assertEqual(read_bridge_port_attr('bridge99', 'dummy98', 'priority'), '23') From 6983bb0e5e70d42f0c6a9a088fc83655d36ed492 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:11:26 +0100 Subject: [PATCH 02/11] test-network: drop unnecessary semicolons --- test/test-network/systemd-networkd-tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 16610683f9..b7e67d47ad 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -592,7 +592,7 @@ class Utilities(): self.assertTrue(link_exists(link)) def check_link_attr(self, *args): - self.assertEqual(read_link_attr(*args[:-1]), args[-1]); + self.assertEqual(read_link_attr(*args[:-1]), args[-1]) def wait_activated(self, link, state='down', timeout=20, fail_assert=True): # wait for the interface is activated. @@ -4468,9 +4468,9 @@ class NetworkdDHCPClientTests(unittest.TestCase, Utilities): def _test_dhcp_client_ipv4_use_routes_gateway(self, use_routes, use_gateway, dns_and_ntp_routes, classless): testunit = 'dhcp-client-ipv4-use-routes-use-gateway.network' testunits = ['25-veth.netdev', 'dhcp-server-veth-peer.network', testunit] - testunits.append(f'{testunit}.d/use-routes-{use_routes}.conf'); - testunits.append(f'{testunit}.d/use-gateway-{use_gateway}.conf'); - testunits.append(f'{testunit}.d/use-dns-and-ntp-routes-{dns_and_ntp_routes}.conf'); + testunits.append(f'{testunit}.d/use-routes-{use_routes}.conf') + testunits.append(f'{testunit}.d/use-gateway-{use_gateway}.conf') + testunits.append(f'{testunit}.d/use-dns-and-ntp-routes-{dns_and_ntp_routes}.conf') copy_unit_to_networkd_unit_path(*testunits, dropins=False) start_networkd() From 19aa7f99c7da5e15cdb8de7097aa6d76593d49d7 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:14:44 +0100 Subject: [PATCH 03/11] test-network: drop unnecessary else statements --- test/test-network/systemd-networkd-tests.py | 52 ++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index b7e67d47ad..a6f59a5558 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -85,8 +85,8 @@ def expectedFailureIfERSPANModuleIsNotAvailable(): if rc == 0: call('ip link del erspan99') return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -96,8 +96,8 @@ def expectedFailureIfRoutingPolicyPortRangeIsNotAvailable(): if rc == 0: call('ip rule del from 192.168.100.19 sport 1123-1150 dport 3224-3290 table 7') return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -107,8 +107,8 @@ def expectedFailureIfRoutingPolicyIPProtoIsNotAvailable(): if rc == 0: call('ip rule del not from 192.168.100.19 ipproto tcp table 7') return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -124,8 +124,8 @@ def expectedFailureIfRoutingPolicyUIDRangeIsNotAvailable(): if support: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -141,8 +141,8 @@ def expectedFailureIfLinkFileFieldIsNotSet(): if support: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -151,8 +151,8 @@ def expectedFailureIfNexthopIsNotAvailable(): rc = call('ip nexthop list', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -165,8 +165,8 @@ def expectedFailureIfRTA_VIAIsNotSupported(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -183,8 +183,8 @@ def expectedFailureIfAlternativeNameIsNotAvailable(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if supported: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -222,8 +222,8 @@ def expectedFailureIfCAKEIsNotAvailable(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -234,8 +234,8 @@ def expectedFailureIfPIEIsNotAvailable(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -246,8 +246,8 @@ def expectedFailureIfHHFIsNotAvailable(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -258,8 +258,8 @@ def expectedFailureIfETSIsNotAvailable(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f @@ -270,8 +270,8 @@ def expectedFailureIfFQPIEIsNotAvailable(): call('ip link del dummy98', stderr=subprocess.DEVNULL) if rc == 0: return func - else: - return unittest.expectedFailure(func) + + return unittest.expectedFailure(func) return f From 45dbd0b9453422936b49750d6ae5d71f47408861 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:17:53 +0100 Subject: [PATCH 04/11] test-network: drop unused variables --- test/test-network/systemd-networkd-tests.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index a6f59a5558..8e2f16518d 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -198,7 +198,7 @@ def expectedFailureIfNetdevsimWithSRIOVIsNotAvailable(): try: with open('/sys/bus/netdevsim/new_device', mode='w') as f: f.write('99 1') - except Exception as error: + except Exception: return unittest.expectedFailure(func) call('udevadm settle') @@ -206,7 +206,7 @@ def expectedFailureIfNetdevsimWithSRIOVIsNotAvailable(): try: with open('/sys/class/net/eni99np1/device/sriov_numvfs', mode='w') as f: f.write('3') - except Exception as error: + except Exception: call('rmmod netdevsim', stderr=subprocess.DEVNULL) return unittest.expectedFailure(func) @@ -2410,7 +2410,7 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): copy_unit_to_networkd_unit_path('routing-policy-rule-test1.network', '11-dummy.netdev', 'routing-policy-rule-dummy98.network', '12-dummy.netdev') - for trial in range(3): + for _ in range(3): # Remove state files only first time start_networkd(3) self.wait_online(['test1:degraded', 'dummy98:degraded']) From f7805a6c794f04d6b95b7ddd58f804a2b353a704 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:42:41 +0100 Subject: [PATCH 05/11] test-network: convert certain multiline strings to comments Multiline comments are converted to docstrings only when they're the first statement in a function/method. Even though they're still a no-op otherwise, let's use "true" comments to make pylint happy. --- test/test-network/systemd-networkd-tests.py | 70 ++++++++++----------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 8e2f16518d..ec2661d631 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -2923,19 +2923,17 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): print(output) self.assertNotRegex(output, 'inet6* .* scope link') - ''' - Documentation/networking/ip-sysctl.txt - - addr_gen_mode - INTEGER - Defines how link-local and autoconf addresses are generated. - - 0: generate address based on EUI64 (default) - 1: do no generate a link-local address, use EUI64 for addresses generated - from autoconf - 2: generate stable privacy addresses, using the secret from - stable_secret (RFC7217) - 3: generate stable privacy addresses, using a random secret if unset - ''' + # Documentation/networking/ip-sysctl.txt + # + # addr_gen_mode - INTEGER + # Defines how link-local and autoconf addresses are generated. + # + # 0: generate address based on EUI64 (default) + # 1: do no generate a link-local address, use EUI64 for addresses generated + # from autoconf + # 2: generate stable privacy addresses, using the secret from + # stable_secret (RFC7217) + # 3: generate stable privacy addresses, using a random secret if unset self.assertEqual(read_ipv6_sysctl_attr('test1', 'stable_secret'), '0123:4567:89ab:cdef:0123:4567:89ab:cdef') self.assertEqual(read_ipv6_sysctl_attr('test1', 'addr_gen_mode'), '2') @@ -5231,16 +5229,14 @@ class NetworkdDHCPPDTests(unittest.TestCase, Utilities): print(output) self.assertIn('inet6 3ffe:501:ffff:100::1/64 scope global', output) - ''' - Link Subnet IDs - test1: 0x00 - dummy97: 0x01 (The link will appear later) - dummy98: 0x02 - dummy99: auto -> 0x03 (No address assignment) - veth97: 0x08 - veth98: 0x09 - veth99: 0x10 (ignored, as it is upstream) - ''' + # Link Subnet IDs + # test1: 0x00 + # dummy97: 0x01 (The link will appear later) + # dummy98: 0x02 + # dummy99: auto -> 0x03 (No address assignment) + # veth97: 0x08 + # veth98: 0x09 + # veth99: 0x10 (ignored, as it is upstream) print('### ip -6 address show dev veth99 scope global') output = check_output('ip -6 address show dev veth99 scope global') @@ -5411,16 +5407,14 @@ class NetworkdDHCPPDTests(unittest.TestCase, Utilities): print(output) self.assertIn('inet 10.0.0.1/8 brd 10.255.255.255 scope global veth-peer', output) - ''' - Link Subnet IDs - test1: 0x00 - dummy97: 0x01 (The link will appear later) - dummy98: 0x02 - dummy99: auto -> 0x03 (No address assignment) - veth97: 0x08 - veth98: 0x09 - veth99: 0x10 - ''' + # Link Subnet IDs + # test1: 0x00 + # dummy97: 0x01 (The link will appear later) + # dummy98: 0x02 + # dummy99: auto -> 0x03 (No address assignment) + # veth97: 0x08 + # veth98: 0x09 + # veth99: 0x10 print('### ip -4 address show dev veth99 scope global') output = check_output('ip -4 address show dev veth99 scope global') @@ -5597,11 +5591,11 @@ class NetworkdDHCPPDTests(unittest.TestCase, Utilities): start_networkd() self.wait_online(['veth-peer:routable']) - ''' - ipv4masklen: 8 - 6rd-prefix: 2001:db8::/32 - br-addresss: 10.0.0.1 - ''' + + # ipv4masklen: 8 + # 6rd-prefix: 2001:db8::/32 + # br-addresss: 10.0.0.1 + start_dnsmasq(additional_options='--dhcp-option=212,08:20:20:01:0d:b8:00:00:00:00:00:00:00:00:00:00:00:00:0a:00:00:01', ipv4_range='10.100.100.100,10.100.100.200', ipv4_router='10.0.0.1', lease_time='2m') self.wait_online(['veth99:routable', 'test1:routable', 'dummy98:routable', 'dummy99:degraded', 'veth97:routable', 'veth97-peer:routable', 'veth98:routable', 'veth98-peer:routable']) From 535e8107ee5ea2aff79d6814f5d0ae6d86908d8e Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:49:35 +0100 Subject: [PATCH 06/11] test-network: explicitly set check=False for subprocess.run() since we're checking the returned error code explicitly via the `returncode` member. --- test/test-network/systemd-networkd-tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index ec2661d631..7c40707b18 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -64,7 +64,7 @@ def call(*command, **kwargs): def run(*command, **kwargs): command = command[0].split() + list(command[1:]) - return subprocess.run(command, universal_newlines=True, **kwargs) + return subprocess.run(command, universal_newlines=True, check=False, **kwargs) def is_module_available(module_name): lsmod_output = check_output('lsmod') From 283863a1165eefddec2849fa51e7764291c65894 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 18:55:12 +0100 Subject: [PATCH 07/11] test-network: use raw strings for regexes with backslashes It currently works because `\(` and `\)` are not valid escape sequences, so they're not treated differently. Using raw strings (or double backslashes) is a more correct solution. --- test/test-network/systemd-networkd-tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 7c40707b18..01003d2f05 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -4255,7 +4255,7 @@ class NetworkdDHCPServerTests(unittest.TestCase, Utilities): output = check_output(*networkctl_cmd, '-n', '0', 'status', 'veth99', env=env) print(output) - self.assertRegex(output, 'Address: 192.168.5.[0-9]* \(DHCP4 via 192.168.5.1\)') + self.assertRegex(output, r'Address: 192.168.5.[0-9]* \(DHCP4 via 192.168.5.1\)') self.assertIn('Gateway: 192.168.5.3', output) self.assertRegex(output, 'DNS: 192.168.5.1\n *192.168.5.10') self.assertRegex(output, 'NTP: 192.168.5.1\n *192.168.5.11') @@ -4268,7 +4268,7 @@ class NetworkdDHCPServerTests(unittest.TestCase, Utilities): output = check_output(*networkctl_cmd, '-n', '0', 'status', 'veth99', env=env) print(output) - self.assertRegex(output, 'Address: 192.168.5.[0-9]* \(DHCP4 via 192.168.5.1\)') + self.assertRegex(output, r'Address: 192.168.5.[0-9]* \(DHCP4 via 192.168.5.1\)') self.assertIn('Gateway: 192.168.5.3', output) self.assertIn('DNS: 192.168.5.1', output) self.assertIn('NTP: 192.168.5.1', output) @@ -4280,7 +4280,7 @@ class NetworkdDHCPServerTests(unittest.TestCase, Utilities): output = check_output(*networkctl_cmd, '-n', '0', 'status', 'veth99', env=env) print(output) - self.assertRegex(output, 'Address: 192.168.5.[0-9]* \(DHCP4 via 192.168.5.1\)') + self.assertRegex(output, r'Address: 192.168.5.[0-9]* \(DHCP4 via 192.168.5.1\)') self.assertIn('Gateway: 192.168.5.1', output) self.assertIn('Time Zone: Europe/Berlin', output) @@ -4327,7 +4327,7 @@ class NetworkdDHCPServerRelayAgentTests(unittest.TestCase, Utilities): output = check_output(*networkctl_cmd, '-n', '0', 'status', 'client', env=env) print(output) - self.assertRegex(output, 'Address: 192.168.5.150 \(DHCP4 via 192.168.5.1\)') + self.assertRegex(output, r'Address: 192.168.5.150 \(DHCP4 via 192.168.5.1\)') class NetworkdDHCPClientTests(unittest.TestCase, Utilities): links = [ From 524cc9d1d8f61635b6f4c3133714a0b166bf9255 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 19:13:06 +0100 Subject: [PATCH 08/11] test-network: disable 'no-member' warning for the Utilities class The warning is correct, since we don't inherit the necessary unittest.TestCase class, but that's on purpose, since the Utilities class is not supposed to be instantiated on its own, but should complement other classes' definitions which do inherit from the unittest.TestCase class. --- test/test-network/systemd-networkd-tests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 01003d2f05..abbb760457 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -586,8 +586,9 @@ def restart_networkd(sleep_sec=0, show_logs=True, remove_state_files=True): stop_networkd(show_logs, remove_state_files) start_networkd(sleep_sec) - class Utilities(): + # pylint: disable=no-member + def check_link_exists(self, link): self.assertTrue(link_exists(link)) From a561bceeaac665467ef915b5f70d1b263322cca7 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 19:20:42 +0100 Subject: [PATCH 09/11] test-network: avoid name clashing/redefinition --- test/test-network/systemd-networkd-tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index abbb760457..edcfce9556 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -439,8 +439,8 @@ def remove_blackhole_nexthops(): ret = run('ip nexthop show dev lo', stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) if ret.returncode == 0: for line in ret.stdout.rstrip().splitlines(): - id = line.split()[1] - call(f'ip nexthop del id {id}') + dev_id = line.split()[1] + call(f'ip nexthop del id {dev_id}') def remove_l2tp_tunnels(tunnel_ids): output = check_output('ip l2tp show tunnel') @@ -5845,7 +5845,7 @@ if __name__ == '__main__': parser.add_argument('--lsan-options', help='LSAN options', dest='lsan_options') parser.add_argument('--ubsan-options', help='UBSAN options', dest='ubsan_options') parser.add_argument('--with-coverage', help='Loosen certain sandbox restrictions to make gcov happy', dest='with_coverage', type=bool, nargs='?', const=True, default=with_coverage) - ns, args = parser.parse_known_args(namespace=unittest) + ns, unknown_args = parser.parse_known_args(namespace=unittest) if ns.build_dir: if ns.networkd_bin or ns.resolved_bin or ns.udevd_bin or ns.wait_online_bin or ns.networkctl_bin or ns.resolvectl_bin or ns.timedatectl_bin: @@ -5900,6 +5900,6 @@ if __name__ == '__main__': if ubsan_options: env.update({ 'UBSAN_OPTIONS' : ubsan_options }) - sys.argv[1:] = args + sys.argv[1:] = unknown_args unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=3)) From 54e2f32f5041b3813d2ef790826ce16cb8134c38 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 19:30:11 +0100 Subject: [PATCH 10/11] test-network: use specific exceptions instead of the Exception class --- test/test-network/systemd-networkd-tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index edcfce9556..6be4b0eb76 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -198,7 +198,7 @@ def expectedFailureIfNetdevsimWithSRIOVIsNotAvailable(): try: with open('/sys/bus/netdevsim/new_device', mode='w') as f: f.write('99 1') - except Exception: + except OSError: return unittest.expectedFailure(func) call('udevadm settle') @@ -206,7 +206,7 @@ def expectedFailureIfNetdevsimWithSRIOVIsNotAvailable(): try: with open('/sys/class/net/eni99np1/device/sriov_numvfs', mode='w') as f: f.write('3') - except Exception: + except OSError: call('rmmod netdevsim', stderr=subprocess.DEVNULL) return unittest.expectedFailure(func) From 87bf983c55b098440b2302009c309a539e38d09e Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Thu, 3 Feb 2022 19:31:15 +0100 Subject: [PATCH 11/11] test-network: disable irrelevant or one-time pylint checks --- test/test-network/systemd-networkd-tests.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index 6be4b0eb76..1f962470d4 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -1,5 +1,8 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: LGPL-2.1-or-later +# pylint: disable=line-too-long,too-many-lines,too-many-branches,too-many-statements,too-many-arguments +# pylint: disable=too-many-public-methods,too-many-boolean-expressions,invalid-name +# pylint: disable=missing-function-docstring,missing-class-docstring,missing-module-docstring # systemd-networkd tests import argparse @@ -276,6 +279,7 @@ def expectedFailureIfFQPIEIsNotAvailable(): return f def setUpModule(): + # pylint: disable=global-statement global running_units os.makedirs(network_unit_file_path, exist_ok=True) @@ -380,6 +384,7 @@ def setUpModule(): check_output('systemctl restart systemd-udevd') def tearDownModule(): + # pylint: disable=global-statement global running_units shutil.rmtree(networkd_ci_path)