Skip to content

Commit e61baec

Browse files
committed
ui: make parallel ui less interactive
User interface is quite difficult to track when we are running kirk in a non-interactive mode (for example, via serial console). The idea is to simplify the overall ui by printing at the beginning all tests which will run in parallel. In this way we will reduce noise in the interface, especially in the non-interactive mode which is our main target. Fixes: #58 Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
1 parent 402bb10 commit e61baec

File tree

1 file changed

+25
-28
lines changed

1 file changed

+25
-28
lines changed

libkirk/ui.py

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -374,31 +374,16 @@ def __init__(self, no_colors: bool = False) -> None:
374374
self._kernel_panic = False
375375
self._kernel_tainted = None
376376
self._timed_out = False
377-
self._running = []
377+
self._pl_total = 0
378+
self._pl_done = 0
378379

379380
libkirk.events.register("sut_not_responding", self.sut_not_responding)
380381
libkirk.events.register("kernel_panic", self.kernel_panic)
381382
libkirk.events.register("kernel_tainted", self.kernel_tainted)
383+
libkirk.events.register("suite_started", self.print_parallel)
382384
libkirk.events.register("test_timed_out", self.test_timed_out)
383-
libkirk.events.register("test_started", self.test_started)
384385
libkirk.events.register("test_completed", self.test_completed)
385386

386-
async def _refresh_running_tests(self) -> None:
387-
tests_num = len(self._running)
388-
389-
await self._print(" " * 64, end='\r')
390-
await self._print("")
391-
await self._print(f"*** {tests_num} background test(s) ***")
392-
393-
for test_name in self._running:
394-
await self._print(f"- {test_name}", end='')
395-
await self._print(" " * 32)
396-
397-
# move back at the very beginning so the next time
398-
# we will override current running tests status
399-
for _ in range(tests_num + 2):
400-
await self._print(self.LINE_UP, end='')
401-
402387
async def sut_not_responding(self) -> None:
403388
self._sut_not_responding = True
404389

@@ -411,12 +396,29 @@ async def kernel_tainted(self, message: str) -> None:
411396
async def test_timed_out(self, _: Test, timeout: int) -> None:
412397
self._timed_out = True
413398

414-
async def test_started(self, test: Test) -> None:
415-
self._running.append(test.name)
416-
await self._refresh_running_tests()
399+
async def print_parallel(self, suite: Suite) -> None:
400+
msg = []
401+
402+
for test in suite.tests:
403+
if not test.parallelizable:
404+
continue
405+
406+
self._pl_total += 1
407+
msg.append(f"- {test.name}")
408+
409+
if msg:
410+
await self._print("Following tests will run in parallel:")
411+
await self._print("\n".join(msg), end="\n\n")
417412

418413
async def test_completed(self, results: TestResults) -> None:
419-
await self._print(f"{results.test.name}: ", end="")
414+
if results.test.parallelizable:
415+
self._pl_done += 1
416+
417+
await self._print(
418+
f"{results.test.name} ({self._pl_done}/{self._pl_total}): ",
419+
end="")
420+
else:
421+
await self._print(f"{results.test.name}: ", end="")
420422

421423
if self._timed_out:
422424
await self._print("timed out", color=self.RED)
@@ -447,14 +449,9 @@ async def test_completed(self, results: TestResults) -> None:
447449
await self._print("tainted", color=self.YELLOW, end="")
448450

449451
uf_time = self._user_friendly_duration(results.exec_time)
450-
await self._print(f" ({uf_time})", end='')
451-
# cleanup message that was there before
452-
await self._print(" " * 16)
452+
await self._print(f" ({uf_time})")
453453

454454
self._sut_not_responding = False
455455
self._kernel_panic = False
456456
self._kernel_tainted = None
457457
self._timed_out = False
458-
459-
self._running.remove(results.test.name)
460-
await self._refresh_running_tests()

0 commit comments

Comments
 (0)