From b820f82dac96ccb4b223a55488d9ffb9e1177358 Mon Sep 17 00:00:00 2001 From: Kevin Hilman Date: Mon, 19 Nov 2018 11:29:12 -0800 Subject: meta-agl-bsp: ptest-runner: v2.2 and LAVA support Upgrade ptest-runner to v2.2 (first 6 patches), and add the WIP support for LAVA signal (patch 7). From branch: https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=timo/lava-ptest-runner2 Commit: https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=timo/lava-ptest-runner2&id=11b29ce444610a07067a89b38e9e85c2162bbf67 Change-Id: Ic4ee5e3a9ab796fe7ccd1810b31e582370f99a25 Signed-off-by: Kevin Hilman --- ...fer-monotonic-clock-to-calculate-elapsed-.patch | 72 +++++++++++ ...ile-libcheck-now-requires-to-link-subunit.patch | 29 +++++ ...-to-avoid-load-run-twice-a-run_ptest-scri.patch | 137 ++++++++++++++++++++ ...0004-README.md-Update-to-my-current-email.patch | 29 +++++ ...realpath-to-get-the-actual-directory-of-p.patch | 42 ++++++ ...option-e-to-exclude-certain-tests-for-exe.patch | 123 ++++++++++++++++++ .../0007-WIP-Initial-LAVA-support.patch | 144 +++++++++++++++++++++ .../ptest-runner/ptest-runner_2.1.bbappend | 4 + 8 files changed, 580 insertions(+) create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0001-utils.c-Prefer-monotonic-clock-to-calculate-elapsed-.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0002-Makefile-libcheck-now-requires-to-link-subunit.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0004-README.md-Update-to-my-current-email.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0005-main.c-Use-realpath-to-get-the-actual-directory-of-p.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0006-main.c-Add-option-e-to-exclude-certain-tests-for-exe.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch create mode 100644 meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.1.bbappend (limited to 'meta-agl-bsp') diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0001-utils.c-Prefer-monotonic-clock-to-calculate-elapsed-.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0001-utils.c-Prefer-monotonic-clock-to-calculate-elapsed-.patch new file mode 100644 index 000000000..6ca593be5 --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0001-utils.c-Prefer-monotonic-clock-to-calculate-elapsed-.patch @@ -0,0 +1,72 @@ +From 41b7f4814d39c1930b1fcf0be2e247a73546fb80 Mon Sep 17 00:00:00 2001 +From: Jeffrey Pautler +Date: Tue, 31 Oct 2017 14:38:39 -0500 +Subject: [PATCH 1/7] utils.c: Prefer monotonic clock to calculate elapsed time + +The current implementation uses the system clock to calculate how long +a ptest has been running with no output. If a ptest changes the system +clock as part of the test, that can cause the current implementation +to falsely trigger a timeout or miss an actual timeout. It is +preferrable to use a monotonic clock for calculating elapsed time in +order to avoid these issues. + +This change tries to use the monotonic clock first and falls back to +the realtime clock if the monotonic clock is not supported. + +Signed-off-by: Jeffrey Pautler +--- + utils.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +diff --git a/utils.c b/utils.c +index 6d653887e9e4..933ecedf57e8 100644 +--- a/utils.c ++++ b/utils.c +@@ -257,7 +257,8 @@ wait_child(const char *ptest_dir, const char *run_ptest, pid_t pid, + int timeout, int *fds, FILE **fps) + { + struct pollfd pfds[2]; +- time_t sentinel; ++ struct timespec sentinel; ++ clockid_t clock = CLOCK_MONOTONIC; + int r; + + int timeouted = 0; +@@ -269,7 +270,11 @@ wait_child(const char *ptest_dir, const char *run_ptest, pid_t pid, + pfds[1].fd = fds[1]; + pfds[1].events = POLLIN; + +- sentinel = time(NULL); ++ if (clock_gettime(clock, &sentinel) == -1) { ++ clock = CLOCK_REALTIME; ++ clock_gettime(clock, &sentinel); ++ } ++ + while (1) { + waitflags = WNOHANG; + +@@ -288,11 +293,16 @@ wait_child(const char *ptest_dir, const char *run_ptest, pid_t pid, + fwrite(buf, n, 1, fps[1]); + } + +- sentinel = time(NULL); +- } else if (timeout >= 0 && ((time(NULL) - sentinel) > timeout)) { +- timeouted = 1; +- kill(pid, SIGKILL); +- waitflags = 0; ++ clock_gettime(clock, &sentinel); ++ } else if (timeout >= 0) { ++ struct timespec time; ++ ++ clock_gettime(clock, &time); ++ if ((time.tv_sec - sentinel.tv_sec) > timeout) { ++ timeouted = 1; ++ kill(pid, SIGKILL); ++ waitflags = 0; ++ } + } + + if (waitpid(pid, &status, waitflags) == pid) +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0002-Makefile-libcheck-now-requires-to-link-subunit.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0002-Makefile-libcheck-now-requires-to-link-subunit.patch new file mode 100644 index 000000000..4ada99422 --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0002-Makefile-libcheck-now-requires-to-link-subunit.patch @@ -0,0 +1,29 @@ +From 4f6d6c5e3f2f181e3cc380a76e635e7c34d3c5d1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= +Date: Thu, 7 Dec 2017 17:42:44 -0600 +Subject: [PATCH 2/7] Makefile: libcheck now requires to link subunit +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Aníbal Limón +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 434b89f34688..1bde7beff9d1 100644 +--- a/Makefile ++++ b/Makefile +@@ -22,7 +22,7 @@ TEST_SOURCES=tests/main.c tests/ptest_list.c tests/utils.c $(BASE_SOURCES) + TEST_OBJECTS=$(TEST_SOURCES:.c=.o) + TEST_EXECUTABLE=ptest-runner-test + TEST_LDFLAGS=-lm -lrt -lpthread +-TEST_LIBSTATIC=-lcheck ++TEST_LIBSTATIC=-lcheck -lsubunit + + TEST_DATA=$(shell echo `pwd`/tests/data) + +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch new file mode 100644 index 000000000..47957333d --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch @@ -0,0 +1,137 @@ +From 0e566f65fa31eaa5208d4a17413c7a4aad7eade5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= +Date: Thu, 7 Dec 2017 17:42:45 -0600 +Subject: [PATCH 3/7] Add support to avoid load/run twice a run_ptest script +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In some ptest packages exists symlink in the ptest directory causing +to load/run twice the same ptest, + +For example in perl5: + +/usr/lib/perl -> /usr/lib/perl5 + +Signed-off-by: Aníbal Limón +--- + ptest_list.c | 40 ++++++++++++++++++++++++++++++++++++++++ + ptest_list.h | 3 +++ + tests/data/python3 | 1 + + tests/utils.c | 1 + + utils.c | 6 ++++++ + 5 files changed, 51 insertions(+) + create mode 120000 tests/data/python3 + +diff --git a/ptest_list.c b/ptest_list.c +index 2e1aa305752d..3e393d5fabe2 100644 +--- a/ptest_list.c ++++ b/ptest_list.c +@@ -110,6 +110,46 @@ ptest_list_search(struct ptest_list *head, char *ptest) + return q; + } + ++ ++struct ptest_list * ++ptest_list_search_by_file(struct ptest_list *head, char *run_ptest, struct stat st_buf) ++{ ++ struct ptest_list *q = NULL; ++ struct ptest_list *p; ++ struct stat st_buf_p; ++ ++ VALIDATE_PTR_RNULL(head); ++ VALIDATE_PTR_RNULL(run_ptest); ++ ++ for (p = head; p != NULL; p = p->next) { ++ if (p->ptest == NULL) ++ continue; ++ ++ if (stat(p->run_ptest, &st_buf_p) == -1) ++ continue; ++ ++ if (strcmp(p->run_ptest, run_ptest) == 0) { ++ q = p; ++ break; ++ } ++ ++ /* * ++ * In some ptest packages exists symlink in the ptest directory ++ * causing to load/run twice the same ptest, ++ * ++ * For example in perl5: ++ * /usr/lib/perl -> /usr/lib/perl5 ++ * */ ++ if (st_buf.st_dev == st_buf_p.st_dev && ++ st_buf.st_ino == st_buf_p.st_ino) { ++ q = p; ++ break; ++ } ++ } ++ ++ return q; ++} ++ + struct ptest_list * + ptest_list_add(struct ptest_list *head, char *ptest, char *run_ptest) + { +diff --git a/ptest_list.h b/ptest_list.h +index 8b394853c25b..03d75390a51d 100644 +--- a/ptest_list.h ++++ b/ptest_list.h +@@ -28,6 +28,8 @@ + #define PTEST_LIST_ITERATE_START(head, p) for (p = head->next; p != NULL; p = p->next) { + #define PTEST_LIST_ITERATE_END } + ++#include ++ + struct ptest_list { + char *ptest; + char *run_ptest; +@@ -42,6 +44,7 @@ extern int ptest_list_free_all(struct ptest_list *); + + extern int ptest_list_length(struct ptest_list *); + extern struct ptest_list *ptest_list_search(struct ptest_list *, char *); ++extern struct ptest_list *ptest_list_search_by_file(struct ptest_list *, char *, struct stat); + extern struct ptest_list *ptest_list_add(struct ptest_list *, char *, char *); + extern struct ptest_list *ptest_list_remove(struct ptest_list *, char *, int); + +diff --git a/tests/data/python3 b/tests/data/python3 +new file mode 120000 +index 000000000000..d8654aa0e2f2 +--- /dev/null ++++ b/tests/data/python3 +@@ -0,0 +1 @@ ++python +\ No newline at end of file +diff --git a/tests/utils.c b/tests/utils.c +index ecf3e8af9a81..cf093793c4f2 100644 +--- a/tests/utils.c ++++ b/tests/utils.c +@@ -48,6 +48,7 @@ static int ptests_found_length = 6; + static char *ptests_not_found[] = { + "busybox", + "perl", ++ "python3", + NULL, + }; + +diff --git a/utils.c b/utils.c +index 933ecedf57e8..ed2eff7900c1 100644 +--- a/utils.c ++++ b/utils.c +@@ -143,6 +143,12 @@ get_available_ptests(const char *dir) + continue; + } + ++ if (ptest_list_search_by_file(head, run_ptest, st_buf)) { ++ free(run_ptest); ++ free(d_name); ++ continue; ++ } ++ + struct ptest_list *p = ptest_list_add(head, + d_name, run_ptest); + CHECK_ALLOCATION(p, sizeof(struct ptest_list *), 0); +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0004-README.md-Update-to-my-current-email.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0004-README.md-Update-to-my-current-email.patch new file mode 100644 index 000000000..dbfe648cf --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0004-README.md-Update-to-my-current-email.patch @@ -0,0 +1,29 @@ +From 16413d71cc06b02a6d859c35a017cc49b88283f7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= +Date: Thu, 7 Dec 2017 17:42:46 -0600 +Subject: [PATCH 4/7] README.md: Update to my current email +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Aníbal Limón +--- + README.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/README.md b/README.md +index fedab04b7f00..22b36a4b7bed 100644 +--- a/README.md ++++ b/README.md +@@ -50,7 +50,7 @@ $ mtrace ./ptest-runner $(MALLOC_TRACE) + + For contribute please send a patch with subject prefix "[ptest-runner]" to + yocto@yoctoproject.org and cc the current maintainer that is Aníbal Limón +-. ++. + + ## Links + +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0005-main.c-Use-realpath-to-get-the-actual-directory-of-p.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0005-main.c-Use-realpath-to-get-the-actual-directory-of-p.patch new file mode 100644 index 000000000..cb9e20a32 --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0005-main.c-Use-realpath-to-get-the-actual-directory-of-p.patch @@ -0,0 +1,42 @@ +From 5bd94a93c89978c5e729db86b86b49919cd3b523 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= +Date: Wed, 25 Apr 2018 12:05:29 -0500 +Subject: [PATCH 5/7] main.c: Use realpath to get the actual directory of + ptests +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix usage of relative paths in -d argument. + +$ ./ptest-runner -d ./tests/data + +Signed-off-by: Aníbal Limón +--- + main.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/main.c b/main.c +index 505829cdad58..593aff1a1956 100644 +--- a/main.c ++++ b/main.c +@@ -19,6 +19,7 @@ + * Aníbal Limón + */ + ++#include + #include + #include + #include +@@ -70,7 +71,7 @@ main(int argc, char *argv[]) + switch (opt) { + case 'd': + free(opts.directory); +- opts.directory = strdup(optarg); ++ opts.directory = realpath(optarg, NULL); + CHECK_ALLOCATION(opts.directory, 1, 1); + break; + case 'l': +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0006-main.c-Add-option-e-to-exclude-certain-tests-for-exe.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0006-main.c-Add-option-e-to-exclude-certain-tests-for-exe.patch new file mode 100644 index 000000000..7a4de868c --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0006-main.c-Add-option-e-to-exclude-certain-tests-for-exe.patch @@ -0,0 +1,123 @@ +From 49956f65bb53ea2a2c1b394e5e59ffdfcdcc490f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= +Date: Wed, 25 Apr 2018 11:55:03 -0500 +Subject: [PATCH 6/7] main.c: Add option (-e) to exclude certain tests for + execution +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +You can specify a set of ptests to be excluded, it will not fail +if some ptest excluded isn't found in the list of execution. + +$ ./ptest-runner -e "hang glibc" -d tests/data + +Signed-off-by: Aníbal Limón +--- + main.c | 38 +++++++++++++++++++++++++++++++++++--- + utils.h | 1 + + 2 files changed, 36 insertions(+), 3 deletions(-) + +diff --git a/main.c b/main.c +index 593aff1a1956..83600b7d1b31 100644 +--- a/main.c ++++ b/main.c +@@ -19,6 +19,7 @@ + * Aníbal Limón + */ + ++#include + #include + #include + #include +@@ -42,8 +43,8 @@ + static inline void + print_usage(FILE *stream, char *progname) + { +- fprintf(stream, "Usage: %s [-d directory] [-l list] [-t timeout] [-x xml-filename]" +- " [-h] [ptest1 ptest2 ...]\n", progname); ++ fprintf(stream, "Usage: %s [-d directory] [-e exclude] [-l list] [-t timeout]" ++ " [-x xml-filename] [-h] [ptest1 ptest2 ...]\n", progname); + } + + int +@@ -53,6 +54,8 @@ main(int argc, char *argv[]) + int ptest_num = 0; + int i; + int rc; ++ int ptest_exclude_num = 0; ++ char *c, *tok; + + #ifdef MEMCHECK + mtrace(); +@@ -62,18 +65,44 @@ main(int argc, char *argv[]) + struct ptest_options opts; + + opts.directory = strdup(DEFAULT_DIRECTORY); ++ opts.exclude = NULL; + opts.list = 0; + opts.timeout = DEFAULT_TIMEOUT; + opts.ptests = NULL; + opts.xml_filename = NULL; + +- while ((opt = getopt(argc, argv, "d:lt:x:h")) != -1) { ++ while ((opt = getopt(argc, argv, "d:e:lt:x:h")) != -1) { + switch (opt) { + case 'd': + free(opts.directory); + opts.directory = realpath(optarg, NULL); + CHECK_ALLOCATION(opts.directory, 1, 1); + break; ++ case 'e': ++ c = optarg; ++ ptest_exclude_num = 1; ++ ++ while (*c) { ++ if (isspace(*c)) ++ ptest_exclude_num++; ++ c++; ++ } ++ ++ ++ opts.exclude = malloc(ptest_exclude_num * sizeof(char)); ++ CHECK_ALLOCATION(opts.exclude, 1, 1); ++ ++ i = 0; ++ tok = strtok_r(optarg, " ", &c); ++ opts.exclude[i] = strdup(tok); ++ CHECK_ALLOCATION(opts.exclude[i], 1, 1); ++ i++; ++ while ((tok = strtok_r(NULL, " ", &c)) != NULL) { ++ opts.exclude[i] = strdup(tok); ++ CHECK_ALLOCATION(opts.exclude[i], 1, 1); ++ i++; ++ } ++ break; + case 'l': + opts.list = 1; + break; +@@ -134,6 +163,9 @@ main(int argc, char *argv[]) + ptest_list_free_all(head); + } + ++ for (i = 0; i < ptest_exclude_num; i++) ++ ptest_list_remove(run, opts.exclude[i], 1); ++ + rc = run_ptests(run, opts, argv[0], stdout, stderr); + + ptest_list_free_all(run); +diff --git a/utils.h b/utils.h +index 8fa20a8bf621..ee85163ddfff 100644 +--- a/utils.h ++++ b/utils.h +@@ -32,6 +32,7 @@ + + struct ptest_options { + char *directory; ++ char **exclude; + int list; + int timeout; + char **ptests; +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch new file mode 100644 index 000000000..28c9c09bf --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch @@ -0,0 +1,144 @@ +From 11b29ce444610a07067a89b38e9e85c2162bbf67 Mon Sep 17 00:00:00 2001 +From: Tim Orling +Date: Mon, 15 Oct 2018 18:30:42 -0700 +Subject: [PATCH 7/7] [WIP] Initial LAVA support + +Linaro Automated Validation Architecture (LAVA) launches a test suite +on the target but thereafter only observes stdout. + +LAVA knows that a test case has started or ended based on signals +emitted to stdout: +(setup) + +(teardown) + + + +It is valid to have a measurement without units, but not units without a measurement. + +Signed-off-by: Tim Orling +--- + flags.h | 10 ++++++++++ + main.c | 9 ++++++++- + utils.c | 15 +++++++++++++++ + utils.h | 2 +- + 4 files changed, 34 insertions(+), 2 deletions(-) + create mode 100644 flags.h + +diff --git a/flags.h b/flags.h +new file mode 100644 +index 000000000000..0dac2234e0b4 +--- /dev/null ++++ b/flags.h +@@ -0,0 +1,10 @@ ++/* SPDX-License-Identifier: GPL-2.0 */ ++ ++/* Flag bit definitions */ ++ ++#ifndef __FLAGS_H__ ++#define __FLAGS_H__ ++ ++#define LAVA_SIGNAL_ENABLE (0x0001) ++ ++#endif /* __FLAGS_H__ */ +diff --git a/main.c b/main.c +index 83600b7d1b31..92ced6926c3d 100644 +--- a/main.c ++++ b/main.c +@@ -36,6 +36,7 @@ + #endif + + #include "utils.h" ++#include "flags.h" + + #define DEFAULT_DIRECTORY "/usr/lib" + #define DEFAULT_TIMEOUT 300 +@@ -70,8 +71,9 @@ main(int argc, char *argv[]) + opts.timeout = DEFAULT_TIMEOUT; + opts.ptests = NULL; + opts.xml_filename = NULL; ++ opts.flags = 0; + +- while ((opt = getopt(argc, argv, "d:e:lt:x:h")) != -1) { ++ while ((opt = getopt(argc, argv, "d:e:lt:x:Lh")) != -1) { + switch (opt) { + case 'd': + free(opts.directory); +@@ -118,6 +120,11 @@ main(int argc, char *argv[]) + opts.xml_filename = strdup(optarg); + CHECK_ALLOCATION(opts.xml_filename, 1, 1); + break; ++ case 'L': ++ // set LAVA signal mode ++ opts.flags |= LAVA_SIGNAL_ENABLE; ++ fprintf(stdout, "LAVA_SIGNAL_ENABLE == %d\n", opts.flags); ++ break; + default: + print_usage(stdout, argv[0]); + exit(1); +diff --git a/utils.c b/utils.c +index ed2eff7900c1..0fd1da6aec92 100644 +--- a/utils.c ++++ b/utils.c +@@ -39,6 +39,7 @@ + + #include "ptest_list.h" + #include "utils.h" ++#include "flags.h" + + #define GET_STIME_BUF_SIZE 1024 + #define WAIT_CHILD_POLL_TIMEOUT_MS 200 +@@ -358,6 +359,7 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts, + fprintf(fp, "START: %s\n", progname); + PTEST_LIST_ITERATE_START(head, p); + char *ptest_dir = strdup(p->run_ptest); ++ char *ptest = strdup(p->ptest); + if (ptest_dir == NULL) { + rc = -1; + break; +@@ -376,6 +378,11 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts, + int fds[2]; fds[0] = pipefd_stdout[0]; fds[1] = pipefd_stderr[0]; + FILE *fps[2]; fps[0] = fp; fps[1] = fp_stderr; + ++ char result[5]; // pass\0, fail\0, skip\0 ++ ++ if (opts.flags & LAVA_SIGNAL_ENABLE) { ++ fprintf(stdout, "\n", ptest); ++ } + fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE)); + fprintf(fp, "BEGIN: %s\n", ptest_dir); + +@@ -389,6 +396,14 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts, + + fprintf(fp, "END: %s\n", ptest_dir); + fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE)); ++ if (opts.flags & LAVA_SIGNAL_ENABLE) { ++ if (status) ++ sprintf(result, "fail"); ++ else ++ sprintf(result, "pass"); ++ fprintf(stdout, "\n", ptest); ++ fprintf(stdout, "\n", ptest, result); ++ } + } + PTEST_LIST_ITERATE_END; + fprintf(fp, "STOP: %s\n", progname); +diff --git a/utils.h b/utils.h +index ee85163ddfff..06d4c100d151 100644 +--- a/utils.h ++++ b/utils.h +@@ -37,9 +37,9 @@ struct ptest_options { + int timeout; + char **ptests; + char *xml_filename; ++ unsigned int flags; + }; + +- + extern void check_allocation1(void *, size_t, char *, int, int); + extern struct ptest_list *get_available_ptests(const char *); + extern int print_ptests(struct ptest_list *, FILE *); +-- +2.11.0 + diff --git a/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.1.bbappend b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.1.bbappend new file mode 100644 index 000000000..000ab3d53 --- /dev/null +++ b/meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.1.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://0004-README.md-Update-to-my-current-email.patch file://0001-utils.c-Prefer-monotonic-clock-to-calculate-elapsed-.patch file://0002-Makefile-libcheck-now-requires-to-link-subunit.patch file://0003-Add-support-to-avoid-load-run-twice-a-run_ptest-scri.patch file://0005-main.c-Use-realpath-to-get-the-actual-directory-of-p.patch file://0006-main.c-Add-option-e-to-exclude-certain-tests-for-exe.patch file://0007-WIP-Initial-LAVA-support.patch" + -- cgit 1.2.3-korg