Thread: pgsql: Add tests for reinit.c
Add tests for reinit.c This tests how the different forks of unlogged tables behave in crash recovery. Author: David Steele <david@pgmasters.net> Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/df411e7c664ee9a2395eb8c7a74ceddea818d489 Modified Files -------------- src/test/recovery/t/014_unlogged_reinit.pl | 82 ++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+)
Peter Eisentraut <peter_e@gmx.net> writes: > Add tests for reinit.c BTW, buildfarm member jacana hasn't succeeded at this test once. The failures look like ok 1 - init fork in base exists ok 2 - main fork in base exists error running SQL: 'psql:<stdin>:1: ERROR: directory "/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_wBGG"does not exist' while running 'psql -XAtq -d port=50531 host=127.0.0.1 dbname='postgres' -f - -v ON_ERROR_STOP=1' with sql 'CREATE TABLESPACEts1 LOCATION '/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_wBGG'' at /home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/test/perl//PostgresNode.pmline 1246. so I hypothesize that there's something wrong with TestLib::tempdir on Windows, but no idea what. regards, tom lane
I wrote: > Peter Eisentraut <peter_e@gmx.net> writes: >> Add tests for reinit.c > BTW, buildfarm member jacana hasn't succeeded at this test once. > The failures look like > ok 1 - init fork in base exists > ok 2 - main fork in base exists > error running SQL: 'psql:<stdin>:1: ERROR: directory "/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_wBGG"does not exist' > while running 'psql -XAtq -d port=50531 host=127.0.0.1 dbname='postgres' -f - -v ON_ERROR_STOP=1' with sql 'CREATE TABLESPACEts1 LOCATION '/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_wBGG'' at /home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/test/perl//PostgresNode.pmline 1246. > so I hypothesize that there's something wrong with TestLib::tempdir on > Windows, but no idea what. After further staring at that, I think it's some sort of mingw path weirdness. I notice that the initdb output refers to the PGDATA directory as c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/t_014_unlogged_reinit_main_data/pgdata and then after that we see "pg_ctl start" succeeding with just /home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/t_014_unlogged_reinit_main_data/pgdata but this isn't working: /home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_esA3 perhaps because it lacks the "c:/mingw/msys/1.0" prefix. Still no opinion about how to fix it. regards, tom lane
On 3/15/18 11:51 PM, Tom Lane wrote: > I wrote: >> Peter Eisentraut <peter_e@gmx.net> writes: >>> Add tests for reinit.c > >> BTW, buildfarm member jacana hasn't succeeded at this test once. >> The failures look like > >> ok 1 - init fork in base exists >> ok 2 - main fork in base exists >> error running SQL: 'psql:<stdin>:1: ERROR: directory "/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_wBGG"does not exist' >> while running 'psql -XAtq -d port=50531 host=127.0.0.1 dbname='postgres' -f - -v ON_ERROR_STOP=1' with sql 'CREATE TABLESPACEts1 LOCATION '/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_wBGG'' at /home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/test/perl//PostgresNode.pmline 1246. > >> so I hypothesize that there's something wrong with TestLib::tempdir on >> Windows, but no idea what. > > After further staring at that, I think it's some sort of mingw path > weirdness. I notice that the initdb output refers to the PGDATA > directory as > > c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/t_014_unlogged_reinit_main_data/pgdata > > and then after that we see "pg_ctl start" succeeding with just > > /home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/t_014_unlogged_reinit_main_data/pgdata > > but this isn't working: > > /home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/tmp_check/tmp_test_esA3 > > perhaps because it lacks the "c:/mingw/msys/1.0" prefix. > > Still no opinion about how to fix it. I looked around for other examples but the only ones I could find are in the pg_basebackup tests (010_pg_basebackup.pl), which exclude these calls for Windows. I don't have a Windows machine to experiment on. Michael, any thoughts? -- -David david@pgmasters.net
On Sat, Mar 17, 2018 at 12:06 AM, David Steele <david@pgmasters.net> wrote:
On 3/15/18 11:51 PM, Tom Lane wrote:
> I wrote:
>> Peter Eisentraut <peter_e@gmx.net> writes:
>>> Add tests for reinit.c
>
>> BTW, buildfarm member jacana hasn't succeeded at this test once.
>> The failures look like
>
>> ok 1 - init fork in base exists
>> ok 2 - main fork in base exists
>> error running SQL: 'psql:<stdin>:1: ERROR: directory "/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/ tmp_check/tmp_test_wBGG" does not exist'
>> while running 'psql -XAtq -d port=50531 host=127.0.0.1 dbname='postgres' -f - -v ON_ERROR_STOP=1' with sql 'CREATE TABLESPACE ts1 LOCATION '/home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/ tmp_check/tmp_test_wBGG'' at /home/pgrunner/bf/root/HEAD/ pgsql.build/../pgsql/src/test/ perl//PostgresNode.pm line 1246.
>
>> so I hypothesize that there's something wrong with TestLib::tempdir on
>> Windows, but no idea what.
>
> After further staring at that, I think it's some sort of mingw path
> weirdness. I notice that the initdb output refers to the PGDATA
> directory as
>
> c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql. build/src/test/recovery/tmp_ check/t_014_unlogged_reinit_ main_data/pgdata
>
> and then after that we see "pg_ctl start" succeeding with just
>
> /home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/ tmp_check/t_014_unlogged_ reinit_main_data/pgdata
>
> but this isn't working:
>
> /home/pgrunner/bf/root/HEAD/pgsql.build/src/test/recovery/ tmp_check/tmp_test_esA3
>
> perhaps because it lacks the "c:/mingw/msys/1.0" prefix.
>
> Still no opinion about how to fix it.
I looked around for other examples but the only ones I could find are in
the pg_basebackup tests (010_pg_basebackup.pl), which exclude these
calls for Windows. I don't have a Windows machine to experiment on.
Michael, any thoughts?
The attached fixes it. We should probably put the function or something like it in TestLib.pm, though. The call to pwd is quite tricky - it needs to be done pretty much exactly like this, not quite sure why, but direct calls to "pwd -W" via system() or backticks don't work, only this indirect call works on jacana.
cheers
andrew
Attachment
On 3/19/18 4:15 AM, Andrew Dunstan wrote: > > The attached fixes it. We should probably put the function or something > like it in TestLib.pm, though. The call to pwd is quite tricky - it > needs to be done pretty much exactly like this, not quite sure why, but > direct calls to "pwd -W" via system() or backticks don't work, only this > indirect call works on jacana. Thanks for the patch, Andrew! Peter, would you like me to provide a patch that moves this function to TestLib.pm? Happy to do it, just don't want patches crossing in the night, as it were. Thanks, -- -David david@pgmasters.net
On Mon, Mar 19, 2018 at 11:33 PM, David Steele <david@pgmasters.net> wrote: > On 3/19/18 4:15 AM, Andrew Dunstan wrote: >> >> The attached fixes it. We should probably put the function or something >> like it in TestLib.pm, though. The call to pwd is quite tricky - it >> needs to be done pretty much exactly like this, not quite sure why, but >> direct calls to "pwd -W" via system() or backticks don't work, only this >> indirect call works on jacana. > > Thanks for the patch, Andrew! > > Peter, would you like me to provide a patch that moves this function to > TestLib.pm? Happy to do it, just don't want patches crossing in the > night, as it were. > I've reworked it and pushed the fix. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On 3/19/18 5:58 PM, Andrew Dunstan wrote: > On Mon, Mar 19, 2018 at 11:33 PM, David Steele <david@pgmasters.net> wrote: >> On 3/19/18 4:15 AM, Andrew Dunstan wrote: >>> >>> The attached fixes it. We should probably put the function or something >>> like it in TestLib.pm, though. The call to pwd is quite tricky - it >>> needs to be done pretty much exactly like this, not quite sure why, but >>> direct calls to "pwd -W" via system() or backticks don't work, only this >>> indirect call works on jacana. >> >> Thanks for the patch, Andrew! >> >> Peter, would you like me to provide a patch that moves this function to >> TestLib.pm? Happy to do it, just don't want patches crossing in the >> night, as it were. >> > > I've reworked it and pushed the fix. Thanks, Andrew! -- -David david@pgmasters.net