| From: | Andres Freund <andres(at)anarazel(dot)de> |
|---|---|
| To: | Daniel Gustafsson <daniel(at)yesql(dot)se> |
| Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: TAP output format in pg_regress |
| Date: | 2022-08-17 22:49:49 |
| Message-ID: | 20220817224949.jp7yftjv7ltfi2q6@awork3.anarazel.de |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
On 2022-08-17 23:04:20 +0200, Daniel Gustafsson wrote:
> Attached is a new version of the pg_regress TAP patch which - per reviewer
> feedback - does away with dual output formats and just converts the existing
> output to be TAP complaint.
Cool.
> while still be TAP compliant enough that running it with prove (with a tiny
> Perl wrapper) works.
Wonder if we could utilize that for making failures of 002_pg_upgrade.pl and
027_stream_regress.pl easier to understand, by reporting pg_regress' steps as
part of the outer test. But that'd probably be at least somewhat hard, due to
the embedded test count etc.
> This version also strips away the verbose output which these days isn't
> terribly useful and mainly consume vertical space.
Yay.
> Another feature of the patch is to switch error logging to using the common
> frontend logging rather than pg_regress rolling its own. The output from
> pg_log_error is emitted verbatim by prove as it's on stderr.
Sounds good.
> I based the support on the original TAP specification and not the new v13 or
> v14 since it seemed unclear how well those are supported in testrunners. If
> v14 is adopted by testrunners there are some better functionality for reporting
> errors that we could use, but for how this version seems a safer option.
Yep, that makes sense.
> A normal "make check" with this patch applied now looks like this:
>
>
> +++ regress check in src/test/regress +++
> # running on port 61696 with PID 57910
> ok 1 - test_setup 326 ms
> ok 2 - tablespace 401 ms
> # parallel group (20 tests): varchar char oid pg_lsn txid int4 regproc money int2 uuid float4 text name boolean int8 enum float8 bit numeric rangetypes
> ok 3 - boolean 129 ms
> ok 4 - char 73 ms
> ok 5 - name 117 ms
> ok 6 - varchar 68 ms
> <...snip...>
> ok 210 - memoize 137 ms
> ok 211 - stats 851 ms
> # parallel group (2 tests): event_trigger oidjoins
> ok 212 - event_trigger 138 ms
> not ok 213 - oidjoins 190 ms
> ok 214 - fast_default 149 ms
> 1..214
> # 1 of 214 tests failed.
> # The differences that caused some tests to fail can be viewed in the
> # file "/<path>/src/test/regress/regression.diffs". A copy of the test summary that you see
> # above is saved in the file "/<path>/src/test/regress/regression.out".
I'm happy with that compared to our current output.
> The ending comment isn't currently shown when executed via prove as it has to
> go to STDERR for that to work, and I'm not sure that's something we want to do
> in the general case. I don't expect running the pg_regress tests via prove is
> going to be the common case. How does the meson TAP ingestion handle
> stdout/stderr?
It'll parse stdout for tap output and log stderr output separately.
> There is a slight reduction in information, for example around tests run
> serially vs in a parallel group. This could perhaps be handled by marking the
> test name in some way like "tablespace (serial) or prefixing with a symbol or
> somerthing. I can take a stab at that in case we think that level of detail is
> important to preserve.
I think we could just indent the test "description" for tests in parallel
groups:
I.e. instead of
ok 1 - test_setup 326 ms
ok 2 - tablespace 401 ms
# parallel group (20 tests): varchar char oid pg_lsn txid int4 regproc money int2 uuid float4 text name boolean int8 enum float8 bit numeric rangetypes
ok 3 - boolean 129 ms
ok 4 - char 73 ms
ok 5 - name 117 ms
ok 6 - varchar 68 ms
do
ok 1 - test_setup 326 ms
ok 2 - tablespace 401 ms
# parallel group (20 tests): varchar char oid pg_lsn txid int4 regproc money int2 uuid float4 text name boolean int8 enum float8 bit numeric rangetypes
ok 3 - boolean 129 ms
ok 4 - char 73 ms
ok 5 - name 117 ms
ok 6 - varchar 68 ms
that'd make it sufficiently clear, and is a bit more similar to the current
format?
I wonder if we should indent the test name so that the number doesn't cause
wrapping? And perhaps we can skip the - in that case?
I.e. instead of:
ok 9 - name 117 ms
ok 10 - varchar 68 ms
..
ok 99 - something 60 ms
ok 100 - memoize 137 ms
something like:
ok 9 name 117 ms
ok 10 varchar 68 ms
...
ok 99 something 60 ms
ok 100 memoize 137 ms
with parallel tests:
ok 9 name 117 ms
# parallel group (2 tests): varchar varchar2
ok 10 varchar 68 ms
ok 11 varchar2 139 ms
ok 12 varchar3 44 ms
ok 99 something 60 ms
ok 100 memoize 137 ms
Greetings,
Andres Freund
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2022-08-17 23:19:35 | Re: s390x builds on buildfarm |
| Previous Message | Peter Smith | 2022-08-17 22:49:14 | Re: shadow variables - pg15 edition |