Skip to main content

Test Types

TypeDescriptionPrerequisitesCommand
regressSQL regression testsNonemise run test:regress
tapPerl TAP tests (stress, concurrent, lifecycle)PG built with -Dtap_tests=enabled (see below)./scripts/run-tests.sh <pg_install> tap
isolationRace condition testsNonemise run test:isolation
stressHigh-load stress test with pgbenchNonemise run test:stress
clickhouseClickHouse integration testsDockermise run test:clickhouse
allRun all testsNone (skips TAP if unavailable)mise run test:all

Running Tests

# Run all tests (mise)
mise run test:all

# Via script with specific PG version
./scripts/run-tests.sh 18 all
./scripts/run-tests.sh 17 regress

# ClickHouse integration tests (requires Docker)
mise run clickhouse:start
mise run test:clickhouse
mise run clickhouse:stop

TAP Tests

TAP tests require PostgreSQL compiled with -Dtap_tests=enabled (Meson). Mise-installed PostgreSQL versions don’t include the Perl TAP modules, so you must build PostgreSQL from source.

1. Build PostgreSQL with TAP support

cd ../postgres
meson setup build_tap --prefix=$(pwd)/install_tap -Dtap_tests=enabled
ninja -C build_tap -j$(nproc)
ninja -C build_tap install

2. Build pg_stat_ch against it

cmake -B build -G Ninja -DPG_CONFIG=../postgres/install_tap/bin/pg_config
cmake --build build && cmake --install build

3. Run TAP tests

./scripts/run-tests.sh ../postgres/install_tap tap

Test Files

Regression Tests (test/regression/sql/)

FileDescription
basic.sqlExtension CREATE/DROP
version.sqlVersion function
guc.sqlGUC parameter validation
stats.sqlStats function output
utility.sqlDDL/utility statement tracking
buffers.sqlBuffer usage tracking
cmd_type.sqlCommand type classification
client_info.sqlApplication name and client address
error_capture.sqlError capture via emit_log_hook

TAP Tests (t/)

FileDescription
001_stress_test.plHigh-load stress test with pgbench
002_concurrent_sessions.plMultiple concurrent sessions
003_buffer_overflow.plQueue overflow handling
004_basic_lifecycle.plExtension lifecycle
005_settings.plGUC settings verification
006_query_capture.plQuery capture via executor hooks
007_utility_tracking.plDDL/utility statement tracking
008_error_capture.plError capture tests
009_bgworker.plBackground worker lifecycle
010_clickhouse_export.plClickHouse export integration
011_clickhouse_reconnect.plReconnection after ClickHouse restart
012_timing_accuracy.plTiming measurement accuracy
013_buffer_metrics.plBuffer usage metrics
014_cpu_metrics.plCPU time tracking
015_guc_validation.plGUC validation tests