v2-0003-pg_stat_statements-Add-TAP-test-for-testing-resta.patch

text/plain

Filename: v2-0003-pg_stat_statements-Add-TAP-test-for-testing-resta.patch
Type: text/plain
Part: 2
Message: Re: pg_stat_statements: more test coverage

Patch

Format: format-patch
Series: patch v2-0003
Subject: pg_stat_statements: Add TAP test for testing restarts
File+
contrib/pg_stat_statements/Makefile 2 0
contrib/pg_stat_statements/meson.build 5 0
contrib/pg_stat_statements/t/010_restart.pl 53 0
From 3129dd32ff62350acbd179eea3683d27bea6adc7 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Wed, 27 Dec 2023 13:08:57 +0100
Subject: [PATCH v2 3/3] 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.)

Discussion: https://www.postgresql.org/message-id/flat/40d1e4f2-835f-448f-a541-8ff5db75bf3d@eisentraut.org
---
 contrib/pg_stat_statements/Makefile         |  2 +
 contrib/pg_stat_statements/meson.build      |  5 ++
 contrib/pg_stat_statements/t/010_restart.pl | 53 +++++++++++++++++++++
 3 files changed, 60 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..83a2bf0db8
--- /dev/null
+++ b/contrib/pg_stat_statements/t/010_restart.pl
@@ -0,0 +1,53 @@
+# 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 query FROM pg_stat_statements WHERE query NOT LIKE '%pg_stat_statements%' ORDER BY query"
+	),
+	"CREATE TABLE t1 (a int)\nSELECT a FROM t1",
+	'pg_stat_statements populated');
+
+$node->restart;
+
+is( $node->safe_psql(
+		'postgres',
+		"SELECT query FROM pg_stat_statements WHERE query NOT LIKE '%pg_stat_statements%' ORDER BY query"
+	),
+	"CREATE TABLE t1 (a int)\nSELECT a FROM t1",
+	'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 NOT LIKE '%pg_stat_statements%'"
+	),
+	'0',
+	'pg_stat_statements data not kept across restart with .save=false');
+
+$node->stop;
+
+done_testing();
-- 
2.43.0