From 654704f8c44432dd86acf5887c1b619979a3c325 Mon Sep 17 00:00:00 2001 From: Lee Dong Wook Date: Mon, 20 Jun 2022 22:57:19 +0900 Subject: [PATCH] Add TAP tests for pg_prewarm coverage --- contrib/pg_prewarm/Makefile | 2 + contrib/pg_prewarm/t/001_basic.pl | 69 +++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 contrib/pg_prewarm/t/001_basic.pl diff --git a/contrib/pg_prewarm/Makefile b/contrib/pg_prewarm/Makefile index b13ac3c813ce..9cfde8c4e4fa 100644 --- a/contrib/pg_prewarm/Makefile +++ b/contrib/pg_prewarm/Makefile @@ -10,6 +10,8 @@ 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" +TAP_TESTS = 1 + ifdef USE_PGXS PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/contrib/pg_prewarm/t/001_basic.pl b/contrib/pg_prewarm/t/001_basic.pl new file mode 100644 index 000000000000..4fbb156d2e4f --- /dev/null +++ b/contrib/pg_prewarm/t/001_basic.pl @@ -0,0 +1,69 @@ + +# 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'); +my $result; + +$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->safe_psql( + "postgres", + "CREATE EXTENSION pg_prewarm;" +); + +# create table +$node->safe_psql( + "postgres", + "CREATE TABLE test(c1 int);" + . "INSERT INTO test + SELECT generate_series(1, 100);" +); + +# test prefetch mode +SKIP: +{ + skip "prefetch is not supported by this build", 1 + if (!check_pg_config("#USE_PREFETCH 1")); + + $result = $node->safe_psql( + "postgres", + "SELECT pg_prewarm('test', 'prefetch');"); +} + +# test read mode +$node->safe_psql( + "postgres", + "SELECT pg_prewarm('test', 'read');"); + +# test buffer_mode +$node->safe_psql( + "postgres", + "SELECT pg_prewarm('test', 'buffer');"); + +#$node->restart; + +$node->stop; + +my $logfile = PostgreSQL::Test::Utils::slurp_file($node->logfile); +unlink($logfile); +$node->start; + +$node->wait_for_log("autoprewarm successfully prewarmed [1-9]+ of [1-9]+ previously-loaded blocks"); + +$node->stop; + +done_testing(); +