Skip to content

Commit 63f0c78

Browse files
authored
chore: stop automatically deleting workflows that should be permanent (#2501)
1 parent 08da799 commit 63f0c78

2 files changed

Lines changed: 41 additions & 13 deletions

File tree

tests/conftest.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ def os_and_py_version() -> str:
3131
return f"{platform.system()}-{platform.python_version()}"
3232

3333

34+
@pytest.fixture(scope="session")
35+
def sdk_version() -> tuple[str, str, str]:
36+
# Nice to use to create resources that is unique per e.g. major version of the SDK
37+
from cognite.client import __version__
38+
39+
return tuple(__version__.split(".", 2)) # type: ignore [return-value]
40+
41+
3442
def pytest_addoption(parser):
3543
parser.addoption(
3644
"--test-deps-only-core", action="store_true", default=False, help="Test only core deps are installed"

tests/tests_integration/test_api/test_workflows.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,45 @@ def workflow_simint_routine(cognite_client: CogniteClient) -> str:
5151
return ensure_workflow_simint_routine(cognite_client)
5252

5353

54+
@pytest.fixture(scope="session")
55+
def permanent_wf_ext_id_prefix(os_and_py_version: str) -> str:
56+
return f"integ_test_wf_trigger_{os_and_py_version}"
57+
58+
59+
@pytest.fixture(scope="session")
60+
def permanent_wf_ext_id(permanent_wf_ext_id_prefix: str, sdk_version: tuple[str, str, str]) -> str:
61+
return f"{permanent_wf_ext_id_prefix}_{sdk_version[0]}"
62+
63+
5464
@pytest.fixture(autouse=True, scope="module")
55-
def wf_setup_module(cognite_client: CogniteClient) -> None:
65+
def wf_setup_module(cognite_client: CogniteClient, permanent_wf_ext_id_prefix: str) -> None:
5666
"""setup any state specific to the execution of the given module."""
5767
resource_age = timestamp_to_ms("30m-ago")
5868

5969
wf_triggers = cognite_client.workflows.triggers.list(limit=None)
60-
wf_triggers_to_delete = [wf.external_id for wf in wf_triggers if wf.last_updated_time < resource_age]
70+
wf_triggers_to_delete = [
71+
wft.external_id
72+
for wft in wf_triggers
73+
if wft.last_updated_time < resource_age and not wft.workflow_external_id.startswith(permanent_wf_ext_id_prefix)
74+
]
6175
if wf_triggers_to_delete:
6276
cognite_client.workflows.triggers.delete(wf_triggers_to_delete)
6377

6478
wf_versions = cognite_client.workflows.versions.list(limit=None)
6579
wf_versions_to_delete = [
66-
(wf.workflow_external_id, wf.version) for wf in wf_versions if wf.last_updated_time < resource_age
80+
(wf.workflow_external_id, wf.version)
81+
for wf in wf_versions
82+
if wf.last_updated_time < resource_age and not wf.workflow_external_id.startswith(permanent_wf_ext_id_prefix)
6783
]
6884
if wf_versions_to_delete:
6985
cognite_client.workflows.versions.delete(wf_versions_to_delete)
7086

7187
wfs = cognite_client.workflows.list(limit=None)
72-
wfs_to_delete = [wf.external_id for wf in wfs if wf.last_updated_time < resource_age]
88+
wfs_to_delete = [
89+
wf.external_id
90+
for wf in wfs
91+
if wf.last_updated_time < resource_age and not wf.external_id.startswith(permanent_wf_ext_id_prefix)
92+
]
7393
if wfs_to_delete:
7494
cognite_client.workflows.delete(wfs_to_delete)
7595

@@ -325,10 +345,8 @@ def workflow_execution_list_test_scoped(
325345

326346

327347
@pytest.fixture(scope="session")
328-
def permanent_workflow_for_triggers(cognite_client: CogniteClient):
329-
workflow = WorkflowUpsert(
330-
external_id="integration_test-workflow_for_triggers",
331-
)
348+
def permanent_workflow_for_triggers(cognite_client: CogniteClient, permanent_wf_ext_id: str):
349+
workflow = WorkflowUpsert(external_id=permanent_wf_ext_id)
332350
cognite_client.workflows.upsert(workflow)
333351
version = WorkflowVersionUpsert(
334352
workflow_external_id=workflow.external_id,
@@ -365,9 +383,8 @@ def permanent_scheduled_trigger(
365383
cognite_client: CogniteClient, permanent_workflow_for_triggers: WorkflowVersion
366384
) -> Iterator[WorkflowTrigger]:
367385
version = permanent_workflow_for_triggers
368-
every_minute_expression = "* * * * *"
369-
370-
on_the_minute = _create_scheduled_trigger(version, every_minute_expression)
386+
every_15min = "*/15 * * * *"
387+
on_the_minute = _create_scheduled_trigger(version, every_15min)
371388

372389
yield cognite_client.workflows.triggers.upsert(on_the_minute)
373390

@@ -680,9 +697,12 @@ def test_create_update_delete_data_modeling_trigger(
680697
self,
681698
cognite_client: CogniteClient,
682699
permanent_data_modeling_trigger: WorkflowTrigger,
700+
permanent_wf_ext_id_prefix: str,
683701
) -> None:
684702
assert permanent_data_modeling_trigger is not None
685-
assert permanent_data_modeling_trigger.external_id.startswith("data-modeling-trigger_integration_test-workflow")
703+
assert permanent_data_modeling_trigger.external_id.startswith(
704+
f"data-modeling-trigger_{permanent_wf_ext_id_prefix}"
705+
)
686706
actual = permanent_data_modeling_trigger.trigger_rule
687707
expected = WorkflowDataModelingTriggerRule(
688708
data_modeling_query=WorkflowTriggerDataModelingQuery(
@@ -697,7 +717,7 @@ def test_create_update_delete_data_modeling_trigger(
697717
batch_timeout=300,
698718
)
699719
assert actual.dump() == expected.dump()
700-
assert permanent_data_modeling_trigger.workflow_external_id.startswith("integration_test-workflow_")
720+
assert permanent_data_modeling_trigger.workflow_external_id.startswith(permanent_wf_ext_id_prefix)
701721
assert permanent_data_modeling_trigger.workflow_version == "v1"
702722
assert permanent_data_modeling_trigger.created_time is not None
703723
assert permanent_data_modeling_trigger.last_updated_time is not None

0 commit comments

Comments
 (0)