mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 02:23:49 +08:00
Port the timescaledb perl tests and the corresponding infrastructure to support the new perl namespace introduced in PG15. https://github.com/postgres/postgres/commit/b3b4d8e6
61 lines
2.0 KiB
Perl
61 lines
2.0 KiB
Perl
# This file and its contents are licensed under the Timescale License.
|
|
# Please see the included NOTICE for copyright information and
|
|
# LICENSE-TIMESCALE for a copy of the license.
|
|
|
|
use strict;
|
|
use warnings;
|
|
use TimescaleNode;
|
|
use Data::Dumper;
|
|
use Test::More tests => 4;
|
|
|
|
# This test checks that the extension state is handled correctly
|
|
# across multiple sessions. Specifically, if the extension state
|
|
# changes in one session (e.g., the extension is created or dropped),
|
|
# this should be reflected in other concurrent sessions.
|
|
#
|
|
# To test this, we start one background psql session that stays open
|
|
# for the duration of the tests and then change the extension state
|
|
# from other sessions.
|
|
my $node_primary = TimescaleNode->create(
|
|
'primary',
|
|
allows_streaming => 1,
|
|
auth_extra => [ '--create-role', 'repl_role' ]);
|
|
my $backup_name = 'my_backup';
|
|
|
|
# Take backup
|
|
$node_primary->backup($backup_name);
|
|
|
|
# Create streaming standby linking to primary
|
|
my $node_standby =
|
|
($ENV{PG_VERSION_MAJOR} >= 15)
|
|
? PostgreSQL::Test::Cluster->new('standby_1')
|
|
: PostgresNode->get_new_node('standby_1');
|
|
$node_standby->init_from_backup($node_primary, $backup_name,
|
|
has_streaming => 1);
|
|
$node_standby->start;
|
|
|
|
# Wait for standby to catch up
|
|
$node_primary->wait_for_catchup($node_standby, 'replay',
|
|
$node_primary->lsn('insert'));
|
|
|
|
|
|
my $result = $node_primary->safe_psql('postgres',
|
|
"SELECT get_telemetry_report()->'replication'->>'num_wal_senders'");
|
|
is($result, qq(1), 'number of wal senders on primary');
|
|
|
|
$result = $node_primary->safe_psql('postgres',
|
|
"SELECT get_telemetry_report()->'replication'->>'is_wal_receiver'");
|
|
is($result, qq(false), 'primary is wal receiver');
|
|
|
|
$result = $node_standby->safe_psql('postgres',
|
|
"SELECT get_telemetry_report()->'replication'->>'num_wal_senders'");
|
|
is($result, qq(0), 'number of wal senders on standby');
|
|
|
|
$result = $node_standby->safe_psql('postgres',
|
|
"SELECT get_telemetry_report()->'replication'->>'is_wal_receiver'");
|
|
is($result, qq(true), 'standby is wal receiver');
|
|
|
|
done_testing();
|
|
|
|
1;
|