mirror of https://github.com/postgres/postgres
We had a little bit of coverage here thanks to e2f65f425,
but not enough; notably, autoprewarm wasn't exercised at all.
Dong Wook Lee, with help from Julien Rouhaud and myself
Discussion: https://postgr.es/m/20220629053812.mifmdrch5iuasg2s@home-desktop
pull/97/head
parent
3592e0ff98
commit
2865b4060a
@ -0,0 +1,4 @@ |
||||
# Generated subdirectories |
||||
/log/ |
||||
/results/ |
||||
/tmp_check/ |
||||
@ -0,0 +1,58 @@ |
||||
|
||||
# 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; |
||||
|
||||
# setup |
||||
$node->safe_psql("postgres", |
||||
"CREATE EXTENSION pg_prewarm;\n" |
||||
. "CREATE TABLE test(c1 int);\n" |
||||
. "INSERT INTO test SELECT generate_series(1, 100);"); |
||||
|
||||
# test read mode |
||||
my $result = |
||||
$node->safe_psql("postgres", "SELECT pg_prewarm('test', 'read');"); |
||||
like($result, qr/^[1-9][0-9]*$/, 'read mode succeeded'); |
||||
|
||||
# test buffer_mode |
||||
$result = |
||||
$node->safe_psql("postgres", "SELECT pg_prewarm('test', 'buffer');"); |
||||
like($result, qr/^[1-9][0-9]*$/, 'buffer mode succeeded'); |
||||
|
||||
# prefetch mode might or might not be available |
||||
my ($cmdret, $stdout, $stderr) = |
||||
$node->psql("postgres", "SELECT pg_prewarm('test', 'prefetch');"); |
||||
ok( ( $stdout =~ qr/^[1-9][0-9]*$/ |
||||
or $stderr =~ qr/prefetch is not supported by this build/), |
||||
'prefetch mode succeeded'); |
||||
|
||||
# test autoprewarm_dump_now() |
||||
$result = $node->safe_psql("postgres", "SELECT autoprewarm_dump_now();"); |
||||
like($result, qr/^[1-9][0-9]*$/, 'autoprewarm_dump_now succeeded'); |
||||
|
||||
# restart, to verify that auto prewarm actually works |
||||
$node->restart; |
||||
|
||||
$node->wait_for_log( |
||||
"autoprewarm successfully prewarmed [1-9][0-9]* of [0-9]+ previously-loaded blocks" |
||||
); |
||||
|
||||
$node->stop; |
||||
|
||||
done_testing(); |
||||
Loading…
Reference in new issue