mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-04 23:57:03 +00:00
159 lines
4.0 KiB
Python
159 lines
4.0 KiB
Python
import datahub.emitter.mcp_builder as builder
|
|
from datahub.metadata.schema_classes import StatusClass, TelemetryClientIdClass
|
|
|
|
|
|
def test_guid_generator():
|
|
key = builder.SchemaKey(
|
|
database="test", schema="Test", platform="mysql", instance="TestInstance"
|
|
)
|
|
|
|
guid = key.guid()
|
|
assert guid == "f096b3799fc86a3e5d5d0c083eb1f2a4"
|
|
|
|
|
|
def test_guid_generator_with_empty_instance():
|
|
key = builder.SchemaKey(
|
|
database="test",
|
|
schema="Test",
|
|
platform="mysql",
|
|
instance=None,
|
|
)
|
|
|
|
guid = key.guid()
|
|
assert guid == "693ed953c7192bcf46f8b9db36d71c2b"
|
|
|
|
|
|
def test_guid_generator_with_instance():
|
|
key = builder.SchemaKey(
|
|
database="test",
|
|
schema="Test",
|
|
platform="mysql",
|
|
instance="TestInstance",
|
|
backcompat_env_as_instance=True,
|
|
)
|
|
guid = key.guid()
|
|
assert guid == "f096b3799fc86a3e5d5d0c083eb1f2a4"
|
|
|
|
|
|
def test_guid_generator_with_instance_and_env():
|
|
key = builder.SchemaKey(
|
|
database="test",
|
|
schema="Test",
|
|
platform="mysql",
|
|
instance="TestInstance",
|
|
env="PROD",
|
|
backcompat_env_as_instance=True,
|
|
)
|
|
guid = key.guid()
|
|
assert guid == "f096b3799fc86a3e5d5d0c083eb1f2a4"
|
|
|
|
assert key.property_dict() == {
|
|
"database": "test",
|
|
"schema": "Test",
|
|
"platform": "mysql",
|
|
"instance": "TestInstance",
|
|
"env": "PROD",
|
|
}
|
|
|
|
|
|
def test_guid_generator_with_env():
|
|
key = builder.SchemaKey(
|
|
database="test",
|
|
schema="Test",
|
|
platform="mysql",
|
|
instance=None,
|
|
env="TestInstance",
|
|
backcompat_env_as_instance=True,
|
|
)
|
|
guid = key.guid()
|
|
assert guid == "f096b3799fc86a3e5d5d0c083eb1f2a4"
|
|
|
|
assert key.property_dict() == {
|
|
"database": "test",
|
|
"schema": "Test",
|
|
"platform": "mysql",
|
|
"env": "TestInstance",
|
|
}
|
|
|
|
|
|
def test_guid_generators():
|
|
key = builder.SchemaKey(
|
|
database="test", schema="Test", platform="mysql", instance="TestInstance"
|
|
)
|
|
guid_datahub = key.guid()
|
|
|
|
guid = key.guid()
|
|
assert guid == guid_datahub
|
|
|
|
|
|
def _assert_eq(a: builder.ContainerKey, b: builder.ContainerKey) -> None:
|
|
assert a == b
|
|
assert a.__class__ is b.__class__
|
|
assert a.guid() == b.guid()
|
|
assert a.property_dict() == b.property_dict()
|
|
|
|
|
|
def test_parent_key() -> None:
|
|
schema_key = builder.SchemaKey(
|
|
database="test",
|
|
schema="Test",
|
|
platform="mysql",
|
|
instance="TestInstance",
|
|
env="DEV",
|
|
)
|
|
db_key = schema_key.parent_key()
|
|
assert db_key is not None
|
|
_assert_eq(
|
|
db_key,
|
|
builder.DatabaseKey(
|
|
database="test",
|
|
platform="mysql",
|
|
instance="TestInstance",
|
|
env="DEV",
|
|
),
|
|
)
|
|
|
|
assert db_key.parent_key() is None
|
|
|
|
|
|
def test_parent_key_with_backcompat_env_as_instance() -> None:
|
|
schema_key = builder.SchemaKey(
|
|
database="test",
|
|
schema="Test",
|
|
platform="mysql",
|
|
instance=None,
|
|
env="PROD",
|
|
backcompat_env_as_instance=True,
|
|
)
|
|
db_key = schema_key.parent_key()
|
|
assert db_key is not None
|
|
_assert_eq(
|
|
db_key,
|
|
builder.DatabaseKey(
|
|
database="test",
|
|
platform="mysql",
|
|
instance=None,
|
|
env="PROD",
|
|
backcompat_env_as_instance=True,
|
|
),
|
|
)
|
|
|
|
|
|
def test_parent_key_on_container_key() -> None:
|
|
# In general, people shouldn't be calling parent_key() on ContainerKey directly.
|
|
# But just in case, we should make sure it works.
|
|
container_key = builder.ContainerKey(
|
|
platform="bigquery",
|
|
name="test",
|
|
env="DEV",
|
|
)
|
|
assert container_key.parent_key() is None
|
|
|
|
|
|
def test_entity_supports_aspect():
|
|
assert builder.entity_supports_aspect("dataset", StatusClass)
|
|
assert not builder.entity_supports_aspect("telemetry", StatusClass)
|
|
|
|
assert not builder.entity_supports_aspect("dataset", TelemetryClientIdClass)
|
|
assert builder.entity_supports_aspect("telemetry", TelemetryClientIdClass)
|