mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
100 lines
2.7 KiB
Python
100 lines
2.7 KiB
Python
import os
|
|
|
|
import pytest
|
|
|
|
from helpers.cluster import ClickHouseCluster
|
|
from helpers.mock_servers import start_mock_servers
|
|
|
|
METADATA_SERVER_HOSTNAME = "node_imds"
|
|
METADATA_SERVER_PORT = 8080
|
|
|
|
cluster = ClickHouseCluster(__file__)
|
|
node_imds = cluster.add_instance(
|
|
"node_imds",
|
|
main_configs=["configs/imds_bootstrap.xml"],
|
|
env_variables={
|
|
"AWS_EC2_METADATA_SERVICE_ENDPOINT": f"http://{METADATA_SERVER_HOSTNAME}:{METADATA_SERVER_PORT}",
|
|
},
|
|
stay_alive=True,
|
|
)
|
|
node_config_value = cluster.add_instance(
|
|
"node_config_value",
|
|
main_configs=["configs/config_value.xml"],
|
|
)
|
|
node_file_value = cluster.add_instance(
|
|
"node_file_value",
|
|
main_configs=["configs/file_value.xml"],
|
|
stay_alive=True,
|
|
)
|
|
node_missing_value = cluster.add_instance(
|
|
"node_missing_value",
|
|
main_configs=["configs/missing_value.xml"],
|
|
)
|
|
|
|
|
|
def start_metadata_server(started_cluster):
|
|
script_dir = os.path.join(os.path.dirname(__file__), "metadata_servers")
|
|
start_mock_servers(
|
|
started_cluster,
|
|
script_dir,
|
|
[
|
|
(
|
|
"simple_server.py",
|
|
METADATA_SERVER_HOSTNAME,
|
|
METADATA_SERVER_PORT,
|
|
)
|
|
],
|
|
)
|
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True)
|
|
def start_cluster():
|
|
try:
|
|
cluster.start()
|
|
start_metadata_server(cluster)
|
|
yield cluster
|
|
finally:
|
|
cluster.shutdown()
|
|
|
|
|
|
def test_placement_info_from_imds():
|
|
with open(os.path.join(os.path.dirname(__file__), "configs/imds.xml"), "r") as f:
|
|
node_imds.replace_config(
|
|
"/etc/clickhouse-server/config.d/imds_bootstrap.xml", f.read()
|
|
)
|
|
node_imds.stop_clickhouse(kill=True)
|
|
node_imds.start_clickhouse()
|
|
|
|
node_imds.query("SYSTEM FLUSH LOGS")
|
|
assert node_imds.contains_in_log(
|
|
"CloudPlacementInfo: Loaded info: availability_zone: ci-test-1a"
|
|
)
|
|
|
|
|
|
def test_placement_info_from_config():
|
|
node_config_value.query("SYSTEM FLUSH LOGS")
|
|
assert node_config_value.contains_in_log(
|
|
"CloudPlacementInfo: Loaded info: availability_zone: ci-test-1b"
|
|
)
|
|
|
|
|
|
def test_placement_info_from_file():
|
|
node_file_value.exec_in_container(
|
|
["bash", "-c", "echo ci-test-1c > /tmp/node-zone"]
|
|
)
|
|
|
|
node_file_value.stop_clickhouse(kill=True)
|
|
node_file_value.start_clickhouse()
|
|
|
|
node_file_value.query("SYSTEM FLUSH LOGS")
|
|
assert node_file_value.contains_in_log(
|
|
"CloudPlacementInfo: Loaded info: availability_zone: ci-test-1c"
|
|
)
|
|
|
|
|
|
def test_placement_info_missing_data():
|
|
node_missing_value.query("SYSTEM FLUSH LOGS")
|
|
assert node_missing_value.contains_in_log(
|
|
"CloudPlacementInfo: Availability zone info not found"
|
|
)
|