Re: [yocto] [PATCH][ptest-runner] ptest-runner: Add support to report duration of each ptest

2019-01-07 Thread Anibal Limon
On Mon, 7 Jan 2019 at 05:53,  wrote:

> On Sun, 2019-01-06 at 11:43 -0600, Aníbal Limón wrote:
> > In stdout reported as,
> >
> > ...
> > BEGIN: ptest-dir
> > ...
> > DURATION: Ns
> > END: ptest-dir
> > ...
> >
> > In XML reported as,
> >
> > ...
> > 
> >   Ns
> > 
> > ...
>
> Looks good, thanks!
>
> One minor detail - should this be:
>
> N
>
> ?
>
> I'm wondering if we should just mandate duration is in seconds and not
> put units into the field as it would complicate parsing?
>

Yes np, we can remove the units (s).

Regards,
Anibal


>
> Cheers,
>
> Richard
>
>
>
-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] [PATCH][ptest-runner] ptest-runner: Add support to report duration of each ptest

2019-01-07 Thread richard . purdie
On Sun, 2019-01-06 at 11:43 -0600, Aníbal Limón wrote:
> In stdout reported as,
> 
> ...
> BEGIN: ptest-dir
> ...
> DURATION: Ns
> END: ptest-dir
> ...
> 
> In XML reported as,
> 
> ...
> 
>   Ns
> 
> ...

Looks good, thanks!

One minor detail - should this be:

N

?

I'm wondering if we should just mandate duration is in seconds and not
put units into the field as it would complicate parsing?

Cheers,

Richard


-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


[yocto] [PATCH][ptest-runner] ptest-runner: Add support to report duration of each ptest

2019-01-06 Thread Aníbal Limón
In stdout reported as,

...
BEGIN: ptest-dir
...
DURATION: Ns
END: ptest-dir
...

In XML reported as,

...

Ns

...

Signed-off-by: Aníbal Limón 
---
 tests/data/reference.xml |  2 ++
 tests/utils.c| 20 
 utils.c  | 19 ---
 utils.h  |  2 +-
 4 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/tests/data/reference.xml b/tests/data/reference.xml
index 17f91c2..33bce41 100644
--- a/tests/data/reference.xml
+++ b/tests/data/reference.xml
@@ -1,8 +1,10 @@
 
 

+   5s


+   10s



diff --git a/tests/utils.c b/tests/utils.c
index 662abe8..2ccb1c0 100644
--- a/tests/utils.c
+++ b/tests/utils.c
@@ -188,26 +188,30 @@ START_TEST(test_run_ptests)
 END_TEST
 
 static void
-search_for_timeout(const int rp, FILE *fp_stdout, FILE *fp_stderr)
+search_for_timeout_and_duration(const int rp, FILE *fp_stdout, FILE *fp_stderr)
 {
const char *timeout_str = "TIMEOUT";
+   const char *duration_str = "DURATION";
char line_buf[PRINT_PTEST_BUF_SIZE];
-   int found_timeout = 0;
+   int found_timeout = 0, found_duration = 0;
char *line = NULL;
 
ck_assert(rp != 0);
 
-   while ((line = fgets(line_buf, PRINT_PTEST_BUF_SIZE, fp_stdout)) != 
NULL)
+   while ((line = fgets(line_buf, PRINT_PTEST_BUF_SIZE, fp_stdout)) != 
NULL) {
find_word(_timeout, line, timeout_str);
+   find_word(_duration, line, duration_str);
+   }
 
ck_assert(found_timeout == 1);
+   ck_assert(found_duration == 1);
 }
 
-START_TEST(test_run_timeout_ptest)
+START_TEST(test_run_timeout_duration_ptest)
struct ptest_list *head = get_available_ptests(opts_directory);
int timeout = 1;
 
-   test_ptest_expected_failure(head, timeout, "hang", search_for_timeout);
+   test_ptest_expected_failure(head, timeout, "hang", 
search_for_timeout_and_duration);
 
ptest_list_free_all(head);
 END_TEST
@@ -257,8 +261,8 @@ START_TEST(test_xml_pass)
FILE *xp;
xp = xml_create(2, "./test.xml");
ck_assert(xp != NULL);
-   xml_add_case(xp, 0,"test1", 0);
-   xml_add_case(xp, 1,"test2", 1);
+   xml_add_case(xp, 0,"test1", 0, 5);
+   xml_add_case(xp, 1,"test2", 1, 10);
xml_finish(xp);
 
FILE *fp, *fr;
@@ -291,7 +295,7 @@ utils_suite()
tcase_add_test(tc_core, test_print_ptests);
tcase_add_test(tc_core, test_filter_ptests);
tcase_add_test(tc_core, test_run_ptests);
-   tcase_add_test(tc_core, test_run_timeout_ptest);
+   tcase_add_test(tc_core, test_run_timeout_duration_ptest);
tcase_add_test(tc_core, test_run_fail_ptest);
tcase_add_test(tc_core, test_xml_pass);
tcase_add_test(tc_core, test_xml_fail);
diff --git a/utils.c b/utils.c
index 4a38ea1..f3b417c 100644
--- a/utils.c
+++ b/utils.c
@@ -45,12 +45,10 @@
 #define WAIT_CHILD_BUF_MAX_SIZE 1024
 
 static inline char *
-get_stime(char *stime, size_t size)
+get_stime(char *stime, size_t size, time_t t)
 {
-   time_t t;
struct tm *lt;
 
-   t = time(NULL);
lt = localtime();
strftime(stime, size, "%Y-%m-%dT%H:%M", lt);
 
@@ -334,6 +332,8 @@ run_ptests(struct ptest_list *head, const struct 
ptest_options opts,
int pipefd_stdout[2];
int pipefd_stderr[2];
int timeouted;
+   time_t sttime, entime;
+   int duration;
 
if (opts.xml_filename) {
xh = xml_create(ptest_list_length(head), opts.xml_filename);
@@ -373,11 +373,15 @@ 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;
 
-   fprintf(fp, "%s\n", get_stime(stime, 
GET_STIME_BUF_SIZE));
+   sttime = time(NULL);
+   fprintf(fp, "%s\n", get_stime(stime, 
GET_STIME_BUF_SIZE, sttime));
fprintf(fp, "BEGIN: %s\n", ptest_dir);
 
status = wait_child(ptest_dir, p->run_ptest, 
child,
opts.timeout, fds, fps, 
);
+   entime = time(NULL);
+   duration = entime - sttime;
+   fprintf(fps[0], "DURATION: %ds\n", duration);
 
if (status) {
fprintf(fps[0], "\nERROR: Exit status 
is %d\n", status);
@@ -387,10 +391,10 @@ run_ptests(struct ptest_list *head, const struct 
ptest_options opts,
fprintf(fps[0], "TIMEOUT: %s\n", 
ptest_dir);
 
if (opts.xml_filename)
-