wait_online_bin='/usr/lib/systemd/systemd-networkd-wait-online'
networkctl_bin='/usr/bin/networkctl'
use_valgrind=False
-enable_debug=False
+enable_debug=True
env = {}
asan_options=None
lsan_options=None
if os.path.exists(dnsmasq_log_file):
os.remove(dnsmasq_log_file)
-def start_networkd(sleep_sec=0, remove_state_files=True):
- if (remove_state_files and
- os.path.exists(os.path.join(networkd_runtime_directory, 'state'))):
- check_output('systemctl stop systemd-networkd')
+def remove_networkd_state_files():
+ if os.path.exists(os.path.join(networkd_runtime_directory, 'state')):
os.remove(os.path.join(networkd_runtime_directory, 'state'))
- check_output('systemctl start systemd-networkd')
- else:
- check_output('systemctl restart systemd-networkd')
+
+def stop_networkd(show_logs=True, remove_state_files=True):
+ if show_logs:
+ invocation_id = check_output('systemctl show systemd-networkd -p InvocationID --value')
+ check_output('systemctl stop systemd-networkd')
+ if show_logs:
+ print(check_output('journalctl _SYSTEMD_INVOCATION_ID=' + invocation_id))
+ if remove_state_files:
+ remove_networkd_state_files()
+
+def start_networkd(sleep_sec=0):
+ check_output('systemctl start systemd-networkd')
if sleep_sec > 0:
time.sleep(sleep_sec)
+def restart_networkd(sleep_sec=0, show_logs=True, remove_state_files=True):
+ stop_networkd(show_logs, remove_state_files)
+ start_networkd(sleep_sec)
+
def wait_online(links_with_operstate, timeout='20s', bool_any=False):
args = wait_online_cmd + [f'--timeout={timeout}'] + [f'--interface={link}' for link in links_with_operstate]
if bool_any:
def setUp(self):
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_glob(self):
copy_unit_to_networkd_unit_path('11-dummy.netdev', '11-dummy.network')
def setUp(self):
remove_fou_ports(self.fou_ports)
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_fou_ports(self.fou_ports)
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_dropin_and_name_conflict(self):
copy_unit_to_networkd_unit_path('10-dropin-test.netdev', '15-name-conflict-test.netdev')
def setUp(self):
remove_l2tp_tunnels(self.l2tp_tunnel_ids)
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_l2tp_tunnels(self.l2tp_tunnel_ids)
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
@expectedFailureIfModuleIsNotAvailable('l2tp_eth')
def test_l2tp_udp(self):
remove_routing_policy_rule_tables(self.routing_policy_rule_tables)
remove_routes(self.routes)
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_routing_policy_rule_tables(self.routing_policy_rule_tables)
remove_routes(self.routes)
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_address_static(self):
copy_unit_to_networkd_unit_path('25-address-static.network', '12-dummy.netdev')
for trial in range(3):
# Remove state files only first time
- start_networkd(0, remove_state_files=(trial == 0))
+ start_networkd()
wait_online(['test1:degraded', 'dummy98:degraded'])
time.sleep(1)
print(output)
self.assertRegex(output, '112: from 192.168.101.18 tos (?:0x08|throughput) iif dummy98 oif dummy98 lookup 8')
+ stop_networkd(remove_state_files=False)
+
@expectedFailureIfRoutingPolicyPortRangeIsNotAvailable()
def test_routing_policy_rule_port_range(self):
copy_unit_to_networkd_unit_path('25-fibrule-port-range.network', '11-dummy.netdev')
check_output('sysctl net.ipv6.conf.all.disable_ipv6=0')
check_output('sysctl net.ipv6.conf.default.disable_ipv6=0')
- start_networkd()
+ restart_networkd()
wait_online(['dummy98:routable'])
output = check_output('ip -4 address show dummy98')
def setUp(self):
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_bond_active_slave(self):
copy_unit_to_networkd_unit_path('23-active-slave.network', '23-bond199.network', '25-bond-active-backup-slave.netdev', '12-dummy.netdev')
def setUp(self):
remove_routing_policy_rule_tables(self.routing_policy_rule_tables)
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_routing_policy_rule_tables(self.routing_policy_rule_tables)
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_bridge_property(self):
copy_unit_to_networkd_unit_path('11-dummy.netdev', '12-dummy.netdev', '26-bridge.netdev',
def setUp(self):
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_lldp(self):
copy_unit_to_networkd_unit_path('23-emit-lldp.network', '24-lldp.network', '25-veth.netdev')
def setUp(self):
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_ipv6_prefix_delegation(self):
warn_about_firewalld()
def setUp(self):
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_dhcp_server(self):
warn_about_firewalld()
def setUp(self):
stop_dnsmasq(dnsmasq_pid_file)
remove_links(self.links)
+ stop_networkd(show_logs=False)
def tearDown(self):
stop_dnsmasq(dnsmasq_pid_file)
remove_log_file()
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
+ stop_networkd(show_logs=True)
def test_dhcp_client_ipv6_only(self):
copy_unit_to_networkd_unit_path('25-veth.netdev', 'dhcp-server-veth-peer.network', 'dhcp-client-ipv6-only.network')
print(output)
self.assertRegex(output, r'192.168.5.*')
- start_networkd()
+ restart_networkd()
wait_online(['veth-peer:routable'])
output = check_output('ip address show dev veth99 scope global')
# When networkd started, the links are already configured, so let's wait for 5 seconds
# the links to be re-configured.
- start_networkd(5)
+ restart_networkd(5)
wait_online(['veth99:routable', 'veth-peer:routable'])
output = check_output('ip -4 address show dev veth99 scope global')