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(); +