Merge pull request #55105 from ClickHouse/split-compatibility-tests

Clean data dir and always start an old server version in aggregate functions compatibility test.
This commit is contained in:
Nikolai Kochetov 2023-09-29 13:47:14 +02:00 committed by GitHub
commit 8468e90a01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 3 deletions

View File

@ -3918,7 +3918,11 @@ class ClickHouseInstance:
return None
def restart_with_original_version(
self, stop_start_wait_sec=300, callback_onstop=None, signal=15
self,
stop_start_wait_sec=300,
callback_onstop=None,
signal=15,
clear_data_dir=False,
):
begin_time = time.time()
if not self.stay_alive:
@ -3946,6 +3950,17 @@ class ClickHouseInstance:
if callback_onstop:
callback_onstop(self)
if clear_data_dir:
self.exec_in_container(
[
"bash",
"-c",
"rm -rf /var/lib/clickhouse/metadata && rm -rf /var/lib/clickhouse/data",
],
user="root",
)
self.exec_in_container(
[
"bash",

View File

@ -35,6 +35,12 @@ def start_cluster():
cluster.shutdown()
@pytest.fixture(autouse=True)
def cleanup():
yield
node1.restart_with_original_version(clear_data_dir=True)
# We will test that serialization of internal state of "avg" function is compatible between different versions.
# TODO Implement versioning of serialization format for aggregate function states.
# NOTE This test is too ad-hoc.
@ -143,7 +149,7 @@ def test_backward_compatability_for_uniq_exact(start_cluster, uniq_keys):
== f"{uniq_keys}\n"
)
node1.restart_with_latest_version()
node1.restart_with_latest_version(fix_metadata=True)
assert (
node1.query(f"SELECT uniqExactMerge(x) FROM state_{uniq_keys}")
@ -216,7 +222,7 @@ def test_backward_compatability_for_uniq_exact_variadic(start_cluster, uniq_keys
== f"{uniq_keys}\n"
)
node1.restart_with_latest_version()
node1.restart_with_latest_version(fix_metadata=True)
assert (
node1.query(f"SELECT uniqExactMerge(x) FROM state_{uniq_keys}")