From b4a64f5e4fbf7b08e14caa680f88eebb09da2c69 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sat, 23 Dec 2023 14:25:26 +0100 Subject: [PATCH v1 5/5] pg_stat_statements: Add TAP test for testing restarts This tests that pg_stat_statement contents are successfully kept across restart. (This similar to src/test/recovery/t/029_stats_restart.pl for the stats collector.) --- contrib/pg_stat_statements/Makefile | 2 + contrib/pg_stat_statements/meson.build | 5 +++ contrib/pg_stat_statements/t/010_restart.pl | 50 +++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 contrib/pg_stat_statements/t/010_restart.pl diff --git a/contrib/pg_stat_statements/Makefile b/contrib/pg_stat_statements/Makefile index 7ee16e8350..20834bb0ee 100644 --- a/contrib/pg_stat_statements/Makefile +++ b/contrib/pg_stat_statements/Makefile @@ -24,6 +24,8 @@ REGRESS = select dml cursors utility level_tracking planning \ # which typical installcheck users do not have (e.g. buildfarm clients). NO_INSTALLCHECK = 1 +TAP_TESTS = 1 + ifdef USE_PGXS PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/contrib/pg_stat_statements/meson.build b/contrib/pg_stat_statements/meson.build index a66acaa5b8..3e42328f6c 100644 --- a/contrib/pg_stat_statements/meson.build +++ b/contrib/pg_stat_statements/meson.build @@ -60,4 +60,9 @@ tests += { # runningcheck users do not have (e.g. buildfarm clients). 'runningcheck': false, }, + 'tap': { + 'tests': [ + 't/010_restart.pl', + ], + }, } diff --git a/contrib/pg_stat_statements/t/010_restart.pl b/contrib/pg_stat_statements/t/010_restart.pl new file mode 100644 index 0000000000..bf0fba6bda --- /dev/null +++ b/contrib/pg_stat_statements/t/010_restart.pl @@ -0,0 +1,50 @@ +# Copyright (c) 2023, PostgreSQL Global Development Group + +# Tests for checking that pg_stat_statements contents are preserved +# across restarts. + +use strict; +use warnings; +use PostgreSQL::Test::Cluster; +use PostgreSQL::Test::Utils; +use Test::More; + +my $node = PostgreSQL::Test::Cluster->new('main'); +$node->init; +$node->append_conf('postgresql.conf', + "shared_preload_libraries = 'pg_stat_statements'"); +$node->start; + +$node->safe_psql('postgres', 'CREATE EXTENSION pg_stat_statements'); + +$node->safe_psql('postgres', 'CREATE TABLE t1 (a int)'); +$node->safe_psql('postgres', 'SELECT a FROM t1'); + +is( $node->safe_psql( + 'postgres', + "SELECT count(*) FROM pg_stat_statements WHERE query LIKE '%t1%'"), + '2', + 'pg_stat_statements populated'); + +$node->restart; + +is( $node->safe_psql( + 'postgres', + "SELECT count(*) FROM pg_stat_statements WHERE query LIKE '%t1%'"), + '2', + 'pg_stat_statements data kept across restart'); + +$node->append_conf('postgresql.conf', "pg_stat_statements.save = false"); +$node->reload; + +$node->restart; + +is( $node->safe_psql( + 'postgres', + "SELECT count(*) FROM pg_stat_statements WHERE query LIKE '%t1%'"), + '0', + 'pg_stat_statements data not kept across restart with .save=false'); + +$node->stop; + +done_testing(); -- 2.43.0