Refactor ModelMetrics to utilize DriftAnalysis for drift detection - Replaced ModelAnalysis with DriftAnalysis in the ModelMetrics class to enhance drift detection capabilities. - Updated method signatures and documentation to reflect the changes in target_name and return values. - Adjusted data handling to ensure compatibility with the new analysis methods and improved clarity in the drift metrics dataframe preparation.
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
"""
|
|
Direct E2E execution of child workflows (smaller surface than PredictionsBatch).
|
|
"""
|
|
|
|
from decimal import Decimal
|
|
|
|
import pytest
|
|
from sqlalchemy import text
|
|
from temporalio.testing import WorkflowEnvironment
|
|
from temporalio.worker import Worker
|
|
|
|
from e2e.helpers import make_workflow_id, start_and_await_workflow
|
|
from laborious.workflows.sub_workflows.format_and_export_prediction import FormatAndExportPrediction
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
@pytest.mark.integration
|
|
async def test_format_and_export_prediction_default_path_e2e(
|
|
temporal_test_env: WorkflowEnvironment,
|
|
temporal_worker: Worker,
|
|
postgres_engine,
|
|
):
|
|
"""
|
|
Run FormatAndExportPrediction with path_flag set (format_default_prediction path).
|
|
"""
|
|
client = temporal_test_env.client
|
|
model_id = 401
|
|
with postgres_engine.begin() as conn:
|
|
conn.execute(text(f'DELETE FROM sientia_data.predictions WHERE model_id = {model_id}'))
|
|
|
|
metadata = {
|
|
'metadata': {
|
|
'model_id': model_id,
|
|
'model_name': 'test_model',
|
|
'schedule_name': 'test-schedule',
|
|
'workflow_name': 'subworkflow.format_and_export_prediction',
|
|
}
|
|
}
|
|
input_data = {
|
|
'metadata': metadata,
|
|
'path_flag': 'CONTINUE',
|
|
'data': {'last_timestamp': '2024-01-01 12:00:00+00:00'},
|
|
'prediction_confidence': 2,
|
|
'timestamp': '2024-01-01 12:00:00+00:00',
|
|
'model_id': model_id,
|
|
'model_name': 'test_model',
|
|
'schema': 'sientia_data',
|
|
'table_name': 'predictions',
|
|
'transform_table_name': 'transformed_data',
|
|
'comment': 'e2e child workflow default path',
|
|
'opc_output_config': {},
|
|
'pi_web_api_output_config': {},
|
|
'prediction_store_policy': 'lts:1',
|
|
}
|
|
|
|
await start_and_await_workflow(
|
|
client,
|
|
FormatAndExportPrediction.run,
|
|
input_data,
|
|
make_workflow_id('e2e-format-export-child'),
|
|
)
|
|
|
|
with postgres_engine.connect() as conn:
|
|
row = conn.execute(
|
|
text(
|
|
f'SELECT prediction, prediction_confidence, prediction_status, comments '
|
|
f'FROM sientia_data.predictions WHERE model_id = {model_id}'
|
|
)
|
|
).fetchone()
|
|
assert row is not None
|
|
assert row[0] == 0
|
|
assert row[1] == Decimal(2)
|
|
assert row[2] == 'Bad'
|
|
assert row[3] == 'e2e child workflow default path'
|