17
17
18
18
import re
19
19
import subprocess
20
+ import unittest
20
21
21
- from testlib import Error , MachineCase , wait
22
+ from machine import testvm
23
+ from testlib import Browser , Error , MachineCase , wait
22
24
23
25
24
- class NetworkHelpers :
26
+ class NetworkHelpers ( unittest . TestCase ) :
25
27
"""Mix-in class for tests that require network setup"""
28
+ browser : Browser
29
+ machine : testvm .Machine
26
30
27
- def add_veth (self , name , dhcp_cidr = None , dhcp_range = None ):
31
+ def add_veth (self , name : str , dhcp_cidr : str | None = None , dhcp_range : list [ str ] | None = None ):
28
32
"""Add a veth device that is manageable with NetworkManager
29
33
30
34
This is safe for @nondestructive tests, the interface gets cleaned up automatically.
@@ -53,7 +57,7 @@ def add_veth(self, name, dhcp_cidr=None, dhcp_range=None):
53
57
self .addCleanup (self .machine .execute , f"kill { server } ; rm -rf /run/dnsmasq" )
54
58
self .machine .execute ("if firewall-cmd --state >/dev/null 2>&1; then firewall-cmd --add-service=dhcp; fi" )
55
59
56
- def nm_activate_eth (self , iface ) :
60
+ def nm_activate_eth (self , iface : str ) -> None :
57
61
"""Create an NM connection for a given interface"""
58
62
59
63
m = self .machine
@@ -62,10 +66,10 @@ def nm_activate_eth(self, iface):
62
66
m .execute (f"nmcli con up { iface } ifname { iface } " )
63
67
self .addCleanup (m .execute , f"nmcli con delete { iface } " )
64
68
65
- def nm_checkpoints_disable (self ):
69
+ def nm_checkpoints_disable (self ) -> None :
66
70
self .browser .eval_js ("window.cockpit_tests_disable_checkpoints = true;" )
67
71
68
- def nm_checkpoints_enable (self , settle_time = 3.0 ):
72
+ def nm_checkpoints_enable (self , settle_time : float = 3.0 ) -> None :
69
73
self .browser .eval_js ("window.cockpit_tests_disable_checkpoints = false;" )
70
74
self .browser .eval_js (f"window.cockpit_tests_checkpoint_settle_time = { settle_time } ;" )
71
75
0 commit comments