[LTP] [PATCH v5 0/4] Run tests in CI

Cyril Hrubis chrubis@suse.cz
Wed Jul 14 17:00:08 CEST 2021


Hi!
> tested:
> https://github.com/pevik/ltp/actions/runs/1030551185
> 
> One thing which bothers me is mangled output of several tests together:
> https://github.com/pevik/ltp/runs/3067600696?check_suite_focus=true#step:11:554
> 
> runtest TINFO: * tst_res_hexd
> /__w/ltp/ltp/lib/tst_test.c:1344: TINFO: Timeout per run is 0h 05m 00s
> /__w/ltp/ltp/lib/newlib_tests/tst_res_hexd.c:13: TPASS: dump1
> /__w/ltp/ltp/lib/newlib_tests/tst_res_hexd.c:13: TPASS: 48 65 6c 6c 6f 20 66 72 6f 6d 20 74 73 74 5f 72
> /__w/ltp/ltp/lib/newlib_tests/tst_res_hexd.c:13: TPASS: 65 73 5f 68 65 78 64 00
> 
> runtest TINFO: * tst_strstatus
> /__w/ltp/ltp/lib/tst_test.c:1344: TINFO: Timeout per run is 0h 05m 00s
> 
> Summary:
> passed   35
> failed   0
> broken   0
> skipped  0
> warnings 0
> 
> Summary:
> passed   1
> failed   0
> broken   0
> skipped  0
> warnings 0

That is indeed strange, you are running these in a loop, the buffers
should have been flushed once controll returns back to the shell from
the test.

I guess that this is a combination of:

* The stdout and stderr are block buffered by the gitlab CI and flushed
  at different times

* The summary is written into stdout in contrast with the message
  so we end up with summary printed later than the rest that goes into
  stderr

I guess this should fix it:

diff --git a/lib/tst_test.c b/lib/tst_test.c
index f4d9f8e3b..084a83c9e 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -734,12 +734,12 @@ static void do_exit(int ret)
                if (results->broken)
                        ret |= TBROK;

-               printf("\nSummary:\n");
-               printf("passed   %d\n", results->passed);
-               printf("failed   %d\n", results->failed);
-               printf("broken   %d\n", results->broken);
-               printf("skipped  %d\n", results->skipped);
-               printf("warnings %d\n", results->warnings);
+               fprintf(stderr, "\nSummary:\n");
+               fprintf(stderr, "passed   %d\n", results->passed);
+               fprintf(stderr, "failed   %d\n", results->failed);
+               fprintf(stderr, "broken   %d\n", results->broken);
+               fprintf(stderr, "skipped  %d\n", results->skipped);
+               fprintf(stderr, "warnings %d\n", results->warnings);
        }

        do_cleanup();

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list