Re: tap tests remove working directories - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: tap tests remove working directories
Date
Msg-id 55C91D0F.3010902@dunslane.net
Whole thread Raw
In response to Re: tap tests remove working directories  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-hackers

On 08/10/2015 10:32 AM, Andrew Dunstan wrote:
>
>
> On 08/10/2015 09:55 AM, Tom Lane wrote:
>> Andrew Dunstan <andrew@dunslane.net> writes:
>>> On 08/09/2015 08:58 PM, Michael Paquier wrote:
>>>> Sure. Attached is what I have in mind. Contrary to your version we
>>>> keep around temp paths should a run succeed after one that has failed
>>>> when running make check multiple times in a row. Perhaps it does not
>>>> matter much in practice as log files get removed at each new run but I
>>>> think that this allows a finer control in case of failure. Feel free
>>>> to have a look.
>>> Actually, I don't think this is a very good idea. You could end up with
>>> a whole series of opaquely named directories from a series of failing
>>> runs. If you want to keep the directory after a failure, and want to do
>>> another run, then rename the directory. That's what you have to do with
>>> the main regression tests, too. My version also has the benefit of
>>> changing exactly 3 lines in the source :-)
>> FWIW, I think we should keep the behavior of the TAP tests as close as
>> possible to the established behavior of the main regression tests.
>>
>> It's certainly possible that there's room for improvement in that
>> benchmark behavior.  But let's first converge the test behaviors,
>> and then have a discussion about whether we want changes, and if
>> so change all the tests at the same time.
>
>
> Yeah. To do that we should probably stop using File::Temp to make the 
> directory, and just use a hardcoded name given to File::Path::mkpath. 
> If the directory exists, we'd just remove it first.
>
> That won't be a very big change - probably just a handful of lines.
>
>

Unfortunately, it's rather more complicated. These tests are extremely 
profligate with space and time, creating not less than 29 data 
directories in 19 temporary directories, including 14 temp directories 
in scripts alone, and not counting those in pg_rewind which puts two 
more data directories in a place which is different from all the others. 
And of course, in those directories (scripts and pg_ctl) that have 
multiple temp directories, we have no idea which one goes with which set 
of tests.

It's no wonder that these tests take an inordinate amount of time to run 
- on crake, where it takes 23 seconds for "make installcheck" to run, it 
takes 176 seconds for "make -C src/bin installcheck" to run. My bet is 
all those initdb calls account for a substantial amount of that time.

I think this needs a significant bit of reworking.

cheers

andrew




pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: linux sparc compile issue
Next
From: Peter Geoghegan
Date:
Subject: Re: ON CONFLICT DO UPDATE using EXCLUDED.column gives an error about mismatched types