Extend the set of test cases in the integration test

This commit is contained in:
Victor Krasnov 2023-08-01 15:04:53 +03:00
parent 505b4d0112
commit 9027ab968e
2 changed files with 37 additions and 17 deletions

View File

@ -11,14 +11,20 @@
</two>
</disks>
<policies>
<disks_in_order>
<policy1>
<volumes>
<single>
<disk>one</disk>
</single>
</volumes>
</policy1>
<policy2>
<volumes>
<single>
<disk>two</disk>
</single>
</volumes>
</disks_in_order>
</policy2>
</policies>
</storage_configuration>
<backups>

View File

@ -35,28 +35,42 @@ def new_backup_name():
return f"File('/backups/{backup_id_counter}/')"
def create_and_fill_table():
def create_table_backup(backup_name, storage_policy=None):
instance.query("CREATE DATABASE test")
instance.query("CREATE TABLE test.table(x UInt32) ENGINE=MergeTree ORDER BY x")
create_query = "CREATE TABLE test.table(x UInt32) ENGINE=MergeTree ORDER BY x"
if storage_policy is not None:
create_query += f" SETTINGS storage_policy = '{storage_policy}'"
instance.query(create_query)
instance.query(f"INSERT INTO test.table SELECT number FROM numbers(10)")
@pytest.mark.parametrize("policy", ["disks_in_order", "", None])
def test_restore_table(policy):
backup_name = new_backup_name()
create_and_fill_table()
instance.query(f"BACKUP TABLE test.table TO {backup_name}")
instance.query("DROP TABLE test.table SYNC")
def restore_table(backup_name, storage_policy=None):
restore_query = f"RESTORE TABLE test.table FROM {backup_name}"
if policy is None:
policy = "default"
else:
restore_query += f" SETTINGS storage_policy = '{policy}'"
if policy == "":
policy = "default"
if storage_policy is not None:
restore_query += f" SETTINGS storage_policy = '{storage_policy}'"
instance.query(restore_query)
@pytest.mark.parametrize(
"origin_policy, restore_policy, expected_policy",
[
(None, "", "default"),
(None, None, "default"),
(None, "policy1", "policy1"),
("policy1", "policy1", "policy1"),
("policy1", "policy2", "policy2"),
("policy1", "", "default"),
("policy1", None, "policy1"),
],
)
def test_storage_policies(origin_policy, restore_policy, expected_policy):
backup_name = new_backup_name()
create_table_backup(backup_name, origin_policy)
restore_table(backup_name, restore_policy)
assert (
instance.query("SELECT storage_policy FROM system.tables WHERE name='table'")
== f"{policy}\n"
== f"{expected_policy}\n"
)