Mearge recent development
This commit is contained in:
@@ -0,0 +1,270 @@
|
||||
-- ===================================================================
|
||||
-- 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 ========================================
|
||||
Reference in New Issue
Block a user