2021-11-25 18:06:04 +00:00
|
|
|
# pylint: disable=line-too-long
|
|
|
|
# pylint: disable=unused-argument
|
|
|
|
# pylint: disable=redefined-outer-name
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
from helpers.cluster import ClickHouseCluster
|
|
|
|
|
|
|
|
cluster = ClickHouseCluster(__file__)
|
2022-03-22 16:39:58 +00:00
|
|
|
node = cluster.add_instance("node_default", stay_alive=True)
|
2021-11-25 18:06:04 +00:00
|
|
|
|
2022-03-22 16:39:58 +00:00
|
|
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True)
|
2021-11-25 18:06:04 +00:00
|
|
|
def start_cluster():
|
|
|
|
try:
|
|
|
|
cluster.start()
|
|
|
|
yield cluster
|
|
|
|
finally:
|
|
|
|
cluster.shutdown()
|
|
|
|
|
|
|
|
|
|
|
|
def test_system_logs_recreate():
|
|
|
|
system_logs = [
|
|
|
|
# enabled by default
|
2022-03-22 16:39:58 +00:00
|
|
|
"query_log",
|
|
|
|
"query_thread_log",
|
|
|
|
"part_log",
|
|
|
|
"trace_log",
|
|
|
|
"metric_log",
|
2021-11-25 18:06:04 +00:00
|
|
|
]
|
|
|
|
|
2022-03-22 16:39:58 +00:00
|
|
|
node.query("SYSTEM FLUSH LOGS")
|
2021-11-25 18:06:04 +00:00
|
|
|
for table in system_logs:
|
2022-03-22 16:39:58 +00:00
|
|
|
assert "ENGINE = MergeTree" in node.query(f"SHOW CREATE TABLE system.{table}")
|
|
|
|
assert "ENGINE = Null" not in node.query(f"SHOW CREATE TABLE system.{table}")
|
|
|
|
assert (
|
|
|
|
len(
|
|
|
|
node.query(f"SHOW TABLES FROM system LIKE '{table}%'")
|
|
|
|
.strip()
|
|
|
|
.split("\n")
|
|
|
|
)
|
|
|
|
== 1
|
|
|
|
)
|
2021-11-25 18:06:04 +00:00
|
|
|
|
|
|
|
# NOTE: we use zzz- prefix to make it the last file,
|
|
|
|
# so that it will be applied last.
|
|
|
|
for table in system_logs:
|
2022-03-22 16:39:58 +00:00
|
|
|
node.exec_in_container(
|
|
|
|
[
|
|
|
|
"bash",
|
|
|
|
"-c",
|
|
|
|
f"""echo "
|
2021-11-25 18:06:04 +00:00
|
|
|
<clickhouse>
|
|
|
|
<{table}>
|
|
|
|
<engine>ENGINE = Null</engine>
|
|
|
|
<partition_by remove='remove'/>
|
|
|
|
</{table}>
|
|
|
|
</clickhouse>
|
|
|
|
" > /etc/clickhouse-server/config.d/zzz-override-{table}.xml
|
2022-03-22 16:39:58 +00:00
|
|
|
""",
|
|
|
|
]
|
|
|
|
)
|
2021-11-25 18:06:04 +00:00
|
|
|
|
|
|
|
node.restart_clickhouse()
|
2022-03-22 16:39:58 +00:00
|
|
|
node.query("SYSTEM FLUSH LOGS")
|
2021-11-25 18:06:04 +00:00
|
|
|
for table in system_logs:
|
2022-03-22 16:39:58 +00:00
|
|
|
assert "ENGINE = MergeTree" not in node.query(
|
|
|
|
f"SHOW CREATE TABLE system.{table}"
|
|
|
|
)
|
|
|
|
assert "ENGINE = Null" in node.query(f"SHOW CREATE TABLE system.{table}")
|
|
|
|
assert (
|
|
|
|
len(
|
|
|
|
node.query(f"SHOW TABLES FROM system LIKE '{table}%'")
|
|
|
|
.strip()
|
|
|
|
.split("\n")
|
|
|
|
)
|
|
|
|
== 2
|
|
|
|
)
|
2021-11-25 18:06:04 +00:00
|
|
|
|
|
|
|
for table in system_logs:
|
2022-03-22 16:39:58 +00:00
|
|
|
node.exec_in_container(
|
|
|
|
["rm", f"/etc/clickhouse-server/config.d/zzz-override-{table}.xml"]
|
|
|
|
)
|
2021-11-25 18:06:04 +00:00
|
|
|
|
|
|
|
node.restart_clickhouse()
|
2022-03-22 16:39:58 +00:00
|
|
|
node.query("SYSTEM FLUSH LOGS")
|
2021-11-25 18:06:04 +00:00
|
|
|
for table in system_logs:
|
2022-03-22 16:39:58 +00:00
|
|
|
assert "ENGINE = MergeTree" in node.query(f"SHOW CREATE TABLE system.{table}")
|
|
|
|
assert "ENGINE = Null" not in node.query(f"SHOW CREATE TABLE system.{table}")
|
|
|
|
assert (
|
|
|
|
len(
|
|
|
|
node.query(f"SHOW TABLES FROM system LIKE '{table}%'")
|
|
|
|
.strip()
|
|
|
|
.split("\n")
|
|
|
|
)
|
|
|
|
== 3
|
|
|
|
)
|
2021-11-25 18:06:04 +00:00
|
|
|
|
2022-03-22 16:39:58 +00:00
|
|
|
node.query("SYSTEM FLUSH LOGS")
|
2021-11-25 18:06:04 +00:00
|
|
|
# Ensure that there was no superfluous RENAME's
|
|
|
|
# IOW that the table created only when the structure is indeed different.
|
|
|
|
for table in system_logs:
|
2022-03-22 16:39:58 +00:00
|
|
|
assert (
|
|
|
|
len(
|
|
|
|
node.query(f"SHOW TABLES FROM system LIKE '{table}%'")
|
|
|
|
.strip()
|
|
|
|
.split("\n")
|
|
|
|
)
|
|
|
|
== 3
|
|
|
|
)
|
2022-01-12 18:08:08 +00:00
|
|
|
|
|
|
|
|
|
|
|
def test_drop_system_log():
|
2022-03-22 16:39:58 +00:00
|
|
|
node.exec_in_container(
|
|
|
|
[
|
|
|
|
"bash",
|
|
|
|
"-c",
|
|
|
|
f"""echo "
|
2022-01-12 18:08:08 +00:00
|
|
|
<clickhouse>
|
|
|
|
<query_log>
|
|
|
|
<flush_interval_milliseconds replace=\\"replace\\">1000000</flush_interval_milliseconds>
|
|
|
|
</query_log>
|
|
|
|
</clickhouse>
|
|
|
|
" > /etc/clickhouse-server/config.d/yyy-override-query_log.xml
|
2022-03-22 16:39:58 +00:00
|
|
|
""",
|
|
|
|
]
|
|
|
|
)
|
2022-01-12 18:08:08 +00:00
|
|
|
node.restart_clickhouse()
|
|
|
|
node.query("select 1")
|
|
|
|
node.query("system flush logs")
|
|
|
|
node.query("select 2")
|
|
|
|
node.query("system flush logs")
|
|
|
|
assert node.query("select count() > 0 from system.query_log") == "1\n"
|
|
|
|
node.query("drop table system.query_log sync")
|
|
|
|
node.query("select 3")
|
|
|
|
node.query("system flush logs")
|
|
|
|
assert node.query("select count() > 0 from system.query_log") == "1\n"
|
2022-03-22 16:39:58 +00:00
|
|
|
node.exec_in_container(
|
|
|
|
["rm", f"/etc/clickhouse-server/config.d/yyy-override-query_log.xml"]
|
|
|
|
)
|
2022-01-12 18:08:08 +00:00
|
|
|
node.restart_clickhouse()
|