Skip to content

Commit 2b56a40

Browse files
author
ci bot
committed
Merge branch 'luis/history_fingerprint_tests' into 'enterprise'
Initial history update/Stale_Table test See merge request dkinternal/testgen/dataops-testgen!288
2 parents 61e2719 + 80c644b commit 2b56a40

51 files changed

Lines changed: 967 additions & 166 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

testgen/commands/queries/execute_tests_query.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,11 @@ def GetTestsNonCAT(self) -> tuple[str, dict]:
143143
query = CleanSQL(query)
144144
return query, params
145145

146-
def AddTestRecordtoTestRunTable(self) -> tuple[str, dict]:
147-
# Runs on App database
148-
return self._get_query("ex_write_test_record_to_testrun_table.sql")
146+
def GetHistoricThresholdUpdate(self) -> tuple[str, dict]:
147+
query, params = self._get_query("ex_update_history_threshold_last_n.sql")
148+
if self._use_clean:
149+
query = CleanSQL(query)
150+
return query, params
149151

150152
def PushTestRunStatusUpdateSQL(self) -> tuple[str, dict]:
151153
# Runs on App database

testgen/commands/queries/generate_tests_query.py

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from typing import ClassVar, TypedDict
33

44
from testgen.common import CleanSQL, date_service, read_template_sql_file
5-
from testgen.common.database.database_service import get_queries_for_command, replace_params
5+
from testgen.common.database.database_service import replace_params
6+
from testgen.common.read_file import get_template_files
67

78
LOG = logging.getLogger("testgen")
89

@@ -67,11 +68,35 @@ def GetTestTypesSQL(self) -> tuple[str, dict]:
6768

6869
def GetTestDerivationQueriesAsList(self, template_directory: str) -> list[tuple[str, dict]]:
6970
# Runs on App database
70-
params = self._get_params()
71-
queries = get_queries_for_command(template_directory, params)
72-
if self._use_clean:
73-
queries = [ CleanSQL(query) for query in queries ]
74-
return [ (query, params) for query in queries ]
71+
generic_template_directory = template_directory
72+
flavor_template_directory = f"flavors.{self.sql_flavor}.{template_directory}"
73+
74+
query_templates = {}
75+
try:
76+
for query_file in get_template_files(r"^.*sql$", generic_template_directory):
77+
query_templates[query_file.name] = generic_template_directory
78+
except:
79+
LOG.debug(
80+
f"query template '{generic_template_directory}' directory does not exist",
81+
exc_info=True,
82+
stack_info=True,
83+
)
84+
85+
try:
86+
for query_file in get_template_files(r"^.*sql$", flavor_template_directory):
87+
query_templates[query_file.name] = flavor_template_directory
88+
except:
89+
LOG.debug(
90+
f"query template '{generic_template_directory}' directory does not exist",
91+
exc_info=True,
92+
stack_info=True,
93+
)
94+
95+
queries = []
96+
for filename, sub_directory in query_templates.items():
97+
queries.append(self._get_query(filename, sub_directory=sub_directory))
98+
99+
return queries
75100

76101
def GetTestQueriesFromGenericFile(self) -> tuple[str, dict]:
77102
# Runs on App database

