Thread: Ensure that STDERR is empty during connect_ok

Ensure that STDERR is empty during connect_ok

From
Daniel Gustafsson
Date:
As part of the NSS patchset, quite a few bugs (and NSS quirks) were found by
inspecting STDERR in connect_ok and require it to be empty.  This is not really
NSS specific, and could help find issues in other libraries as well so I
propose to apply it regardless of the fate of the NSS patchset.

(The change in the SCRAM tests stems from this now making all testruns have the
same number of tests.  While I prefer to not plan at all and instead run
done_testing(), doing that consistently is for another patch, keeping this with
the remainder of the suites.)

--
Daniel Gustafsson        https://vmware.com/


Attachment

Re: Ensure that STDERR is empty during connect_ok

From
Alvaro Herrera
Date:
On 2022-Feb-02, Daniel Gustafsson wrote:

> As part of the NSS patchset, quite a few bugs (and NSS quirks) were found by
> inspecting STDERR in connect_ok and require it to be empty.  This is not really
> NSS specific, and could help find issues in other libraries as well so I
> propose to apply it regardless of the fate of the NSS patchset.
>
> (The change in the SCRAM tests stems from this now making all testruns have the
> same number of tests.  While I prefer to not plan at all and instead run
> done_testing(), doing that consistently is for another patch, keeping this with
> the remainder of the suites.)

Since commit 405f32fc4960 we can rely on subtests for this, so perhaps
we should group all the tests in connect_ok() (including your new one)
into a subtest; then each connect_ok() calls count as a single test, and
we can add more tests in it without having to change the callers.

-- 
Álvaro Herrera           39°49'30"S 73°17'W  —  https://www.EnterpriseDB.com/
Al principio era UNIX, y UNIX habló y dijo: "Hello world\n".
No dijo "Hello New Jersey\n", ni "Hello USA\n".



Re: Ensure that STDERR is empty during connect_ok

From
Tom Lane
Date:
Daniel Gustafsson <daniel@yesql.se> writes:
> As part of the NSS patchset, quite a few bugs (and NSS quirks) were found by
> inspecting STDERR in connect_ok and require it to be empty.  This is not really
> NSS specific, and could help find issues in other libraries as well so I
> propose to apply it regardless of the fate of the NSS patchset.

+1

> (The change in the SCRAM tests stems from this now making all testruns have the
> same number of tests.  While I prefer to not plan at all and instead run
> done_testing(), doing that consistently is for another patch, keeping this with
> the remainder of the suites.)

+1 to that too, counting the tests is a pretty useless exercise.

            regards, tom lane



Re: Ensure that STDERR is empty during connect_ok

From
Daniel Gustafsson
Date:

> On 2 Feb 2022, at 16:01, Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
>
> On 2022-Feb-02, Daniel Gustafsson wrote:
>
>> As part of the NSS patchset, quite a few bugs (and NSS quirks) were found by
>> inspecting STDERR in connect_ok and require it to be empty.  This is not really
>> NSS specific, and could help find issues in other libraries as well so I
>> propose to apply it regardless of the fate of the NSS patchset.
>>
>> (The change in the SCRAM tests stems from this now making all testruns have the
>> same number of tests.  While I prefer to not plan at all and instead run
>> done_testing(), doing that consistently is for another patch, keeping this with
>> the remainder of the suites.)
>
> Since commit 405f32fc4960 we can rely on subtests for this, so perhaps
> we should group all the tests in connect_ok() (including your new one)
> into a subtest; then each connect_ok() calls count as a single test, and
> we can add more tests in it without having to change the callers.

Disclaimer: longer term I would prefer to remove test plan counting like above
and Toms comment downthread.  This is just to make this patch more palatable on
the way there.

Making this a subtest in order to not having to change the callers, turns the
patch into the attached.  For this we must group the new test with one already
existing test, if we group more into it (which would make more sense) then we
need to change callers as that reduce the testcount across the tree.

This makes the patch smaller, but not more readable IMO (given that we can't
make it fully use subtests), so my preference is still the v1 patch.

Or did I misunderstand you?

--
Daniel Gustafsson        https://vmware.com/


Attachment

Re: Ensure that STDERR is empty during connect_ok

From
Alvaro Herrera
Date:
On 2022-Feb-02, Daniel Gustafsson wrote:

> Making this a subtest in order to not having to change the callers, turns the
> patch into the attached.  For this we must group the new test with one already
> existing test, if we group more into it (which would make more sense) then we
> need to change callers as that reduce the testcount across the tree.

