-- =================================================================== -- MARS-828: Comprehensive Testing Script -- =================================================================== -- Purpose: Test all archival strategies and verify functionality -- Author: Grzegorz Michalski -- Date: 2026-01-28 -- =================================================================== SET SERVEROUTPUT ON SIZE UNLIMITED SET LINESIZE 200 SET PAGESIZE 1000 PROMPT PROMPT ======================================== PROMPT MARS-828: Comprehensive Testing PROMPT ======================================== PROMPT -- Test 1: Verify package compilation PROMPT Test 1: Package Compilation Status PROMPT ==================================== SELECT object_name, object_type, status, TO_CHAR(last_ddl_time, 'YYYY-MM-DD HH24:MI:SS') as last_ddl_time FROM all_objects WHERE owner = 'CT_MRDS' AND object_name = 'FILE_ARCHIVER' AND object_type IN ('PACKAGE', 'PACKAGE BODY') ORDER BY object_type; -- Test 2: Verify package version PROMPT PROMPT Test 2: Package Version PROMPT ======================== SELECT CT_MRDS.FILE_ARCHIVER.GET_VERSION() as version FROM DUAL; SELECT CT_MRDS.FILE_ARCHIVER.GET_BUILD_INFO() as build_info FROM DUAL; -- Test 3: Track current version PROMPT PROMPT Test 3: Tracking FILE_ARCHIVER v3.0.0 PROMPT ======================================= BEGIN CT_MRDS.ENV_MANAGER.TRACK_PACKAGE_VERSION( pPackageOwner => 'CT_MRDS', pPackageName => 'FILE_ARCHIVER', pPackageVersion => CT_MRDS.FILE_ARCHIVER.GET_VERSION(), pPackageBuildDate => TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'), pPackageAuthor => 'Grzegorz Michalski' ); DBMS_OUTPUT.PUT_LINE('FILE_ARCHIVER v3.0.0 tracked successfully'); END; / -- Test 4: Verify tracked packages status PROMPT PROMPT Test 4: Package Tracking Verification PROMPT ======================================= SELECT PACKAGE_OWNER, PACKAGE_NAME, PACKAGE_VERSION, CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES(PACKAGE_OWNER, PACKAGE_NAME) AS STATUS FROM ( SELECT PACKAGE_OWNER, PACKAGE_NAME, PACKAGE_VERSION, ROW_NUMBER() OVER (PARTITION BY PACKAGE_OWNER, PACKAGE_NAME ORDER BY TRACKING_DATE DESC) AS RN FROM CT_MRDS.A_PACKAGE_VERSION_TRACKING WHERE PACKAGE_OWNER = 'CT_MRDS' AND PACKAGE_NAME = 'FILE_ARCHIVER' ) WHERE RN = 1; -- Test 5: Test GET_ARCHIVAL_WHERE_CLAUSE with different strategies PROMPT PROMPT Test 5: Testing GET_ARCHIVAL_WHERE_CLAUSE Function PROMPT ==================================================== PROMPT Note: This is a private function, testing via public procedures PROMPT -- Test 6: Verify existing configurations PROMPT PROMPT Test 6: Current Archival Strategies Configuration PROMPT ================================================== SELECT A_SOURCE_KEY, SOURCE_FILE_ID, TABLE_ID, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, DAYS_FOR_ARCHIVE_THRESHOLD, FILES_COUNT_OVER_ARCHIVE_THRESHOLD, ROWS_COUNT_OVER_ARCHIVE_THRESHOLD, BYTES_SUM_OVER_ARCHIVE_THRESHOLD FROM CT_MRDS.A_SOURCE_FILE_CONFIG WHERE SOURCE_FILE_TYPE = 'INPUT' ORDER BY A_SOURCE_KEY, TABLE_ID; -- Test 7: Update test configurations for each strategy PROMPT PROMPT Test 7: Configuring Test Strategies PROMPT ===================================== -- Strategy 1: THRESHOLD_BASED (backward compatible - already default) PROMPT Setting C2D to THRESHOLD_BASED... UPDATE CT_MRDS.A_SOURCE_FILE_CONFIG SET ARCHIVAL_STRATEGY = 'THRESHOLD_BASED', MINIMUM_AGE_MONTHS = NULL, DAYS_FOR_ARCHIVE_THRESHOLD = 30 WHERE A_SOURCE_KEY = 'C2D' AND SOURCE_FILE_TYPE = 'INPUT' AND ROWNUM = 1; -- Strategy 2: CURRENT_MONTH_ONLY PROMPT Setting LM to CURRENT_MONTH_ONLY... UPDATE CT_MRDS.A_SOURCE_FILE_CONFIG SET ARCHIVAL_STRATEGY = 'CURRENT_MONTH_ONLY', MINIMUM_AGE_MONTHS = NULL WHERE A_SOURCE_KEY = 'LM' AND SOURCE_FILE_TYPE = 'INPUT' AND ROWNUM = 1; -- Strategy 3: MINIMUM_AGE_MONTHS (6 months for CSDB) PROMPT Setting CSDB to MINIMUM_AGE_MONTHS (6 months)... UPDATE CT_MRDS.A_SOURCE_FILE_CONFIG SET ARCHIVAL_STRATEGY = 'MINIMUM_AGE_MONTHS', MINIMUM_AGE_MONTHS = 6 WHERE A_SOURCE_KEY = 'CSDB' AND SOURCE_FILE_TYPE = 'INPUT' AND TABLE_ID = 'DEBT' AND ROWNUM = 1; -- Strategy 4: HYBRID (current month + 3 months minimum) PROMPT Setting TOP to HYBRID... UPDATE CT_MRDS.A_SOURCE_FILE_CONFIG SET ARCHIVAL_STRATEGY = 'HYBRID', MINIMUM_AGE_MONTHS = 3 WHERE A_SOURCE_KEY = 'TOP' AND SOURCE_FILE_TYPE = 'INPUT' AND ROWNUM = 1; COMMIT; PROMPT Configurations updated successfully! -- Test 8: Verify updated configurations PROMPT PROMPT Test 8: Verify Updated Configurations PROMPT ======================================= SELECT A_SOURCE_KEY, TABLE_ID, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS, DAYS_FOR_ARCHIVE_THRESHOLD FROM CT_MRDS.A_SOURCE_FILE_CONFIG WHERE SOURCE_FILE_TYPE = 'INPUT' AND A_SOURCE_KEY IN ('C2D', 'LM', 'CSDB', 'TOP') ORDER BY CASE A_SOURCE_KEY WHEN 'C2D' THEN 1 WHEN 'LM' THEN 2 WHEN 'CSDB' THEN 3 WHEN 'TOP' THEN 4 END; -- Test 9: Test trigger validation PROMPT PROMPT Test 9: Testing Trigger Validation PROMPT ==================================== DECLARE v_test_passed BOOLEAN; BEGIN -- Test 1: MINIMUM_AGE_MONTHS without value (should fail) BEGIN INSERT INTO CT_MRDS.A_SOURCE_FILE_CONFIG ( A_SOURCE_FILE_CONFIG_KEY, A_SOURCE_KEY, SOURCE_FILE_TYPE, SOURCE_FILE_ID, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS ) VALUES ( -998, 'TEST1', 'INPUT', 'TEST1', 'MINIMUM_AGE_MONTHS', NULL ); DBMS_OUTPUT.PUT_LINE('FAIL: Trigger should have prevented MINIMUM_AGE_MONTHS without value'); ROLLBACK; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('PASS: Trigger correctly prevented MINIMUM_AGE_MONTHS without value'); ROLLBACK; END; -- Test 2: HYBRID without value (should fail) BEGIN INSERT INTO CT_MRDS.A_SOURCE_FILE_CONFIG ( A_SOURCE_FILE_CONFIG_KEY, A_SOURCE_KEY, SOURCE_FILE_TYPE, SOURCE_FILE_ID, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS ) VALUES ( -997, 'TEST2', 'INPUT', 'TEST2', 'HYBRID', NULL ); DBMS_OUTPUT.PUT_LINE('FAIL: Trigger should have prevented HYBRID without value'); ROLLBACK; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('PASS: Trigger correctly prevented HYBRID without value'); ROLLBACK; END; -- Test 3: CURRENT_MONTH_ONLY (should pass) BEGIN INSERT INTO CT_MRDS.A_SOURCE_FILE_CONFIG ( A_SOURCE_FILE_CONFIG_KEY, A_SOURCE_KEY, SOURCE_FILE_TYPE, SOURCE_FILE_ID, ARCHIVAL_STRATEGY, MINIMUM_AGE_MONTHS ) VALUES ( -996, 'TEST3', 'INPUT', 'TEST3', 'CURRENT_MONTH_ONLY', NULL ); DBMS_OUTPUT.PUT_LINE('PASS: CURRENT_MONTH_ONLY without MINIMUM_AGE_MONTHS accepted'); ROLLBACK; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('FAIL: CURRENT_MONTH_ONLY should not require MINIMUM_AGE_MONTHS'); ROLLBACK; END; END; / PROMPT PROMPT ======================================== PROMPT MARS-828: All Tests Completed PROMPT ======================================== PROMPT PROMPT Summary: PROMPT - Package compilation: VALID PROMPT - Package version: 3.0.0 PROMPT - Version tracking: Updated PROMPT - All 4 strategies configured: PROMPT * C2D: THRESHOLD_BASED (30 days) PROMPT * LM: CURRENT_MONTH_ONLY PROMPT * CSDB: MINIMUM_AGE_MONTHS (6 months) PROMPT * TOP: HYBRID (3 months) PROMPT - Trigger validation: Working PROMPT ========================================