diff --git a/tests/integration/test_user_directories/__init__.py b/tests/integration/test_user_directories/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/integration/test_user_directories/configs/local_directories.xml b/tests/integration/test_user_directories/configs/local_directories.xml new file mode 100644 index 00000000000..e2cbcd135df --- /dev/null +++ b/tests/integration/test_user_directories/configs/local_directories.xml @@ -0,0 +1,15 @@ + + + + /etc/clickhouse-server/users3.xml + + + /var/lib/clickhouse/access3/ + + + local directory (ro) + true + /var/lib/clickhouse/access3-ro/ + + + diff --git a/tests/integration/test_user_directories/configs/memory.xml b/tests/integration/test_user_directories/configs/memory.xml new file mode 100644 index 00000000000..6e906d2b1d6 --- /dev/null +++ b/tests/integration/test_user_directories/configs/memory.xml @@ -0,0 +1,8 @@ + + + + /etc/clickhouse-server/users5.xml + + + + diff --git a/tests/integration/test_user_directories/configs/old_style.xml b/tests/integration/test_user_directories/configs/old_style.xml new file mode 100644 index 00000000000..a0ff36edaba --- /dev/null +++ b/tests/integration/test_user_directories/configs/old_style.xml @@ -0,0 +1,5 @@ + + /etc/clickhouse-server/users2.xml + /var/lib/clickhouse/access2/ + + diff --git a/tests/integration/test_user_directories/configs/relative_path.xml b/tests/integration/test_user_directories/configs/relative_path.xml new file mode 100644 index 00000000000..8906478959e --- /dev/null +++ b/tests/integration/test_user_directories/configs/relative_path.xml @@ -0,0 +1,7 @@ + + + + users4.xml + + + diff --git a/tests/integration/test_user_directories/test.py b/tests/integration/test_user_directories/test.py new file mode 100644 index 00000000000..8b7f34cf999 --- /dev/null +++ b/tests/integration/test_user_directories/test.py @@ -0,0 +1,51 @@ +import pytest +import os +from helpers.cluster import ClickHouseCluster +from helpers.test_tools import TSV + +SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) +cluster = ClickHouseCluster(__file__) +node = cluster.add_instance('node', stay_alive=True) + +@pytest.fixture(scope="module", autouse=True) +def started_cluster(): + try: + cluster.start() + + node.exec_in_container("cp /etc/clickhouse-server/users.xml /etc/clickhouse-server/users2.xml") + node.exec_in_container("cp /etc/clickhouse-server/users.xml /etc/clickhouse-server/users3.xml") + node.exec_in_container("cp /etc/clickhouse-server/users.xml /etc/clickhouse-server/users4.xml") + node.exec_in_container("cp /etc/clickhouse-server/users.xml /etc/clickhouse-server/users5.xml") + + yield cluster + + finally: + cluster.shutdown() + + +def test_old_style(): + node.copy_file_to_container(os.path.join(SCRIPT_DIR, "configs/old_style.xml"), '/etc/clickhouse-server/config.d/z.xml') + node.restart_clickhouse() + assert node.query("SELECT * FROM system.user_directories") == TSV([["users.xml", "users.xml", "/etc/clickhouse-server/users2.xml", 1, 1], + ["local directory", "local directory", "/var/lib/clickhouse/access2/", 0, 2]]) + + +def test_local_directories(): + node.copy_file_to_container(os.path.join(SCRIPT_DIR, "configs/local_directories.xml"), '/etc/clickhouse-server/config.d/z.xml') + node.restart_clickhouse() + assert node.query("SELECT * FROM system.user_directories") == TSV([["users.xml", "users.xml", "/etc/clickhouse-server/users3.xml", 1, 1], + ["local directory", "local directory", "/var/lib/clickhouse/access3/", 0, 2], + ["local directory (ro)", "local directory", "/var/lib/clickhouse/access3-ro/", 1, 3]]) + + +def test_relative_path(): + node.copy_file_to_container(os.path.join(SCRIPT_DIR, "configs/relative_path.xml"), '/etc/clickhouse-server/config.d/z.xml') + node.restart_clickhouse() + assert node.query("SELECT * FROM system.user_directories") == TSV([["users.xml", "users.xml", "/etc/clickhouse-server/users4.xml", 1, 1]]) + + +def test_memory(): + node.copy_file_to_container(os.path.join(SCRIPT_DIR, "configs/memory.xml"), '/etc/clickhouse-server/config.d/z.xml') + node.restart_clickhouse() + assert node.query("SELECT * FROM system.user_directories") == TSV([["users.xml", "users.xml", "/etc/clickhouse-server/users5.xml", 1, 1], + ["memory", "memory", "", 0, 2]])