From 49cd2b93d7dbceefdf9a71cc301d284a2dd234c3 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 22 Jan 2024 13:32:28 +0900 Subject: Add test module injection_points MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This provides basic coverage for injection points within a single process, while providing some callbacks that can be used for other tests. There are plans to extend this module later with more advanced capabilities for tests. Author: Michael Paquier, with comment fixes from Ashutosh Bapat. Reviewed-by: Ashutosh Bapat, Nathan Bossart, Álvaro Herrera, Dilip Kumar, Amul Sul, Nazir Bilal Yavuz Discussion: https://postgr.es/m/ZTiV8tn_MIb_H2rE@paquier.xyz --- .../injection_points/sql/injection_points.sql | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/test/modules/injection_points/sql/injection_points.sql (limited to 'src/test/modules/injection_points/sql') diff --git a/src/test/modules/injection_points/sql/injection_points.sql b/src/test/modules/injection_points/sql/injection_points.sql new file mode 100644 index 00000000000..23c7e435ad2 --- /dev/null +++ b/src/test/modules/injection_points/sql/injection_points.sql @@ -0,0 +1,34 @@ +CREATE EXTENSION injection_points; + +SELECT injection_points_attach('TestInjectionBooh', 'booh'); +SELECT injection_points_attach('TestInjectionError', 'error'); +SELECT injection_points_attach('TestInjectionLog', 'notice'); +SELECT injection_points_attach('TestInjectionLog2', 'notice'); + +SELECT injection_points_run('TestInjectionBooh'); -- nothing +SELECT injection_points_run('TestInjectionLog2'); -- notice +SELECT injection_points_run('TestInjectionLog'); -- notice +SELECT injection_points_run('TestInjectionError'); -- error + +-- Re-load cache and run again. +\c +SELECT injection_points_run('TestInjectionLog2'); -- notice +SELECT injection_points_run('TestInjectionLog'); -- notice +SELECT injection_points_run('TestInjectionError'); -- error + +-- Remove one entry and check the remaining entries. +SELECT injection_points_detach('TestInjectionError'); -- ok +SELECT injection_points_run('TestInjectionLog'); -- notice +SELECT injection_points_run('TestInjectionError'); -- nothing +-- More entries removed, letting TestInjectionLog2 to check the same +-- callback used in more than one point. +SELECT injection_points_detach('TestInjectionLog'); -- ok +SELECT injection_points_run('TestInjectionLog'); -- nothing +SELECT injection_points_run('TestInjectionError'); -- nothing +SELECT injection_points_run('TestInjectionLog2'); -- notice + +SELECT injection_points_detach('TestInjectionLog'); -- fails + +SELECT injection_points_run('TestInjectionLog2'); -- notice + +DROP EXTENSION injection_points; -- cgit v1.2.3