v2_add_test_pg_prewarm.patch

application/octet-stream

Filename: v2_add_test_pg_prewarm.patch
Type: application/octet-stream
Part: 1
Message: Re: Add test of pg_prewarm extenion

Patch

Format: format-patch
Series: patch v2
Subject: Add TAP tests for pg_prewarm coverage
File+
contrib/pg_prewarm/Makefile 2 0
contrib/pg_prewarm/t/001_basic.pl 65 0
From 38827467d774de06321563f69ddf9b47e4be5223 Mon Sep 17 00:00:00 2001
From: Lee Dong Wook <sh95119@gmail.com>
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 | 65 +++++++++++++++++++++++++++++++
 2 files changed, 67 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..a536f4ce143c
--- /dev/null
+++ b/contrib/pg_prewarm/t/001_basic.pl
@@ -0,0 +1,65 @@
+
+# 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;
+my $logfile = PostgreSQL::Test::Utils::slurp_file($node->logfile);
+
+ok ($logfile =~
+    qr/autoprewarm successfully prewarmed \d+ of \d+ previously-loaded blocks/);
+
+$node->stop;
+
+done_testing();
+