Hi hackers,
I wrote a test for pg_prewarm extension. and I wrote it with the aim of 
improving test coverage, and feedback is always welcome.

---
Regards
DongWook Lee

diff --git a/contrib/pg_prewarm/Makefile b/contrib/pg_prewarm/Makefile
index b13ac3c813..617ac8e09b 100644
--- a/contrib/pg_prewarm/Makefile
+++ b/contrib/pg_prewarm/Makefile
@@ -10,6 +10,10 @@ EXTENSION = pg_prewarm
 DATA = pg_prewarm--1.1--1.2.sql pg_prewarm--1.1.sql pg_prewarm--1.0--1.1.sql
 PGFILEDESC = "pg_prewarm - preload relation data into system buffer cache"
 
+REGRESS = pg_prewarm
+
+TAP_TESTS = 1
+
 ifdef USE_PGXS
 PG_CONFIG = pg_config
 PGXS := $(shell $(PG_CONFIG) --pgxs)
diff --git a/contrib/pg_prewarm/expected/pg_prewarm.out b/contrib/pg_prewarm/expected/pg_prewarm.out
new file mode 100644
index 0000000000..325e545cee
--- /dev/null
+++ b/contrib/pg_prewarm/expected/pg_prewarm.out
@@ -0,0 +1,35 @@
+--
+-- Test pg_prewarm extension
+--
+CREATE EXTENSION pg_prewarm;
+CREATE TABLE t1 (c1 integer);
+INSERT INTO t1 VALUES (1);
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+--
+-- prefetch mode
+--
+SELECT pg_prewarm('t1', 'prefetch');
+ pg_prewarm 
+------------
+          1
+(1 row)
+
+--
+-- read mode
+--
+SELECT pg_prewarm('t1', 'read');
+ pg_prewarm 
+------------
+          1
+(1 row)
+
+--
+-- buffer_mode
+--
+SELECT pg_prewarm('t1', 'buffer');
+ pg_prewarm 
+------------
+          1
+(1 row)
+
diff --git a/contrib/pg_prewarm/sql/pg_prewarm.sql b/contrib/pg_prewarm/sql/pg_prewarm.sql
new file mode 100644
index 0000000000..29646f5835
--- /dev/null
+++ b/contrib/pg_prewarm/sql/pg_prewarm.sql
@@ -0,0 +1,28 @@
+--
+-- Test pg_prewarm extension
+--
+
+CREATE EXTENSION pg_prewarm;
+
+CREATE TABLE t1 (c1 integer);
+
+INSERT INTO t1 VALUES (1);
+INSERT INTO t1 VALUES (2);
+INSERT INTO t1 VALUES (3);
+
+
+--
+-- prefetch mode
+--
+SELECT pg_prewarm('t1', 'prefetch');
+
+--
+-- read mode
+--
+SELECT pg_prewarm('t1', 'read');
+
+--
+-- buffer_mode
+--
+SELECT pg_prewarm('t1', 'buffer');
+
diff --git a/contrib/pg_prewarm/t/001_basic.pl b/contrib/pg_prewarm/t/001_basic.pl
new file mode 100644
index 0000000000..3fcb438d07
--- /dev/null
+++ b/contrib/pg_prewarm/t/001_basic.pl
@@ -0,0 +1,34 @@
+
+# Copyright (c) 2021-2022, PostgreSQL Global Development Group
+
+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',
+    qq{shared_preload_libraries = 'pg_prewarm'
+    pg_prewarm.autoprewarm = true
+    pg_prewarm.autoprewarm_interval = 0});
+$node->start;
+$node->stop;
+$node->append_conf('postgresql.conf',
+    qq{shared_preload_libraries = 'pg_prewarm'
+    pg_prewarm.autoprewarm = true
+    pg_prewarm.autoprewarm_interval = 1s});
+
+$node->restart;
+
+my $logfile = PostgreSQL::Test::Utils::slurp_file($node->logfile);
+
+ok ($logfile =~
+    qr/autoprewarm successfully prewarmed 0 of 1 previously-loaded blocks/);
+
+done_testing();
+

Reply via email to