From eb2d8b418c8ca2f0e7031bed7db8440b65c15d2c Mon Sep 17 00:00:00 2001 From: Inaky Perez-Gonzalez Date: Thu, 21 Apr 2016 12:43:51 -0700 Subject: [PATCH] testcases: add automation markup to samples/ Code in samples does not follow an standarized format for reporting success or operation failure -- thus we use markup (in file sample.tc) to specify what shall be found in the console to consider execution a success. There is a few functional code modifications that add/extend console messages so verification is possible or easier: - hello_world, synchronization: extend the success message to also print which core is running the testcase - pci_enum: print message on success. Change-Id: Idb6cea03adebe97d97854603f963f4e3d4cb856a Signed-off-by: Inaky Perez-Gonzalez --- .../cpp_synchronization/microkernel/sample.tc | 15 ++++++++ .../cpp_synchronization/nanokernel/sample.tc | 5 +++ samples/drivers/pci_enum/sample.tc | 5 +++ samples/drivers/pci_enum/src/pci_enum.c | 3 +- samples/drivers/spi_lsm9ds0/sample.tc | 5 +++ samples/drivers/w25q80bl/sample.tc | 18 ++++++++++ samples/hello_world/microkernel/sample.tc | 7 ++++ samples/hello_world/microkernel/src/main.c | 2 +- samples/hello_world/nanokernel/sample.tc | 4 +++ samples/hello_world/nanokernel/src/main.c | 2 +- samples/ipm/sample.tc | 35 +++++++++++++++++++ samples/kernel_event_logger/defaults.tc | 4 +++ .../kernel_event_logger/microkernel/sample.tc | 8 +++++ .../kernel_event_logger/nanokernel/sample.tc | 6 ++++ samples/net/loopback_test/sample.tc | 8 +++++ samples/net/test_15_4/sample.tc | 18 ++++++++++ samples/philosophers/microkernel/sample.tc | 22 ++++++++++++ samples/philosophers/nanokernel/sample.tc | 15 ++++++++ samples/shell/sample.tc | 13 +++++++ samples/synchronization/microkernel/sample.tc | 10 ++++++ .../synchronization/microkernel/src/main.c | 2 +- 21 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 samples/cpp_synchronization/microkernel/sample.tc create mode 100644 samples/cpp_synchronization/nanokernel/sample.tc create mode 100644 samples/drivers/pci_enum/sample.tc create mode 100644 samples/drivers/spi_lsm9ds0/sample.tc create mode 100644 samples/drivers/w25q80bl/sample.tc create mode 100644 samples/hello_world/microkernel/sample.tc create mode 100644 samples/hello_world/nanokernel/sample.tc create mode 100644 samples/ipm/sample.tc create mode 100644 samples/kernel_event_logger/defaults.tc create mode 100644 samples/kernel_event_logger/microkernel/sample.tc create mode 100644 samples/kernel_event_logger/nanokernel/sample.tc create mode 100644 samples/net/loopback_test/sample.tc create mode 100644 samples/net/test_15_4/sample.tc create mode 100644 samples/philosophers/microkernel/sample.tc create mode 100644 samples/philosophers/nanokernel/sample.tc create mode 100644 samples/shell/sample.tc create mode 100644 samples/synchronization/microkernel/sample.tc diff --git a/samples/cpp_synchronization/microkernel/sample.tc b/samples/cpp_synchronization/microkernel/sample.tc new file mode 100644 index 00000000000..95593c99dca --- /dev/null +++ b/samples/cpp_synchronization/microkernel/sample.tc @@ -0,0 +1,15 @@ +# @testcase dynamic +# d2000 have not enough RAM for this +# _ctb: there are no configs +# arduino_101_sss, quark_se_sss_ctb: task_arch.h not found -> micro not supported +# @targets \ +# board:(?!quark_d2000_crb) \ +# board:(?!quark_se_sss_ctb) \ +# board:(?!quark_se_sss_devboard) \ +# board:(?!quark_se_sss_dvp) \ +# board:(?!quark_se_sss_emu) \ +# board:(?!quark_se_ctb) \ +# board:(?!arduino_101_sss) \ +# +# @eval console-rx %(console)s:5 task_a: Hello World! +# @eval console-rx %(console)s:5 task_b: Hello World! diff --git a/samples/cpp_synchronization/nanokernel/sample.tc b/samples/cpp_synchronization/nanokernel/sample.tc new file mode 100644 index 00000000000..91a8ae2abe4 --- /dev/null +++ b/samples/cpp_synchronization/nanokernel/sample.tc @@ -0,0 +1,5 @@ +# @testcase dynamic +# +# @eval console-rx %(console)s:20 Create semaphore +# @eval console-rx %(console)s:20 main: Hello World! +# @eval console-rx %(console)s:20 fiber_entry: Hello World! diff --git a/samples/drivers/pci_enum/sample.tc b/samples/drivers/pci_enum/sample.tc new file mode 100644 index 00000000000..4f93166d4e8 --- /dev/null +++ b/samples/drivers/pci_enum/sample.tc @@ -0,0 +1,5 @@ +# @testcase dynamic +# @targets \ +# board:(galileo|qemu_x86|qemu_cortex_m3) +# +# @eval console-rx %(console)s:20 Enumeration complete on %(bsp)s diff --git a/samples/drivers/pci_enum/src/pci_enum.c b/samples/drivers/pci_enum/src/pci_enum.c index 6af98b435fb..865be349d61 100644 --- a/samples/drivers/pci_enum/src/pci_enum.c +++ b/samples/drivers/pci_enum/src/pci_enum.c @@ -59,7 +59,7 @@ void task_enum_pci(void) } pci_enumerate(); - + PRINT("Enumeration complete on %s", CONFIG_ARCH); done = 1; } @@ -68,6 +68,7 @@ void task_enum_pci(void) void main(void) { pci_enumerate(); + PRINT("Enumeration complete on %s", CONFIG_ARCH); } #endif /* CONFIG_MICROKERNEL */ diff --git a/samples/drivers/spi_lsm9ds0/sample.tc b/samples/drivers/spi_lsm9ds0/sample.tc new file mode 100644 index 00000000000..a502cee6fe7 --- /dev/null +++ b/samples/drivers/spi_lsm9ds0/sample.tc @@ -0,0 +1,5 @@ +# @testcase dynamic +# @targets \ +# board:(?!quark_se_sss_devboard) \ +# +# @eval console-rx %(console)s:15 LSM9DS0 Who Am I diff --git a/samples/drivers/w25q80bl/sample.tc b/samples/drivers/w25q80bl/sample.tc new file mode 100644 index 00000000000..0648194f0e3 --- /dev/null +++ b/samples/drivers/w25q80bl/sample.tc @@ -0,0 +1,18 @@ +# @testcase dynamic + +# @targets \ +# board:(?!arduino_101) \ +# board:(?!arduino_101_sss) \ +# board:(?!arduino_due) \ +# board:(?!basic_cortex_m3) \ +# board:(?!basic_minuteia) \ +# board:(?!frdm_k64f) \ +# board:(?!galileo) \ +# board:(?!minnowboard) \ +# board:(?!qemu_cortex_m3) \ +# board:(?!qemu_x86) \ +# board:(?!quark_d2000_crb) \ +# board:(?!quark_se_devboard) \ +# board:(?!quark_se_sss_devboard) \ +# +# @eval console-rx %(console)s:15 SPI Flash Manufacturer [0-9a-zA-Z]+ Device Id [0-9a-zA-Z]+ diff --git a/samples/hello_world/microkernel/sample.tc b/samples/hello_world/microkernel/sample.tc new file mode 100644 index 00000000000..c0922d18ac3 --- /dev/null +++ b/samples/hello_world/microkernel/sample.tc @@ -0,0 +1,7 @@ +# @testcase dynamic +# @tags kernel:micro +# @targets \ +# board:(?!arduino_101_sss) \ +# board:(?!quark_se_sss_devboard) +# +# @eval console-rx %(console)s:5 Hello World! %(bsp)s diff --git a/samples/hello_world/microkernel/src/main.c b/samples/hello_world/microkernel/src/main.c index e138e4d2a8f..744251cf4d1 100644 --- a/samples/hello_world/microkernel/src/main.c +++ b/samples/hello_world/microkernel/src/main.c @@ -26,5 +26,5 @@ void main(void) { - PRINT("Hello World!\n"); + PRINT("Hello World! %s\n", CONFIG_ARCH); } diff --git a/samples/hello_world/nanokernel/sample.tc b/samples/hello_world/nanokernel/sample.tc new file mode 100644 index 00000000000..9bb4385ddf5 --- /dev/null +++ b/samples/hello_world/nanokernel/sample.tc @@ -0,0 +1,4 @@ +# @testcase dynamic +# @tags kernel:nano +# +# @eval console-rx %(console)s:15 Hello World! %(bsp)s diff --git a/samples/hello_world/nanokernel/src/main.c b/samples/hello_world/nanokernel/src/main.c index 96655b376d1..2dd208dff4e 100644 --- a/samples/hello_world/nanokernel/src/main.c +++ b/samples/hello_world/nanokernel/src/main.c @@ -34,6 +34,6 @@ void main(void) { - PRINT("Hello World!\n"); + PRINT("Hello World! %s\n", CONFIG_ARCH); } diff --git a/samples/ipm/sample.tc b/samples/ipm/sample.tc new file mode 100644 index 00000000000..5ebaadecc51 --- /dev/null +++ b/samples/ipm/sample.tc @@ -0,0 +1,35 @@ +# @testcase dynamic defaults=none +# @targets bsp_models:x86\+arc +# +# @build [ bsp == "x86" ] \ +# make -j -C %(srcdir)s/ipm_demo_lmt CONFIG_KERNEL_BIN_NAME=zephyr \ +# BOARD=%(board)s O=outdir-%(target)s-%(bsp_model)s-%(board)s +# @build [ bsp == "arc" ] \ +# make -j -C %(srcdir)s/ipm_demo_arc CONFIG_KERNEL_BIN_NAME=zephyr \ +# BOARD=%(board)s O=outdir-%(target)s-%(bsp_model)s-%(board)s +# +# @clean rm -rf %(srcdir)s/ipm_demo_*/outdir-%(target)s-%(bsp_model)s-* +# +# @images [ bsp == "x86" ] \ +# kernel-%(bsp)s:%(srcdir)s/ipm_demo_lmt/outdir-%(target)s-%(bsp_model)s-%(board)s/%(kernelname)s +# +# @images [ bsp == "arc" ] \ +# kernel-%(bsp)s:%(srcdir)s/ipm_demo_arc/outdir-%(target)s-%(bsp_model)s-%(board)s/%(kernelname)s +# +# +# Maybe we should switch to: Arduino has a hard time recovering some +# times, so we power cycle it instead of resetting +# @eval [ target == "arduino101" ] target-power-cycle one-shot wait=5 +# @eval [ target != "arduino101" ] target-reset one-shot +# +# ^eval [ bsp == 'arc' ] console-rx ::fail "unexpected data payload" +# ^eval [ bsp == 'arc' ] console-rx ::fail "expected [0-9]+ got [0-9]+" +# @eval [ bsp == 'arc' ] console-rx :15 counters: [0-9]+ [0-9]+ [0-9]+ +# @eval [ bsp == 'arc' ] console-rx :15 Hello from ARC + +# @eval [ bsp == 'x86' ] console-rx :15 Hello from lakemont! +# @eval [ bsp == 'x86' ] console-rx :15 === app started === +# @eval [ bsp == 'x86' ] console-rx :15 pinging arc for counter status +# @eval [ bsp == 'x86' ] console-rx :15 ARC (is (halted|sleeping|running)|status:) +# @eval [ bsp == 'x86' ] console-rx :15 mailbox status: [0-9a-f]+ mask [0-9a-f]+ +# @eval [ bsp == 'x86' ] console-rx :15 sending messages for IPM device diff --git a/samples/kernel_event_logger/defaults.tc b/samples/kernel_event_logger/defaults.tc new file mode 100644 index 00000000000..fc90d178310 --- /dev/null +++ b/samples/kernel_event_logger/defaults.tc @@ -0,0 +1,4 @@ +# +# this is a very lousy test on the output, we need to look for more precise +# information that informs that this is working. +# @eval console-rx %(console)s:10 System tick count : [0-9]+ diff --git a/samples/kernel_event_logger/microkernel/sample.tc b/samples/kernel_event_logger/microkernel/sample.tc new file mode 100644 index 00000000000..3a13815b3c3 --- /dev/null +++ b/samples/kernel_event_logger/microkernel/sample.tc @@ -0,0 +1,8 @@ +# @testcase dynamic +# @targets \ +# board:(?!arduino_101_sss) \ +# board:(?!quark_se_sss_devboard) \ +# board:(?!quark_se_sss_devboard) \ +# board:(?!arduino_101_sss) \ +# board:(?!quark_d2000_crb) \ +# diff --git a/samples/kernel_event_logger/nanokernel/sample.tc b/samples/kernel_event_logger/nanokernel/sample.tc new file mode 100644 index 00000000000..74bad9bf4a4 --- /dev/null +++ b/samples/kernel_event_logger/nanokernel/sample.tc @@ -0,0 +1,6 @@ +# @testcase dynamic + +# @targets \ +# board:(?!arduino_101_sss) \ +# board:(?!quark_d2000_crb) \ +# board:(?!quark_se_sss_devboard) \ diff --git a/samples/net/loopback_test/sample.tc b/samples/net/loopback_test/sample.tc new file mode 100644 index 00000000000..dcb3fe2ba28 --- /dev/null +++ b/samples/net/loopback_test/sample.tc @@ -0,0 +1,8 @@ +# @testcase dynamic +# No configuration? +# @targets \ +# board:(?!quark_se_ctb) \ +# board:(?!quark_d2000_crb) \ +# +# @eval console-rx %(console)s:15 received [0-9]+ bytes +# @eval console-rx %(console)s:15 sent [0-9]+ bytes diff --git a/samples/net/test_15_4/sample.tc b/samples/net/test_15_4/sample.tc new file mode 100644 index 00000000000..a936294ae4f --- /dev/null +++ b/samples/net/test_15_4/sample.tc @@ -0,0 +1,18 @@ +# @testcase dynamic + +# @targets \ +# board:(?!arduino_101) \ +# board:(?!arduino_101_sss) \ +# board:(?!arduino_due) \ +# board:(?!basic_minuteia) \ +# board:(?!basic_cortex_m3) \ +# board:(?!frdm_k64f) \ +# board:(?!galileo) \ +# board:(?!minnowboard) \ +# board:(?!qemu_cortex_m3) \ +# board:(?!qemu_x86) \ +# board:(?!quark_d2000_crb) \ +# board:(?!quark_se_sss_devboard) \ +# +# @eval console-rx %(console)s:15 received [0-9]+ bytes +# @eval console-rx %(console)s:15 sent [0-9]+ bytes diff --git a/samples/philosophers/microkernel/sample.tc b/samples/philosophers/microkernel/sample.tc new file mode 100644 index 00000000000..a07fb2e0b62 --- /dev/null +++ b/samples/philosophers/microkernel/sample.tc @@ -0,0 +1,22 @@ +# @testcase dynamic +# @tags kernel:micro +# +# quark_d200_crb -> RAM too small +# +# @targets \ +# board:(?!quark_d2000_crb) \ +# board:(?!arduino_101_sss) \ +# board:(?!quark_se_sss_devboard) \ +# +# @eval console-rx %(console)s:10 Philosopher 0 EATING +# @eval console-rx %(console)s:10 Philosopher 0 THINKING +# @eval console-rx %(console)s:10 Philosopher 1 EATING +# @eval console-rx %(console)s:10 Philosopher 1 THINKING +# @eval console-rx %(console)s:10 Philosopher 2 EATING +# @eval console-rx %(console)s:10 Philosopher 2 THINKING +# @eval console-rx %(console)s:10 Philosopher 3 EATING +# @eval console-rx %(console)s:10 Philosopher 3 THINKING +# @eval console-rx %(console)s:10 Philosopher 4 EATING +# @eval console-rx %(console)s:10 Philosopher 4 THINKING +# @eval console-rx %(console)s:10 Philosopher 5 EATING +# @eval console-rx %(console)s:10 Philosopher 5 THINKING diff --git a/samples/philosophers/nanokernel/sample.tc b/samples/philosophers/nanokernel/sample.tc new file mode 100644 index 00000000000..0b73b90a316 --- /dev/null +++ b/samples/philosophers/nanokernel/sample.tc @@ -0,0 +1,15 @@ +# @testcase dynamic +# @tags kernel:nano +# +# @eval console-rx %(console)s:10 Philosopher 0 EATING +# @eval console-rx %(console)s:10 Philosopher 0 THINKING +# @eval console-rx %(console)s:10 Philosopher 1 EATING +# @eval console-rx %(console)s:10 Philosopher 1 THINKING +# @eval console-rx %(console)s:10 Philosopher 2 EATING +# @eval console-rx %(console)s:10 Philosopher 2 THINKING +# @eval console-rx %(console)s:10 Philosopher 3 EATING +# @eval console-rx %(console)s:10 Philosopher 3 THINKING +# @eval console-rx %(console)s:10 Philosopher 4 EATING +# @eval console-rx %(console)s:10 Philosopher 4 THINKING +# @eval console-rx %(console)s:10 Philosopher 5 EATING +# @eval console-rx %(console)s:10 Philosopher 5 THINKING diff --git a/samples/shell/sample.tc b/samples/shell/sample.tc new file mode 100644 index 00000000000..89d6097ea01 --- /dev/null +++ b/samples/shell/sample.tc @@ -0,0 +1,13 @@ +# @testcase dynamic +# +# @targets \ +# board:(?!arduino_101_sss) \ +# board:(?!quark_se_sss_devboard) \ +# +# @eval console-rx %(console)s:15 shell> +# @eval console-tx %(console)s:1 ping\r\n +# @eval console-rx %(console)s:15 pong +# @eval console-tx %(console)s:1 ticks\r\n +# @eval console-rx %(console)s:15 ticks: +# @eval console-tx %(console)s:1 highticks\r\n +# @eval console-rx %(console)s:15 highticks: diff --git a/samples/synchronization/microkernel/sample.tc b/samples/synchronization/microkernel/sample.tc new file mode 100644 index 00000000000..f82337ac5a3 --- /dev/null +++ b/samples/synchronization/microkernel/sample.tc @@ -0,0 +1,10 @@ +# @testcase dynamic + +# @targets \ +# board:(?!arduino_101_sss) \ +# board:(?!minnowboard) \ +# board:(?!quark_d2000_crb) \ +# board:(?!quark_se_sss_devboard) \ +# +# @eval console-rx %(console)s:10 taskA: Hello World from %(bsp)s! +# @eval console-rx %(console)s:10 taskB: Hello World from %(bsp)s! diff --git a/samples/synchronization/microkernel/src/main.c b/samples/synchronization/microkernel/src/main.c index cfaf8d75f89..fa03797318d 100644 --- a/samples/synchronization/microkernel/src/main.c +++ b/samples/synchronization/microkernel/src/main.c @@ -51,7 +51,7 @@ void helloLoop(const char *taskname, ksem_t mySem, ksem_t otherSem) task_sem_take(mySem, TICKS_UNLIMITED); /* say "hello" */ - PRINT("%s: Hello World!\n", taskname); + PRINT("%s: Hello World from %s!\n", taskname, CONFIG_ARCH); /* wait a while, then let other task have a turn */ task_sleep(SLEEPTICKS);