@@ -24,11 +24,12 @@ class ControllerCase(unittest.TestCase):
24
24
def setUp (self ):
25
25
self .device_db = DeviceDB (os .path .join (artiq_root , "device_db.pyon" ))
26
26
self .device_mgr = DeviceManager (self .device_db )
27
- self .addCleanup (self .device_mgr .close_devices )
28
27
self .controllers = {}
29
28
30
29
def tearDown (self ):
31
- self .stop_controllers ()
30
+ self .device_mgr .close_devices ()
31
+ for name in list (self .controllers ):
32
+ self .stop_controller (name )
32
33
33
34
def start_controller (self , name , sleep = 1 ):
34
35
try :
@@ -42,17 +43,15 @@ def start_controller(self, name, sleep=1):
42
43
self .controllers [name ] = entry , proc
43
44
time .sleep (sleep )
44
45
45
- def stop_controllers (self ):
46
- for entry , proc in self .controllers .values ():
47
- proc .terminate ()
48
- for name in list (self .controllers ):
49
- entry , proc = self .controllers [name ]
50
- try :
51
- proc .wait (entry .get ("term_timeout" ))
52
- except TimeoutError :
53
- proc .kill ()
54
- proc .wait (entry .get ("term_timeout" ))
55
- del self .controllers [name ]
46
+ def stop_controller (self , name , default_timeout = 1 ):
47
+ entry , proc = self .controllers [name ]
48
+ t = entry .get ("term_timeout" , default_timeout )
49
+ try :
50
+ proc .wait (t )
51
+ except subprocess .TimeoutExpired :
52
+ proc .kill ()
53
+ proc .wait (t )
54
+ del self .controllers [name ]
56
55
57
56
58
57
@unittest .skipUnless (artiq_root , "no ARTIQ_ROOT" )
0 commit comments