testgen/commands/run_execute_tests.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ def run_test_queries(
6868
clsExecute.process_id = process_service.get_current_process_id()
6969

7070
try:
71+
# Update Historic Test Thresholds
72+
LOG.info("CurrentStep: Updating Historic Test Thresholds")
73+
execute_db_queries([clsExecute.GetHistoricThresholdUpdate()])
74+
7175
# Retrieve non-CAT Queries
7276
LOG.info("CurrentStep: Retrieve Non-CAT Queries")
7377
lstTestSet = fetch_dict_from_db(*clsExecute.GetTestsNonCAT())

testgen/common/models/test_definition.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class TestDefinitionSummary(EntityMinimal):
6565
match_groupby_names: str
6666
match_having_condition: str
6767
custom_query: str
68+
history_calculation: str
69+
history_lookback: int
6870
test_active: str
6971
test_definition_status: str
7072
severity: str
@@ -177,6 +179,8 @@ class TestDefinition(Entity):
177179
match_subset_condition: str = Column(NullIfEmptyString)
178180
match_groupby_names: str = Column(NullIfEmptyString)
179181
match_having_condition: str = Column(NullIfEmptyString)
182+
history_calculation: str = Column(NullIfEmptyString)
183+
history_lookback: int = Column(ZeroIfEmptyInteger, default=0)
180184
test_mode: str = Column(String)
181185
custom_query: str = Column(QueryString)
182186
test_active: bool = Column(YNString, default="Y")

testgen/common/models/test_run.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class TestRunSummary(EntityMinimal):
4444
warning_ct: int
4545
failed_ct: int
4646
error_ct: int
47+
log_ct: int
4748
dismissed_ct: int
4849
dq_score_testing: float
4950

@@ -68,6 +69,7 @@ class TestRun(Entity):
6869
failed_ct: int = Column(Integer)
6970
warning_ct: int = Column(Integer)
7071
error_ct: int = Column(Integer)
72+
log_ct: int = Column(Integer)
7173
table_ct: int = Column(Integer)
7274
column_ct: int = Column(Integer)
7375
column_failed_ct: int = Column(Integer)
@@ -163,6 +165,13 @@ def select_summary(
163165
ELSE 0
164166
END
165167
) AS error_ct,
168+
SUM(
169+
CASE
170+
WHEN COALESCE(disposition, 'Confirmed') = 'Confirmed'
171+
AND result_status = 'Log' THEN 1
172+
ELSE 0
173+
END
174+
) AS log_ct,
166175
SUM(
167176
CASE
168177
WHEN COALESCE(disposition, 'Confirmed') IN ('Dismissed', 'Inactive') THEN 1
@@ -185,6 +194,7 @@ def select_summary(
185194
run_results.warning_ct,
186195
run_results.failed_ct,
187196
run_results.error_ct,
197+
run_results.log_ct,
188198
run_results.dismissed_ct,
189199
test_runs.dq_score_test_run AS dq_score_testing
190200
FROM test_runs

testgen/common/models/test_suite.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class TestSuiteSummary(EntityMinimal):
4343
last_run_warning_ct: int
4444
last_run_failed_ct: int
4545
last_run_error_ct: int
46+
last_run_log_ct: int
4647
last_run_dismissed_ct: int
4748

4849

@@ -122,6 +123,13 @@ def select_summary(cls, project_code: str, table_group_id: str | UUID | None = N
122123
ELSE 0
123124
END
124125
) AS error_ct,
126+
SUM(
127+
CASE
128+
WHEN COALESCE(test_results.disposition, 'Confirmed') = 'Confirmed'
129+
AND test_results.result_status = 'Log' THEN 1
130+
ELSE 0
131+
END
132+
) AS log_ct,
125133
SUM(
126134
CASE
127135
WHEN COALESCE(test_results.disposition, 'Confirmed') IN ('Dismissed', 'Inactive') THEN 1
@@ -161,6 +169,7 @@ def select_summary(cls, project_code: str, table_group_id: str | UUID | None = N
161169
last_run.warning_ct AS last_run_warning_ct,
162170
last_run.failed_ct AS last_run_failed_ct,
163171
last_run.error_ct AS last_run_error_ct,
172+
last_run.log_ct AS last_run_log_ct,
164173
last_run.dismissed_ct AS last_run_dismissed_ct
165174
FROM test_suites AS suites
166175
LEFT JOIN last_run

testgen/template/dbsetup/030_initialize_new_schema_structure.sql

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ CREATE TABLE test_definitions (
200200
match_subset_condition VARCHAR(500),
201201
match_groupby_names VARCHAR,
202202
match_having_condition VARCHAR(500),
203+
history_calculation VARCHAR(20),
204+
history_lookback INTEGER,
203205
test_mode VARCHAR(20),
204206
custom_query VARCHAR,
205207
test_active VARCHAR(10) DEFAULT 'Y':: CHARACTER VARYING,
@@ -443,33 +445,35 @@ CREATE TABLE data_column_chars (
443445
);
444446

445447
CREATE TABLE test_types (
446-
id VARCHAR,
447-
test_type VARCHAR(200) NOT NULL
448-
CONSTRAINT cat_tests_test_type_pk
449-
PRIMARY KEY,
450-
test_name_short VARCHAR(30),
451-
test_name_long VARCHAR(100),
452-
test_description VARCHAR(1000),
453-
except_message VARCHAR(1000),
454-
measure_uom VARCHAR(100),
455-
measure_uom_description VARCHAR(200),
456-
selection_criteria TEXT,
457-
dq_score_prevalence_formula TEXT,
458-
dq_score_risk_factor TEXT,
459-
column_name_prompt TEXT,
460-
column_name_help TEXT,
461-
default_parm_columns TEXT,
462-
default_parm_values TEXT,
463-
default_parm_prompts TEXT,
464-
default_parm_help TEXT,
465-
default_severity VARCHAR(10),
466-
run_type VARCHAR(10),
467-
test_scope VARCHAR,
468-
dq_dimension VARCHAR(50),
469-
health_dimension VARCHAR(50),
470-
threshold_description VARCHAR(200),
471-
usage_notes VARCHAR,
472-
active VARCHAR
448+
id VARCHAR,
449+
test_type VARCHAR(200) NOT NULL
450+
CONSTRAINT cat_tests_test_type_pk
451+
PRIMARY KEY,
452+
test_name_short VARCHAR(30),
453+
test_name_long VARCHAR(100),
454+
test_description VARCHAR(1000),
455+
except_message VARCHAR(1000),
456+
measure_uom VARCHAR(100),
457+
measure_uom_description VARCHAR(200),
458+
selection_criteria TEXT,
459+
dq_score_prevalence_formula TEXT,
460+
dq_score_risk_factor TEXT,
461+
column_name_prompt TEXT,
462+
column_name_help TEXT,
463+
default_parm_columns TEXT,
464+
default_parm_values TEXT,
465+
default_parm_prompts TEXT,
466+
default_parm_help TEXT,
467+
default_severity VARCHAR(10),
468+
run_type VARCHAR(10),
469+
test_scope VARCHAR,
470+
dq_dimension VARCHAR(50),
471+
health_dimension VARCHAR(50),
472+
threshold_description VARCHAR(200),
473+
result_visualization VARCHAR(50) DEFAULT 'line_chart',
474+
result_visualization_params TEXT DEFAULT NULL,
475+
usage_notes VARCHAR,
476+
active VARCHAR
473477
);
474478

475479
CREATE TABLE test_templates (
@@ -505,6 +509,7 @@ CREATE TABLE test_runs (
505509
failed_ct INTEGER,
506510
warning_ct INTEGER,
507511
error_ct INTEGER,
512+
log_ct INTEGER,
508513
table_ct INTEGER,
509514
column_ct INTEGER,
510515
column_failed_ct INTEGER,
@@ -538,6 +543,7 @@ CREATE TABLE test_results (
538543
severity VARCHAR(10),
539544
result_status VARCHAR(10),
540545
result_message VARCHAR(1000),
546+
result_signal VARCHAR(1000),
541547
result_measure VARCHAR(1000),
542548
threshold_value VARCHAR(1000),
543549
result_error_data VARCHAR(4000),

0 commit comments

Comments
 (0)