Re: In-core regression tests for replication, cascading, archiving, PITR, etc.

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Noah Misch <noah(at)leadboat(dot)com>
Cc: Andres Freund <andres(at)2ndquadrant(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: In-core regression tests for replication, cascading, archiving, PITR, etc.
Date: 2015-03-18 04:59:11
Views: Raw Message | Whole Thread | Download mbox
Lists: pgsql-hackers

On Wed, Mar 11, 2015 at 3:04 PM, Michael Paquier wrote:
> On Wed, Mar 11, 2015 at 2:47 PM, Noah Misch <noah(at)leadboat(dot)com> wrote:
>> On Sun, Mar 08, 2015 at 08:19:39PM +0900, Michael Paquier wrote:
>>> So I am planning to seriously focus soon on this stuff, basically
>>> using the TAP tests as base infrastructure for this regression test
>>> suite. First, does using the TAP tests sound fine?
>> Yes.
> Check.
>>> On the top of my mind I got the following items that should be tested:
>>> - WAL replay: from archive, from stream
>>> - hot standby and read-only queries
>>> - node promotion
>>> - recovery targets and their interferences when multiple targets are
>>> specified (XID, name, timestamp, immediate)
>>> - timelines
>>> - recovery_target_action
>>> - recovery_min_apply_delay (check that WAL is fetch from a source at
>>> some correct interval, can use a special restore_command for that)
>>> - archive_cleanup_command (check that command is kicked at each restart point)
>>> - recovery_end_command (check that command is kicked at the end of recovery)
>>> - timeline jump of a standby after reconnecting to a promoted node

So, as long as I had a clear picture of what I wanted to do regarding
this stuff (even if this is a busy commit fest, sorry), I have been
toying around with perl and I have finished with the patch attached,
adding some base structure for a new test suite covering recovery.

This patch includes basic tests for the following items:
- node promotion, test of archiving, streaming, replication cascading
- recovery targets XID, name, timestamp, immediate and PITR
- Timeline jump of a standby when reconnecting to a newly-promoted standby
- Replay delay
Tests are located in src/test/recovery, and are not part of the main
test suite, similarly to the ssl stuff.
I have dropped recovery_target_action for the time being as long as
the matter on the other thread is not set
and I don't think that it would be complicated to create tests for
that btw.

The most important part of this patch is not the tests themselves, but
the base set of routines allowing to simply create nodes, take
backups, create standbys from backups, and set up nodes to do stuff
like streaming, archiving, or restoring from archives. There are many
configurations possible of course in recovery.conf, but the set of
routines that this patch present are made to be *simple* to not
overcomplicate the way tests can be written.

Feedback is of course welcome, but note that I am not seriously
expecting any until we get into 9.6 development cycle and I am adding
this patch to the next CF.


Attachment Content-Type Size
20150318_recovery_regressions.patch text/x-patch 23.8 KB

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Воронин Дмитрий 2015-03-18 05:50:27 Re: Question about TEMP tables
Previous Message Peter Geoghegan 2015-03-18 03:50:48 Re: Using 128-bit integers for sum, avg and statistics aggregates