Well, it wasn't my intention that this patch would not have to change
the callers.  What I was thinking about is making connect_ok() have a
subtest for *all* the tests it contains (and changing the callers to
match), so that *in the future* we can add more tests there without
having to change the callers *again*.

> Or did I misunderstand you?

I think you did.

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Cómo ponemos nuestros dedos en la arcilla del otro. Eso es la amistad; jugar
al alfarero y ver qué formas se pueden sacar del otro" (C. Halloway en
La Feria de las Tinieblas, R. Bradbury)



Re: Ensure that STDERR is empty during connect_ok

From
Dagfinn Ilmari Mannsåker
Date:
Tom Lane <tgl@sss.pgh.pa.us> writes:

> Daniel Gustafsson <daniel@yesql.se> writes:
>
>> While I prefer to not plan at all and instead run done_testing(),
>> doing that consistently is for another patch, keeping this with the
>> remainder of the suites.
>
> +1 to that too, counting the tests is a pretty useless exercise.

Rather than waiting for Someone™ to find a suitably-shaped tuit to do a
whole sweep converting everything to done_testing(), I think we should
make a habit of converting individual scripts whenever a change breaks
the count.

- ilmari



Re: Ensure that STDERR is empty during connect_ok

From
Andrew Dunstan
Date:
On 2/2/22 11:01, Dagfinn Ilmari Mannsåker wrote:
> Tom Lane <tgl@sss.pgh.pa.us> writes:
>
>> Daniel Gustafsson <daniel@yesql.se> writes:
>>
>>> While I prefer to not plan at all and instead run done_testing(),
>>> doing that consistently is for another patch, keeping this with the
>>> remainder of the suites.
>> +1 to that too, counting the tests is a pretty useless exercise.
> Rather than waiting for Someone™ to find a suitably-shaped tuit to do a
> whole sweep converting everything to done_testing(), I think we should
> make a habit of converting individual scripts whenever a change breaks
> the count.


Or when anyone edits a script, even if the number of tests doesn't get
broken.


cheers


andrew


--
Andrew Dunstan
EDB: https://www.enterprisedb.com




Re: Ensure that STDERR is empty during connect_ok

From
Alvaro Herrera
Date:
On 2022-Feb-02, Andrew Dunstan wrote:

> On 2/2/22 11:01, Dagfinn Ilmari Mannsåker wrote:

> > Rather than waiting for Someone™ to find a suitably-shaped tuit to do a
> > whole sweep converting everything to done_testing(), I think we should
> > make a habit of converting individual scripts whenever a change breaks
> > the count.

+1.

> Or when anyone edits a script, even if the number of tests doesn't get
> broken.

Sure, if the committer is up to doing it, but let's not make that a hard
requirement for any commit that touches a test script.

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Ni aún el genio muy grande llegaría muy lejos
si tuviera que sacarlo todo de su propio interior" (Goethe)



Re: Ensure that STDERR is empty during connect_ok

From
Michael Paquier
Date:
On Wed, Feb 02, 2022 at 04:42:09PM +0100, Daniel Gustafsson wrote:
> Disclaimer: longer term I would prefer to remove test plan counting like above
> and Toms comment downthread.

That would be really nice.
--
Michael

Attachment

Re: Ensure that STDERR is empty during connect_ok

From
Michael Paquier
Date:
On Wed, Feb 02, 2022 at 03:40:39PM +0100, Daniel Gustafsson wrote:
> As part of the NSS patchset, quite a few bugs (and NSS quirks) were found by
> inspecting STDERR in connect_ok and require it to be empty.  This is not really
> NSS specific, and could help find issues in other libraries as well so I
> propose to apply it regardless of the fate of the NSS patchset.

Sounds sensible from here.  Thanks!

All the code paths seem to be covered, at quick glance.
--
Michael

Attachment

Re: Ensure that STDERR is empty during connect_ok

From
Daniel Gustafsson
Date:
> On 6 Feb 2022, at 08:00, Michael Paquier <michael@paquier.xyz> wrote:
>
> On Wed, Feb 02, 2022 at 03:40:39PM +0100, Daniel Gustafsson wrote:
>> As part of the NSS patchset, quite a few bugs (and NSS quirks) were found by
>> inspecting STDERR in connect_ok and require it to be empty.  This is not really
>> NSS specific, and could help find issues in other libraries as well so I
>> propose to apply it regardless of the fate of the NSS patchset.
>
> Sounds sensible from here.  Thanks!
>
> All the code paths seem to be covered, at quick glance.

Applied, minus the changes to the test plans which are no longer required after
549ec201d6.

--
Daniel Gustafsson        https://vmware.com/