Skip to content

Commit 70c9875

Browse files
committed
✅ Fix object deletion tests, still need to investigate folder deletion
1 parent f738d2a commit 70c9875

File tree

2 files changed

+30
-40
lines changed

2 files changed

+30
-40
lines changed

simvue/client.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,7 +1153,7 @@ def delete_tag(self, tag_id: str) -> None:
11531153

11541154
@prettify_pydantic
11551155
@pydantic.validate_call
1156-
def get_tag(self, tag_id: str) -> Tag | None:
1156+
def get_tag(self, tag_id: str) -> Tag:
11571157
"""Retrieve a single tag
11581158
11591159
Parameters
@@ -1170,8 +1170,7 @@ def get_tag(self, tag_id: str) -> Tag | None:
11701170
------
11711171
RuntimeError
11721172
if retrieval of information from the server on this tag failed
1173+
ObjectNotFoundError
1174+
if tag does not exist
11731175
"""
1174-
try:
1175-
return Tag(identifier=tag_id)
1176-
except ObjectNotFoundError:
1177-
return None
1176+
return Tag(identifier=tag_id)

tests/functional/test_client.py

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def test_get_alerts(
8989
else:
9090
assert len(_alerts) == 2
9191
assert f"user_alert_2_{unique_id}" in _alerts
92-
92+
9393
@pytest.mark.dependency
9494
@pytest.mark.client
9595
def test_get_run_id_from_name(create_test_run: tuple[sv_run.Run, dict]) -> None:
@@ -273,46 +273,35 @@ def test_get_tag(create_plain_run: tuple[sv_run.Run, dict]) -> None:
273273
assert any(tag.name == run_data["tags"][-1] for _, tag in client.get_tags())
274274

275275

276-
PRE_DELETION_TESTS: list[str] = [
277-
"test_get_metrics",
278-
"test_get_runs",
279-
"test_get_run",
280-
"test_get_artifact_as_file",
281-
"test_get_artifacts_as_files",
282-
"test_get_folders",
283-
"test_get_metrics_names",
284-
"test_get_metrics_multiple",
285-
"test_plot_metrics",
286-
"test_get_run_id_from_name",
287-
"test_get_folder",
288-
"test_get_tags"
289-
]
290-
291-
292276
@pytest.mark.dependency
293-
@pytest.mark.client(depends=PRE_DELETION_TESTS)
277+
@pytest.mark.client
294278
def test_run_deletion() -> None:
295279
run = sv_run.Run()
296280
run.init(name="test_run_deletion", folder="/simvue_unit_testing", tags=["test_run_deletion"], retention_period="1 min")
297281
run.log_metrics({"x": 2})
298282
run.close()
299283
client = svc.Client()
300284
assert not client.delete_run(run.id)
285+
with pytest.raises(ObjectNotFoundError):
286+
client.get_run(run.id)
301287

302288

303289
@pytest.mark.dependency
304-
@pytest.mark.client(depends=PRE_DELETION_TESTS)
290+
@pytest.mark.client
305291
def test_runs_deletion() -> None:
306292
_runs = [sv_run.Run() for _ in range(5)]
307293
for i, run in enumerate(_runs):
308294
run.init(name="test_runs_deletion", folder="/simvue_unit_testing/runs_batch", tags=["test_runs_deletion"], retention_period="1 min")
309295
run.log_metrics({"x": i})
310296
client = svc.Client()
311297
assert len(client.delete_runs("/simvue_unit_testing/runs_batch")) > 0
298+
for run in _runs:
299+
with pytest.raises(ObjectNotFoundError):
300+
client.get_run(run.id)
312301

313302

314303
@pytest.mark.dependency
315-
@pytest.mark.client(depends=PRE_DELETION_TESTS)
304+
@pytest.mark.client
316305
def test_get_tags(create_plain_run: tuple[sv_run.Run, dict]) -> None:
317306
run, run_data = create_plain_run
318307
tags = run_data["tags"]
@@ -324,14 +313,18 @@ def test_get_tags(create_plain_run: tuple[sv_run.Run, dict]) -> None:
324313

325314

326315
@pytest.mark.dependency
327-
@pytest.mark.client(depends=PRE_DELETION_TESTS + ["test_runs_deletion"])
328-
def test_folder_deletion(create_test_run: tuple[sv_run.Run, dict]) -> None:
329-
run, run_data = create_test_run
316+
@pytest.mark.client
317+
def test_folder_deletion() -> None:
318+
run = sv_run.Run()
319+
run.init(name="test_folder_deletion", folder="/simvue_unit_testing/delete_me", tags=["test_folder_deletion"], retention_period="1 min")
330320
run.close()
331321
client = svc.Client()
332322
# This test is called last, one run created so expect length 1
333-
assert len(client.delete_folder(run_data["folder"], remove_runs=True)) == 1
334-
assert not client.get_folder(run_data["folder"])
323+
assert len(client.delete_folder("/simvue_unit_testing/delete_me", remove_runs=True)) == 1
324+
time.sleep(10)
325+
assert not client.get_folder("/simvue_unit_testing/delete_me")
326+
with pytest.raises(ObjectNotFoundError):
327+
client.get_run(run_id=run.id)
335328

336329

337330
@pytest.mark.client
@@ -348,20 +341,20 @@ def test_run_folder_metadata_find(create_plain_run: tuple[sv_run.Run, dict]) ->
348341

349342

350343
@pytest.mark.client
351-
def test_tag_deletion(create_plain_run: tuple[sv_run.Run, dict]) -> None:
352-
run, run_data = create_plain_run
344+
def test_tag_deletion() -> None:
345+
run = sv_run.Run()
346+
run.init(name="test_folder_deletion", folder="/simvue_unit_testing/delete_me", tags=["test_tag_deletion"], retention_period="1 min")
347+
run.close()
353348
unique_id = f"{uuid.uuid4()}".split("-")[0]
354-
run.update_tags([f"delete_me_{unique_id}"])
349+
run.update_tags([(tag_str := f"delete_me_{unique_id}")])
355350
run.close()
356-
time.sleep(1.0)
357351
client = svc.Client()
358352
tags = client.get_tags()
359353
client.delete_run(run.id)
360-
time.sleep(1.0)
361-
tag_identifier = [identifier for identifier, tag in tags if tag.name == f"delete_me_{unique_id}"][0]
354+
tag_identifier = [identifier for identifier, tag in tags if tag.name == tag_str][0]
362355
client.delete_tag(tag_identifier)
363-
time.sleep(1.0)
364-
assert not client.get_tag(tag_identifier)
356+
with pytest.raises(ObjectNotFoundError):
357+
client.get_tag(tag_identifier)
365358

366359

367360
@pytest.mark.dependency
@@ -407,9 +400,7 @@ def test_alert_deletion() -> None:
407400
_alert = sv_api_obj.UserAlert.new(name="test_alert", notification="none", description=None)
408401
_alert.commit()
409402
_client = svc.Client()
410-
time.sleep(1)
411403
_client.delete_alert(alert_id=_alert.id)
412-
413404
with pytest.raises(ObjectNotFoundError) as e:
414405
sv_api_obj.Alert(identifier=_alert.id)
415406

0 commit comments

Comments
 (0)