mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 18:43:18 +08:00
Rework debug waitpoint functionality to produce an error in case if the waitpoint is enabled. This update introduce a controlled way to simulate errors scenarios during testing.
68 lines
2.1 KiB
SQL
68 lines
2.1 KiB
SQL
-- This file and its contents are licensed under the Apache License 2.0.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-APACHE for a copy of the license.
|
|
|
|
\c :TEST_DBNAME :ROLE_SUPERUSER
|
|
CREATE OR REPLACE FUNCTION test.condition() RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_test_utils_condition' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
CREATE OR REPLACE FUNCTION test.int64_eq() RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_test_utils_int64_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
CREATE OR REPLACE FUNCTION test.ptr_eq() RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_test_utils_ptr_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
CREATE OR REPLACE FUNCTION test.double_eq() RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_test_utils_double_eq' LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
|
SET ROLE :ROLE_DEFAULT_PERM_USER;
|
|
|
|
-- We're testing that the test utils work and generate errors on
|
|
-- failing conditions
|
|
\set ON_ERROR_STOP 0
|
|
SELECT test.condition();
|
|
SELECT test.int64_eq();
|
|
SELECT test.ptr_eq();
|
|
SELECT test.double_eq();
|
|
\set ON_ERROR_STOP 1
|
|
|
|
-- Test debug points
|
|
--
|
|
\set ECHO all
|
|
|
|
\c :TEST_DBNAME :ROLE_SUPERUSER
|
|
CREATE OR REPLACE FUNCTION debug_point_enable(TEXT)
|
|
RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_debug_point_enable'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION debug_point_release(TEXT)
|
|
RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_debug_point_release'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
-- debug point already enabled
|
|
SELECT debug_point_enable('test_debug_point');
|
|
\set ON_ERROR_STOP 0
|
|
SELECT debug_point_enable('test_debug_point');
|
|
\set ON_ERROR_STOP 1
|
|
SELECT debug_point_release('test_debug_point');
|
|
|
|
-- debug point not enabled
|
|
\set ON_ERROR_STOP 0
|
|
SELECT debug_point_release('test_debug_point');
|
|
\set ON_ERROR_STOP 1
|
|
|
|
-- error injections
|
|
--
|
|
CREATE OR REPLACE FUNCTION test_error_injection(TEXT)
|
|
RETURNS VOID
|
|
AS :MODULE_PATHNAME, 'ts_test_error_injection'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
SELECT test_error_injection('test_error');
|
|
|
|
SELECT debug_point_enable('test_error');
|
|
\set ON_ERROR_STOP 0
|
|
SELECT test_error_injection('test_error');
|
|
\set ON_ERROR_STOP 1
|
|
|
|
SELECT debug_point_release('test_error');
|
|
SELECT test_error_injection('test_error');
|