From 9029ca8c363d4a1115a86be67e073129ab7a45d0 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Sun, 23 May 2021 00:18:59 +0000 Subject: [PATCH] add test_encrypted_disk integration test --- .../test_encrypted_disk/__init__.py | 0 .../test_encrypted_disk/configs/storage.xml | 58 ++++++++++++++++ tests/integration/test_encrypted_disk/test.py | 68 +++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 tests/integration/test_encrypted_disk/__init__.py create mode 100644 tests/integration/test_encrypted_disk/configs/storage.xml create mode 100644 tests/integration/test_encrypted_disk/test.py diff --git a/tests/integration/test_encrypted_disk/__init__.py b/tests/integration/test_encrypted_disk/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/integration/test_encrypted_disk/configs/storage.xml b/tests/integration/test_encrypted_disk/configs/storage.xml new file mode 100644 index 00000000000..5b8289e500a --- /dev/null +++ b/tests/integration/test_encrypted_disk/configs/storage.xml @@ -0,0 +1,58 @@ + + + + + + s3 + http://minio1:9001/root/data/ + minio + minio123 + + + memory + + + local + /disk/ + + + encrypted + disk_s3 + encrypted/ + 1234567812345678 + + + encrypted + disk_local + encrypted/ + abcdefghijklmnop + + + + + +
+ disk_local_encrypted +
+
+
+ + +
+ disk_local +
+ + disk_local_encrypted + +
+
+ + +
+ disk_s3 +
+
+
+
+
+
diff --git a/tests/integration/test_encrypted_disk/test.py b/tests/integration/test_encrypted_disk/test.py new file mode 100644 index 00000000000..abf40ad8bc1 --- /dev/null +++ b/tests/integration/test_encrypted_disk/test.py @@ -0,0 +1,68 @@ +import pytest +from helpers.cluster import ClickHouseCluster + + + + +@pytest.fixture(scope="module") +def cluster(): + try: + cluster = ClickHouseCluster(__file__) + node = cluster.add_instance("node", + main_configs=["configs/storage.xml"], + tmpfs=["/disk:size=100M"], + with_minio=True) + cluster.start() + yield cluster + finally: + cluster.shutdown() + +@pytest.mark.parametrize("policy", ["encrypted_policy", "local_policy", "s3_policy"]) +def test_encrypted_disk(cluster, policy): + node = cluster.instances["node"] + node.query( + """ + CREATE TABLE encrypted_test ( + id Int64, + data String + ) ENGINE=MergeTree() + ORDER BY id + SETTINGS storage_policy='{}' + """.format(policy) + ) + + node.query("INSERT INTO encrypted_test VALUES (0,'data'),(1,'data')") + select_query = "SELECT * FROM encrypted_test ORDER BY id FORMAT Values" + assert node.query(select_query) == "(0,'data'),(1,'data')" + + node.query("INSERT INTO encrypted_test VALUES (2,'data'),(3,'data')") + node.query("OPTIMIZE TABLE encrypted_test FINAL") + assert node.query(select_query) == "(0,'data'),(1,'data'),(2,'data'),(3,'data')" + + node.query("DROP TABLE IF EXISTS encrypted_test NO DELAY") + + +@pytest.mark.parametrize("policy,disk,encrypted_disk", [("local_policy", "disk_local", "disk_local_encrypted"), ('s3_policy', 'disk_s3', 'disk_s3_encrypted')]) +def test_part_move(cluster, policy, disk, encrypted_disk): + node = cluster.instances["node"] + node.query( + """ + CREATE TABLE encrypted_test ( + id Int64, + data String + ) ENGINE=MergeTree() + ORDER BY id + SETTINGS storage_policy='{}' + """.format(policy) + ) + + node.query("INSERT INTO encrypted_test VALUES (0,'data'),(1,'data')") + select_query = "SELECT * FROM encrypted_test ORDER BY id FORMAT Values" + assert node.query(select_query) == "(0,'data'),(1,'data')" + + node.query("ALTER TABLE encrypted_test MOVE PART 'all_1_1_0' TO DISK '{}'".format(encrypted_disk)) + assert node.query(select_query) == "(0,'data'),(1,'data')" + + node.query("ALTER TABLE encrypted_test MOVE PART 'all_1_1_0' TO DISK '{}'".format(disk)) + assert node.query(select_query) == "(0,'data'),(1,'data')" + node.query("DROP TABLE IF EXISTS encrypted_test NO DELAY")