mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Add new TAP tests for pg_recvlogical
Craig Ringer, reviewed by Euler Taveira and Naoki Okano
This commit is contained in:
@ -12,6 +12,8 @@
|
|||||||
PGFILEDESC = "pg_basebackup/pg_receivexlog/pg_recvlogical - streaming WAL and backup receivers"
|
PGFILEDESC = "pg_basebackup/pg_receivexlog/pg_recvlogical - streaming WAL and backup receivers"
|
||||||
PGAPPICON=win32
|
PGAPPICON=win32
|
||||||
|
|
||||||
|
EXTRA_INSTALL=contrib/test_decoding
|
||||||
|
|
||||||
subdir = src/bin/pg_basebackup
|
subdir = src/bin/pg_basebackup
|
||||||
top_builddir = ../../..
|
top_builddir = ../../..
|
||||||
include $(top_builddir)/src/Makefile.global
|
include $(top_builddir)/src/Makefile.global
|
||||||
|
46
src/bin/pg_basebackup/t/030_pg_recvlogical.pl
Normal file
46
src/bin/pg_basebackup/t/030_pg_recvlogical.pl
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use TestLib;
|
||||||
|
use PostgresNode;
|
||||||
|
use Test::More tests => 15;
|
||||||
|
|
||||||
|
program_help_ok('pg_recvlogical');
|
||||||
|
program_version_ok('pg_recvlogical');
|
||||||
|
program_options_handling_ok('pg_recvlogical');
|
||||||
|
|
||||||
|
my $node = get_new_node('main');
|
||||||
|
|
||||||
|
# Initialize node without replication settings
|
||||||
|
$node->init(allows_streaming => 1, has_archiving => 1);
|
||||||
|
$node->append_conf('postgresql.conf', q{
|
||||||
|
wal_level = 'logical'
|
||||||
|
max_replication_slots = 4
|
||||||
|
max_wal_senders = 4
|
||||||
|
log_min_messages = 'debug1'
|
||||||
|
log_error_verbosity = verbose
|
||||||
|
});
|
||||||
|
$node->dump_info;
|
||||||
|
$node->start;
|
||||||
|
|
||||||
|
$node->command_fails(['pg_recvlogical'],
|
||||||
|
'pg_recvlogical needs a slot name');
|
||||||
|
$node->command_fails(['pg_recvlogical', '-S', 'test'],
|
||||||
|
'pg_recvlogical needs a database');
|
||||||
|
$node->command_fails(['pg_recvlogical', '-S', 'test', '-d', 'postgres'],
|
||||||
|
'pg_recvlogical needs an action');
|
||||||
|
$node->command_fails(['pg_recvlogical', '-S', 'test', '-d', $node->connstr('postgres'), '--start'],
|
||||||
|
'no destionation file');
|
||||||
|
|
||||||
|
$node->command_ok(['pg_recvlogical', '-S', 'test', '-d', $node->connstr('postgres'), '--create-slot'],
|
||||||
|
'slot created');
|
||||||
|
|
||||||
|
my $slot = $node->slot('test');
|
||||||
|
isnt($slot->{'restart_lsn'}, '', 'restart lsn is defined for new slot');
|
||||||
|
|
||||||
|
$node->psql('postgres', 'CREATE TABLE test_table(x integer)');
|
||||||
|
$node->psql('postgres', 'INSERT INTO test_table(x) SELECT y FROM generate_series(1, 10) a(y);');
|
||||||
|
my $nextlsn = $node->safe_psql('postgres', 'SELECT pg_current_xlog_insert_location()');
|
||||||
|
chomp($nextlsn);
|
||||||
|
|
||||||
|
$node->command_ok(['pg_recvlogical', '-S', 'test', '-d', $node->connstr('postgres'), '--start', '--endpos', "$nextlsn", '--no-loop', '-f', '-'],
|
||||||
|
'replayed a transaction');
|
Reference in New Issue
Block a user