On Tue, 1 Oct 2019 at 02:08, Robert Haas <robertmh...@gmail.com> wrote:

>
> Why does create_logical_slot_on_standby include sleep(1)?


Yeah, we really need to avoid sleeps in regression tests.

If you need to wait, use a DO block that polls the required condition, and
wrap the sleep in that with a much longer total timeout. In BDR and
pglogical's pg_regress tests I've started to use a shared prelude that sets
a bunch of psql variables that I use as helpers for this sort of thing, so
I can just write :wait_slot_ready instead of repeating the same SQL command
a pile of times across the tests.

That reminds me: I'm trying to find the time to write a couple of patches
to pg_regress to help make life easier too:

- Prelude and postscript .psql files that run before/after every test step
to set variables, do cleanup etc

- Test header comment that can be read by pg_regress to set a per-test
timeout

- Allow pg_regress to time out individual tests and continue with the next
test

- Test result postprocessing by script, where pg_regress writes the raw
test results then postprocesses it with a script before diffing the
postprocessed output. This would allow us to have things like /*
BEGIN_TESTIGNORE */ ... /* END_TESTIGNORE */ blocks for diagnostic output
that we want available but don't want to be part of actual test output. Or
filter out NOTICEs that vary in output. That sort of thing.

-- 
 Craig Ringer                   http://www.2ndQuadrant.com/
 2ndQuadrant - PostgreSQL Solutions for the Enterprise

Reply via email to