regress-timeout-default-var-v1.patch
text/plain
Filename: regress-timeout-default-var-v1.patch
Type: text/plain
Part: 1
Message:
Timeout control within tests
Patch
Format: unified
Series: patch v1
| File | + | − |
|---|---|---|
| contrib/test_decoding/expected/twophase.out | 4 | 1 |
| contrib/test_decoding/sql/twophase.sql | 4 | 1 |
| src/test/regress/expected/stats.out | 4 | 1 |
| src/test/regress/sql/stats.sql | 4 | 1 |
Author: Noah Misch <noah@leadboat.com>
Commit: Noah Misch <noah@leadboat.com>
Use PG_TEST_TIMEOUT_DEFAULT for pg_regress suite can't-happen timeouts.
Currently, only contrib/test_decoding has this property. Use \getenv to
load the timeout value.
Reviewed by FIXME.
Discussion: https://postgr.es/m/FIXME
diff --git a/contrib/test_decoding/expected/twophase.out b/contrib/test_decoding/expected/twophase.out
index e5e0f96..e89dc74 100644
--- a/contrib/test_decoding/expected/twophase.out
+++ b/contrib/test_decoding/expected/twophase.out
@@ -137,7 +137,10 @@ WHERE locktype = 'relation'
(3 rows)
-- The above CLUSTER command shouldn't cause a timeout on 2pc decoding.
-SET statement_timeout = '180s';
+\set env_timeout ''
+\getenv env_timeout PG_TEST_TIMEOUT_DEFAULT
+SELECT COALESCE(NULLIF(:'env_timeout', ''), '180') || 's' AS timeout \gset
+SET statement_timeout = :'timeout';
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
data
---------------------------------------------------------------------------
diff --git a/contrib/test_decoding/sql/twophase.sql b/contrib/test_decoding/sql/twophase.sql
index 05f18e8..aff5114 100644
--- a/contrib/test_decoding/sql/twophase.sql
+++ b/contrib/test_decoding/sql/twophase.sql
@@ -69,7 +69,10 @@ FROM pg_locks
WHERE locktype = 'relation'
AND relation = 'test_prepared1'::regclass;
-- The above CLUSTER command shouldn't cause a timeout on 2pc decoding.
-SET statement_timeout = '180s';
+\set env_timeout ''
+\getenv env_timeout PG_TEST_TIMEOUT_DEFAULT
+SELECT COALESCE(NULLIF(:'env_timeout', ''), '180') || 's' AS timeout \gset
+SET statement_timeout = :'timeout';
SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1');
RESET statement_timeout;
COMMIT PREPARED 'test_prepared_lock';
diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out
index 3e9ab09..b7416c8 100644
--- a/src/test/regress/expected/stats.out
+++ b/src/test/regress/expected/stats.out
@@ -34,7 +34,10 @@ declare
updated3 bool;
updated4 bool;
begin
- -- we don't want to wait forever; loop will exit after 30 seconds
+ -- We don't want to wait forever. No timeout suffices if the OS drops our
+ -- stats traffic because an earlier test file left a full UDP buffer.
+ -- Hence, don't use PG_TEST_TIMEOUT_DEFAULT, which may be large for
+ -- can't-happen timeouts. Exit after 30 seconds.
for i in 1 .. 300 loop
-- With parallel query, the seqscan and indexscan on tenk2 might be done
diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql
index 82e6f24..dbc2dd2 100644
--- a/src/test/regress/sql/stats.sql
+++ b/src/test/regress/sql/stats.sql
@@ -33,7 +33,10 @@ declare
updated3 bool;
updated4 bool;
begin
- -- we don't want to wait forever; loop will exit after 30 seconds
+ -- We don't want to wait forever. No timeout suffices if the OS drops our
+ -- stats traffic because an earlier test file left a full UDP buffer.
+ -- Hence, don't use PG_TEST_TIMEOUT_DEFAULT, which may be large for
+ -- can't-happen timeouts. Exit after 30 seconds.
for i in 1 .. 300 loop
-- With parallel query, the seqscan and indexscan on tenk2 might be done