Thread: TAP tests still sensitive to various PG* environment variables

TAP tests still sensitive to various PG* environment variables

From
Michael Paquier
Date:
Hi all,

While looking at a separate issue, I have noticed that TestLib.pm is
lagging behind in terms of environment variables it had better mask to
avoid failures:
https://www.postgresql.org/message-id/YLXjFOV3teAPirmS@paquier.xyz

Once I began playing with the variables not covered yet, and tested
fancy cases with junk values, I have been able to see various failures
in the TAP tests, mainly with authentication and SSL.

Attached is a patch to strengthen all that, which I think we'd better
backpatch.

Any objections to that?
--
Michael

Attachment

Re: TAP tests still sensitive to various PG* environment variables

From
Daniel Gustafsson
Date:
> On 2 Jun 2021, at 03:49, Michael Paquier <michael@paquier.xyz> wrote:

> Attached is a patch to strengthen all that, which I think we'd better
> backpatch.

+1

> Any objections to that?

Seems like a good idea, to keep test invocation stable across branches, minus
PGSSLCRLDIR and PGSSLSNI which are only available in HEAD etc.

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




Re: TAP tests still sensitive to various PG* environment variables

From
Andrew Dunstan
Date:
On 6/1/21 9:49 PM, Michael Paquier wrote:
> Hi all,
>
> While looking at a separate issue, I have noticed that TestLib.pm is
> lagging behind in terms of environment variables it had better mask to
> avoid failures:
> https://www.postgresql.org/message-id/YLXjFOV3teAPirmS@paquier.xyz
>
> Once I began playing with the variables not covered yet, and tested
> fancy cases with junk values, I have been able to see various failures
> in the TAP tests, mainly with authentication and SSL.
>
> Attached is a patch to strengthen all that, which I think we'd better
> backpatch.
>
> Any objections to that?



This is a bit gruesome:


    +    delete $ENV{PGCHANNELBINDING};
    +    delete $ENV{PGCLIENTENCODING};
         delete $ENV{PGCONNECT_TIMEOUT};
         delete $ENV{PGDATA};
         delete $ENV{PGDATABASE};
    +    delete $ENV{PGGSSENCMODE};
    +    delete $ENV{PGGSSLIB};
         delete $ENV{PGHOSTADDR};
    +    delete $ENV{PGKRBSRVNAME};
    +    delete $ENV{PGPASSFILE};
    +    delete $ENV{PGPASSWORD};
    +    delete $ENV{PGREQUIREPEER};
         delete $ENV{PGREQUIRESSL};
         delete $ENV{PGSERVICE};
    +    delete $ENV{PGSERVICEFILE};
    +    delete $ENV{PGSSLCERT};
    +    delete $ENV{PGSSLCRL};
    +    delete $ENV{PGSSLCRLDIR};
    +    delete $ENV{PGSSLKEY};
    +    delete $ENV{PGSSLMAXPROTOCOLVERSION};
    +    delete $ENV{PGSSLMINPROTOCOLVERSION};
         delete $ENV{PGSSLMODE};
    +    delete $ENV{PGSSLROOTCERT};
    +    delete $ENV{PGSSLSNI};
         delete $ENV{PGUSER};
         delete $ENV{PGPORT};
         delete $ENV{PGHOST};



Let's change it to something like:


    my @scrubkeys = qw ( PGCHANNELBINDING

       PGCLIENTENCODING PGCONNECT_TIMEOUT PGDATA

       ...

        );

    delete @ENV{@scrubkeys};


cheers


andrew


-- 

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




Re: TAP tests still sensitive to various PG* environment variables

From
Michael Paquier
Date:
On Wed, Jun 02, 2021 at 03:43:46PM -0400, Andrew Dunstan wrote:
> Let's change it to something like:
>
>     my @scrubkeys = qw ( PGCHANNELBINDING
>        PGCLIENTENCODING PGCONNECT_TIMEOUT PGDATA
>        ...
>         );
>     delete @ENV{@scrubkeys};

Good idea.  I have used that.  Thanks.
--
Michael

Attachment

Re: TAP tests still sensitive to various PG* environment variables

From
Michael Paquier
Date:
On Wed, Jun 02, 2021 at 10:39:56AM +0200, Daniel Gustafsson wrote:
> Seems like a good idea, to keep test invocation stable across branches, minus
> PGSSLCRLDIR and PGSSLSNI which are only available in HEAD etc.

Right.  This took me a couple of hours to make consistent across
all the branches.  After more review, I have found also about
PGTARGETSESSIONATTRS that would take down the recovery tests as of
10~.  Fun.
--
Michael

Attachment