2022-07-06 02:57:23 +01:00
|
|
|
import os
|
2022-05-13 03:02:13 +01:00
|
|
|
import json
|
|
|
|
import pytest
|
|
|
|
from time import sleep
|
2022-07-14 22:04:06 +05:30
|
|
|
from datahub.cli.cli_utils import get_aspects_for_entity
|
2022-05-13 03:02:13 +01:00
|
|
|
from datahub.cli.ingest_cli import get_session_and_host
|
2022-07-14 22:04:06 +05:30
|
|
|
from datahub.cli.delete_cli import delete_references
|
|
|
|
from tests.utils import ingest_file_via_rest, wait_for_healthcheck_util
|
2023-01-31 18:44:37 -06:00
|
|
|
from requests_wrapper import ELASTICSEARCH_REFRESH_INTERVAL_SECONDS
|
2022-05-13 03:02:13 +01:00
|
|
|
|
2022-07-06 02:57:23 +01:00
|
|
|
# Disable telemetry
|
2022-08-06 05:05:23 +05:30
|
|
|
os.environ["DATAHUB_TELEMETRY_ENABLED"] = "false"
|
2022-07-06 02:57:23 +01:00
|
|
|
|
2022-07-14 22:04:06 +05:30
|
|
|
|
2022-07-06 02:57:23 +01:00
|
|
|
@pytest.fixture(scope="session")
|
|
|
|
def wait_for_healthchecks():
|
2022-07-14 22:04:06 +05:30
|
|
|
wait_for_healthcheck_util()
|
2022-07-06 02:57:23 +01:00
|
|
|
yield
|
|
|
|
|
2022-07-14 22:04:06 +05:30
|
|
|
|
2022-07-06 02:57:23 +01:00
|
|
|
@pytest.mark.dependency()
|
|
|
|
def test_healthchecks(wait_for_healthchecks):
|
|
|
|
# Call to wait_for_healthchecks fixture will do the actual functionality.
|
|
|
|
pass
|
|
|
|
|
2022-07-14 22:04:06 +05:30
|
|
|
|
2022-11-30 13:44:55 -06:00
|
|
|
@pytest.fixture(autouse=False)
|
2022-05-13 03:02:13 +01:00
|
|
|
def test_setup():
|
|
|
|
"""Fixture to execute asserts before and after a test is run"""
|
|
|
|
|
|
|
|
platform = "urn:li:dataPlatform:kafka"
|
|
|
|
dataset_name = "test-delete"
|
|
|
|
|
|
|
|
env = "PROD"
|
|
|
|
dataset_urn = f"urn:li:dataset:({platform},{dataset_name},{env})"
|
|
|
|
|
|
|
|
session, gms_host = get_session_and_host()
|
|
|
|
|
|
|
|
assert "browsePaths" not in get_aspects_for_entity(entity_urn=dataset_urn, aspects=["browsePaths"], typed=False)
|
|
|
|
assert "editableDatasetProperties" not in get_aspects_for_entity(entity_urn=dataset_urn, aspects=["editableDatasetProperties"], typed=False)
|
|
|
|
|
|
|
|
ingested_dataset_run_id = ingest_file_via_rest("tests/delete/cli_test_data.json").config.run_id
|
|
|
|
|
|
|
|
assert "browsePaths" in get_aspects_for_entity(entity_urn=dataset_urn, aspects=["browsePaths"], typed=False)
|
|
|
|
|
|
|
|
yield
|
|
|
|
rollback_url = f"{gms_host}/runs?action=rollback"
|
|
|
|
session.post(rollback_url, data=json.dumps({"runId": ingested_dataset_run_id, "dryRun": False, "hardDelete": True, "safe": False}))
|
|
|
|
|
2023-01-31 18:44:37 -06:00
|
|
|
sleep(ELASTICSEARCH_REFRESH_INTERVAL_SECONDS)
|
2022-05-13 03:02:13 +01:00
|
|
|
|
|
|
|
assert "browsePaths" not in get_aspects_for_entity(entity_urn=dataset_urn, aspects=["browsePaths"], typed=False)
|
|
|
|
assert "editableDatasetProperties" not in get_aspects_for_entity(entity_urn=dataset_urn, aspects=["editableDatasetProperties"], typed=False)
|
|
|
|
|
2022-07-14 22:04:06 +05:30
|
|
|
|
2022-05-13 03:02:13 +01:00
|
|
|
@pytest.mark.dependency()
|
2022-11-30 13:44:55 -06:00
|
|
|
def test_delete_reference(test_setup, depends=["test_healthchecks"]):
|
2022-05-13 03:02:13 +01:00
|
|
|
platform = "urn:li:dataPlatform:kafka"
|
|
|
|
dataset_name = "test-delete"
|
|
|
|
|
|
|
|
env = "PROD"
|
|
|
|
dataset_urn = f"urn:li:dataset:({platform},{dataset_name},{env})"
|
|
|
|
tag_urn = "urn:li:tag:NeedsDocs"
|
|
|
|
|
|
|
|
session, gms_host = get_session_and_host()
|
|
|
|
|
|
|
|
# Validate that the ingested tag is being referenced by the dataset
|
|
|
|
references_count, related_aspects = delete_references(tag_urn, dry_run=True, cached_session_host=(session, gms_host))
|
|
|
|
print("reference count: " + str(references_count))
|
|
|
|
print(related_aspects)
|
|
|
|
assert references_count == 1
|
|
|
|
assert related_aspects[0]['entity'] == dataset_urn
|
|
|
|
|
|
|
|
# Delete references to the tag
|
|
|
|
delete_references(tag_urn, dry_run=False, cached_session_host=(session, gms_host))
|
|
|
|
|
2023-01-31 18:44:37 -06:00
|
|
|
sleep(ELASTICSEARCH_REFRESH_INTERVAL_SECONDS)
|
2022-05-13 03:02:13 +01:00
|
|
|
|
|
|
|
# Validate that references no longer exist
|
|
|
|
references_count, related_aspects = delete_references(tag_urn, dry_run=True, cached_session_host=(session, gms_host))
|
|
|
|
assert references_count == 0
|