From 87fed42677ebc2daaefd461ffba46e11136ad316 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Thu, 7 Jan 2021 15:39:13 +0200 Subject: [PATCH 1/2] boards: ehl_crb: Add coverage support for the board Allow to include coverage support for ehl_crb board. Signed-off-by: Andrei Emeltchenko --- boards/x86/ehl_crb/Kconfig.board | 1 + 1 file changed, 1 insertion(+) diff --git a/boards/x86/ehl_crb/Kconfig.board b/boards/x86/ehl_crb/Kconfig.board index bdd9f7d76ae5b..e90d582a08534 100644 --- a/boards/x86/ehl_crb/Kconfig.board +++ b/boards/x86/ehl_crb/Kconfig.board @@ -5,6 +5,7 @@ config BOARD_EHL_CRB bool "Elkhart Lake CRB" depends on SOC_ELKHART_LAKE select X86_64 + select HAS_COVERAGE_SUPPORT config BOARD_EHL_CRB_SBL bool "Elkhart Lake CRB (with Slim Bootloader)" From ba712f659afde221902af5651d534cadff241aa0 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Tue, 12 Jan 2021 09:56:32 +0200 Subject: [PATCH 2/2] twister: Include coverage support for device testing Include coverage support for device testing. It works by switching capture_coverage to True (as it would meet coverage data start pattern). Then we continue tot read coverage data until we get coverage data end pattern. Otherwise, after receiving test result pattern, we close serial console and do not get time to find start coverage data pattern. Signed-off-by: Andrei Emeltchenko --- scripts/pylib/twister/twisterlib.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/scripts/pylib/twister/twisterlib.py b/scripts/pylib/twister/twisterlib.py index cf5c93247186a..e57bfabbc7070 100644 --- a/scripts/pylib/twister/twisterlib.py +++ b/scripts/pylib/twister/twisterlib.py @@ -604,6 +604,14 @@ def monitor_serial(self, ser, halt_fileno, harness): ser_fileno = ser.fileno() readlist = [halt_fileno, ser_fileno] + if self.coverage: + # Set capture_coverage to True to indicate that right after + # test results we should get coverage data, otherwise we exit + # from the test. + harness.capture_coverage = True + + ser.flush() + while ser.isOpen(): readable, _, _ = select.select(readlist, [], [], self.timeout) @@ -634,8 +642,9 @@ def monitor_serial(self, ser, halt_fileno, harness): harness.handle(sl.rstrip()) if harness.state: - ser.close() - break + if not harness.capture_coverage: + ser.close() + break log_out_fp.close() @@ -2202,6 +2211,7 @@ def setup_handler(self): instance.handler.call_make_run = True elif self.device_testing: instance.handler = DeviceHandler(instance, "device") + instance.handler.coverage = self.coverage elif instance.platform.simulation == "nsim": if find_executable("nsimdrv"): instance.handler = BinaryHandler(instance, "nsim")