mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 11:32:03 +00:00
147 lines
4.0 KiB
Python
147 lines
4.0 KiB
Python
import pytest
|
|
from helpers.client import CommandRequest
|
|
from helpers.cluster import ClickHouseCluster
|
|
from helpers.test_tools import TSV
|
|
|
|
|
|
cluster = ClickHouseCluster(__file__)
|
|
|
|
node = cluster.add_instance(
|
|
"node",
|
|
main_configs=["configs/keeper_config.xml"],
|
|
with_zookeeper=True,
|
|
stay_alive=True,
|
|
)
|
|
|
|
|
|
@pytest.fixture(scope="module", autouse=True)
|
|
def started_cluster():
|
|
try:
|
|
cluster.start()
|
|
yield cluster
|
|
|
|
finally:
|
|
cluster.shutdown()
|
|
|
|
|
|
def keeper_query(query: str):
|
|
return CommandRequest(
|
|
[
|
|
cluster.server_bin_path,
|
|
"keeper-client",
|
|
"--host",
|
|
str(cluster.get_instance_ip("zoo1")),
|
|
"--port",
|
|
str(cluster.zookeeper_port),
|
|
"-q",
|
|
query,
|
|
],
|
|
stdin="",
|
|
)
|
|
|
|
|
|
def test_big_family():
|
|
command = keeper_query(
|
|
"touch test_big_family;"
|
|
"touch test_big_family/1;"
|
|
"touch test_big_family/1/1;"
|
|
"touch test_big_family/1/2;"
|
|
"touch test_big_family/1/3;"
|
|
"touch test_big_family/1/4;"
|
|
"touch test_big_family/1/5;"
|
|
"touch test_big_family/2;"
|
|
"touch test_big_family/2/1;"
|
|
"touch test_big_family/2/2;"
|
|
"touch test_big_family/2/3;"
|
|
"find_big_family test_big_family;"
|
|
)
|
|
|
|
assert command.get_answer() == TSV(
|
|
[
|
|
["/test_big_family/1", "5"],
|
|
["/test_big_family/2", "3"],
|
|
["/test_big_family/2/3", "0"],
|
|
["/test_big_family/2/2", "0"],
|
|
["/test_big_family/2/1", "0"],
|
|
["/test_big_family/1/5", "0"],
|
|
["/test_big_family/1/4", "0"],
|
|
["/test_big_family/1/3", "0"],
|
|
["/test_big_family/1/2", "0"],
|
|
["/test_big_family/1/1", "0"],
|
|
]
|
|
)
|
|
|
|
command = keeper_query("find_big_family test_big_family 1;")
|
|
|
|
assert command.get_answer() == TSV(
|
|
[
|
|
["/test_big_family/1", "5"],
|
|
]
|
|
)
|
|
|
|
|
|
def test_find_super_nodes():
|
|
command = keeper_query(
|
|
"touch test_find_super_nodes;"
|
|
"touch test_find_super_nodes/1;"
|
|
"touch test_find_super_nodes/1/1;"
|
|
"touch test_find_super_nodes/1/2;"
|
|
"touch test_find_super_nodes/1/3;"
|
|
"touch test_find_super_nodes/1/4;"
|
|
"touch test_find_super_nodes/1/5;"
|
|
"touch test_find_super_nodes/2;"
|
|
"touch test_find_super_nodes/2/1;"
|
|
"touch test_find_super_nodes/2/2;"
|
|
"touch test_find_super_nodes/2/3;"
|
|
"touch test_find_super_nodes/2/4;"
|
|
"cd test_find_super_nodes;"
|
|
"find_super_nodes 4;"
|
|
)
|
|
|
|
assert command.get_answer() == TSV(
|
|
[
|
|
["/test_find_super_nodes/1", "5"],
|
|
["/test_find_super_nodes/2", "4"],
|
|
]
|
|
)
|
|
|
|
|
|
def test_delete_stale_backups():
|
|
command = keeper_query(
|
|
"touch /clickhouse;"
|
|
"touch /clickhouse/backups;"
|
|
"touch /clickhouse/backups/1;"
|
|
"touch /clickhouse/backups/1/stage;"
|
|
"touch /clickhouse/backups/1/stage/alive123;"
|
|
"touch /clickhouse/backups/2;"
|
|
"touch /clickhouse/backups/2/stage;"
|
|
"touch /clickhouse/backups/2/stage/dead123;"
|
|
"delete_stale_backups;"
|
|
"y;"
|
|
"ls clickhouse/backups;"
|
|
)
|
|
|
|
assert command.get_answer() == (
|
|
"You are going to delete all inactive backups in /clickhouse/backups. Continue?\n"
|
|
'Found backup "/clickhouse/backups/1", checking if it\'s active\n'
|
|
'Backup "/clickhouse/backups/1" is active, not going to delete\n'
|
|
'Found backup "/clickhouse/backups/2", checking if it\'s active\n'
|
|
'Backup "/clickhouse/backups/2" is not active, deleting it\n'
|
|
"1\n"
|
|
)
|
|
|
|
|
|
def test_base_commands():
|
|
command = keeper_query(
|
|
"create test_create_zk_node1 testvalue1;"
|
|
"create test_create_zk_node_2 testvalue2;"
|
|
"get test_create_zk_node1;"
|
|
)
|
|
|
|
assert command.get_answer() == "testvalue1\n"
|
|
|
|
|
|
def test_four_letter_word_commands():
|
|
command = keeper_query("ruok")
|
|
assert command.get_answer() == "imok\n"
|