Re: pgbench tap tests & minor fixes.

From: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Nikolay Shaplov <dhyan(at)nataraj(dot)su>, PostgreSQL Developers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pgbench tap tests & minor fixes.
Date: 2017-09-04 20:26:49
Message-ID: alpine.DEB.2.20.1709042215060.19424@lancre
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Hello Tom,

>> As for included bug fixes, I can do separate patches, but I think that it
>> is enough to first commit the pgbench files and then the tap-test files,
>> in that order. I'll see what committers say.
>
> Starting to look at this. I concur that the bug fixes ought to be
> committed separately, but since they're in separate files it's not hard
> to disassemble the patch.

Ok.

> A couple of thoughts --
>
> * I do not think we need expr_scanner_chomp_substring. Of the three
> existing callers of expr_scanner_get_substring, one is doing a manual
> chomp afterwards, and the other two need chomps per your patch.
> Seems to me we should just include the chomp logic in
> expr_scanner_get_substring. Maybe it'd be worth adding a "bool chomp"
> argument to it, but I think that would be more for clarity than
> usefulness.

Ok. I thought that I would get a slap on the hand if I changed the initial
function, but I get one not for changing it:-)

> * I do not like the API complexity of command_checks_all, specifically
> not the business of taking either a scalar or an array for the cmd,
> out, and err arguments. I think it'd be clearer and less bug-prone
> to just take arrays, full stop. Maybe it's just that I'm a crummy Perl
> programmer, but I do not see uses of this "ref ... eq 'ARRAY'" business
> elsewhere in our test scaffolding, and this doesn't seem like a great
> place to introduce it. At worst you'd need to add brackets around the
> arguments in a few callers.

Hmmm. I find it quite elegant and harmless, but it can be removed.

> * In the same vein, I don't know what this does:
>
> sub pgbench($$$$$)
>
> and I see no existing instances of it elsewhere in our tree. I think it'd
> be better not to require advanced degrees in Perl programming in order to
> read the test cases.

It just says that 5 scalars are expected, so it would complain if "type"
or number do not match. Now, why give type hints if they are not
mandatory, as devs can always detect their errors by extensive testing
instead:-)

But I agree that it is not a usual Perl stance and it can be removed.

> * Another way in which command_checks_all introduces API complexity is
> that it accounts for a variable number of tests depending on how many
> patterns are provided. This seems like a mess. I see that you have
> in some places (not very consistently) annotated call sites as to how
> many tests they account for, but who's going to do the math to make
> sure everything adds up?

Perl:-) I run the test, figure out the number it found in the resulting
error message, and update the number in the source. Not too hard:-)

> Maybe it'd be better to not use like(), or do something else so that
> each command_checks_all call counts as one Test::More test rather than
> N.

> Or just forget prespecifying a test count and use done_testing
> instead.

Yep, "done_testing" looks fine, I'll investigate that, but other test
seemed to insist on declaring the expected number. Now "done_testing" may
be a nicer option if some tests need to be skipped on some platform.

--
Fabien.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2017-09-04 20:35:28 Re: Variable substitution in psql backtick expansion
Previous Message Tom Lane 2017-09-04 20:26:09 Re: pgbench tap tests & minor fixes.