Files
wehub-resource-sync bf2343b7e4
Integration Tests - MySQL + Elasticsearch / Detect Changes (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / integration-tests-mysql-elasticsearch (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Detect Changes (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / integration-tests-postgres-elasticsearch-redis (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Detect Changes (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / integration-tests-postgres-opensearch (push) Has been cancelled
Java Checkstyle / java-checkstyle (push) Has been cancelled
Maven Collate Tests / maven-collate-ci (push) Has been cancelled
OpenMetadata Service Unit Tests / openmetadata-service-unit-tests-status (push) Has been cancelled
Publish Package to Maven Central Repository / publish-maven-packages (push) Has been cancelled
OpenMetadata Service Unit Tests / Detect Changes (push) Has been cancelled
OpenMetadata Service Unit Tests / openmetadata-service-unit-tests (push) Has been cancelled
OpenMetadata Service Unit Tests / k8s_operator-unit-tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:35:45 +08:00

150 lines
5.6 KiB
Python

import os
import textwrap
import uuid
import pytest
from sqlalchemy import create_engine, text
from _openmetadata_testutils.helpers.docker import try_bind
from metadata.generated.schema.api.services.createDatabaseService import (
CreateDatabaseServiceRequest,
)
from metadata.generated.schema.entity.services.connections.database.cockroachConnection import (
CockroachConnection,
)
from metadata.generated.schema.entity.services.databaseService import (
DatabaseConnection,
DatabaseServiceType,
)
@pytest.fixture(scope="module")
def cockroach_container():
"""
Start a Cockroach container.
"""
from testcontainers.cockroachdb import CockroachDBContainer
from testcontainers.core.config import testcontainers_config
old_max_tries = testcontainers_config.max_tries
testcontainers_config.max_tries = 240
container = CockroachDBContainer(image="cockroachdb/cockroach:v23.1.0")
with try_bind(container, 26257, None) if not os.getenv("CI") else container as container:
testcontainers_config.max_tries = old_max_tries
engine = create_engine(container.get_connection_url())
with engine.connect() as conn:
conn.execute(
text(
textwrap.dedent(
"""
CREATE TABLE user_profiles (
user_id UUID PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT,
signup_date TIMESTAMP,
is_active BOOLEAN
);
"""
)
)
)
conn.commit()
yield container
@pytest.fixture(scope="module")
def create_service_request(cockroach_container):
return CreateDatabaseServiceRequest(
name=f"docker_test_cockroach_{uuid.uuid4().hex[:8]}",
serviceType=DatabaseServiceType.Cockroach,
connection=DatabaseConnection(
config=CockroachConnection(
username=cockroach_container.username,
authType={"password": cockroach_container.password},
hostPort=f"localhost:{cockroach_container.get_exposed_port(26257)}",
database=cockroach_container.dbname,
)
),
)
@pytest.fixture(scope="module")
def create_test_data(cockroach_container):
engine = create_engine(cockroach_container.get_connection_url())
setup_statements = [
"""
INSERT INTO user_profiles (user_id, first_name, last_name, email, signup_date, is_active)
VALUES (gen_random_uuid(), 'Alice', 'Smith', 'alice.smith@example.com', '2023-01-15 10:00:00', TRUE)
""",
"""
INSERT INTO user_profiles (user_id, first_name, last_name, email, signup_date, is_active)
VALUES (gen_random_uuid(), 'Bob', 'Jones', 'bob.jones@example.com', '2023-02-20 12:30:00', TRUE)
""",
"""
INSERT INTO user_profiles (user_id, first_name, last_name, email, signup_date, is_active)
VALUES (gen_random_uuid(), 'Carol', 'Williams', 'carol.williams@example.com', '2023-03-10 09:15:00', FALSE)
""",
"""
INSERT INTO user_profiles (user_id, first_name, last_name, email, signup_date, is_active)
VALUES (gen_random_uuid(), 'David', 'Brown', 'david.brown@example.com', '2023-04-05 14:45:00', TRUE)
""",
"""
INSERT INTO user_profiles (user_id, first_name, last_name, email, signup_date, is_active)
VALUES (gen_random_uuid(), 'Eve', 'Davis', 'eve.davis@example.com', '2023-05-22 08:00:00', FALSE)
""",
"""
CREATE TABLE kv (
k INT8 NOT NULL,
v BYTES NOT NULL,
CONSTRAINT kv_pkey PRIMARY KEY (k ASC)
)
""",
"INSERT INTO kv (k, v) VALUES (1, b'\\x00\\x01\\x02\\x03')",
"INSERT INTO kv (k, v) VALUES (2, b'\\x68\\x65\\x6c\\x6c\\x6f')",
"INSERT INTO kv (k, v) VALUES (3, b'\\xde\\xad\\xbe\\xef')",
"INSERT INTO kv (k, v) VALUES (4, b'\\xca\\xfe\\xba\\xbe')",
"INSERT INTO kv (k, v) VALUES (5, b'\\xff\\x00\\xff\\x00')",
"""
CREATE TABLE employees (
employee_id INT8 PRIMARY KEY DEFAULT unique_rowid(),
full_name TEXT NOT NULL,
email TEXT NOT NULL,
phone TEXT,
department TEXT,
hire_date TIMESTAMP
)
""",
"""
INSERT INTO employees (full_name, email, phone, department, hire_date)
VALUES ('John Doe', 'john.doe@company.com', '555-0101', 'Engineering', '2021-06-01 09:00:00')
""",
"""
INSERT INTO employees (full_name, email, phone, department, hire_date)
VALUES ('Jane Smith', 'jane.smith@company.com', '555-0102', 'Marketing', '2021-07-15 09:00:00')
""",
"""
INSERT INTO employees (full_name, email, phone, department, hire_date)
VALUES ('Robert Johnson', 'robert.johnson@company.com', '555-0103', 'Finance', '2022-01-10 09:00:00')
""",
"""
INSERT INTO employees (full_name, email, phone, department, hire_date)
VALUES ('Maria Garcia', 'maria.garcia@company.com', '555-0104', 'HR', '2022-03-20 09:00:00')
""",
"""
INSERT INTO employees (full_name, email, phone, department, hire_date)
VALUES ('James Wilson', 'james.wilson@company.com', '555-0105', 'Engineering', '2023-02-14 09:00:00')
""",
]
with engine.connect() as conn:
for stmt in setup_statements:
conn.execute(text(textwrap.dedent(stmt)))
conn.commit()
yield