Thread: TAP tests still sensitive to various PG* environment variables
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
> 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/
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
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
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