Skip to content

Commit 430ea00

Browse files
committed
Simplify getting DUTs
With separate collection thread we can get rid of double loop. Signed-off-by: Daniel Madej <[email protected]>
1 parent 0be8b27 commit 430ea00

File tree

1 file changed

+14
-23
lines changed

1 file changed

+14
-23
lines changed

runnerd

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from common import ConfigFile, JournalFile, StatusFile, TestCase, TestEvent, JournalParser
99

1010
from pathlib import Path
11-
from queue import Queue, Empty
11+
from queue import Queue
1212
from setproctitle import setproctitle
1313
from subprocess import Popen, PIPE
1414
from tempfile import NamedTemporaryFile
@@ -26,7 +26,7 @@ import os
2626
import sys
2727
import time
2828

29-
log_format='%(asctime)s %(levelname)-8s %(message)s'
29+
log_format = '%(asctime)s %(levelname)-8s %(message)s'
3030

3131
logging.basicConfig(
3232
filename="runnerd.log",
@@ -154,7 +154,7 @@ class DutsManager:
154154
return
155155
configured_duts = self.duts_config.get('duts', [])
156156
if configured_duts is None:
157-
log.warning("Check DUTs config!")
157+
log.error("Cannot read DUTs - check DUTs config file!")
158158
return
159159
ip_list = [dut["ip"] for dut in self.duts_config["duts"]]
160160
for ip in self.duts.copy():
@@ -181,10 +181,9 @@ class DutsManager:
181181
log.debug("DUTs config reloaded")
182182

183183
def get_free_dut(self):
184-
with self.duts_lock:
185-
while True:
186-
# raise Empty if queue is empty
187-
dut = self.duts_queue.get(block=False)
184+
while True:
185+
dut = self.duts_queue.get()
186+
with self.duts_lock:
188187
if dut.ip in self.duts:
189188
self.duts_in_use.add(dut.ip)
190189
return dut
@@ -212,8 +211,8 @@ class DutQueue(Queue):
212211
super().put(dut, block, timeout)
213212

214213
def get(self, block=True, timeout=None) -> Dut:
214+
dut = super().get(block, timeout)
215215
with self.set_lock:
216-
dut = super().get(block, timeout)
217216
self.dut_set.remove(dut.ip)
218217
return dut
219218

@@ -345,21 +344,13 @@ class MasterRunner:
345344
log.debug("Looking for the next test...")
346345
test_event = self.test_manager.get_next_test()
347346
log.debug(f"Found test {test_event}")
348-
while True:
349-
if not self.duts_manager.duts_queue.qsize():
350-
continue
351-
log.debug("Looking for a free DUT...")
352-
try:
353-
dut = self.duts_manager.get_free_dut()
354-
except Empty:
355-
log.debug("No free DUTs at the moment! Waiting...")
356-
continue
357-
log.debug(f"Found DUT {dut.ip}")
358-
test_event['ip'] = dut.ip
359-
test_event['start-timestamp'] = time.time()
360-
self.test_manager.mark_started(test_event)
361-
dut.run_test(test_event, test_run_complete)
362-
break
347+
log.debug("Looking for a free DUT...")
348+
dut = self.duts_manager.get_free_dut()
349+
log.debug(f"Found DUT {dut.ip}")
350+
test_event['ip'] = dut.ip
351+
test_event['start-timestamp'] = time.time()
352+
self.test_manager.mark_started(test_event)
353+
dut.run_test(test_event, test_run_complete)
363354

364355

365356
class ScopeParser:

0 commit comments

Comments
 (0)