Fix tests.

This commit is contained in:
Vitaly Baranov 2024-11-11 01:36:20 +01:00
parent 206bd174c3
commit 19bcc5550b

View File

@ -251,23 +251,16 @@ def kill_query(
if is_initial_query is not None if is_initial_query is not None
else "" else ""
) )
old_time = time.monotonic()
node.query( node.query(
f"KILL QUERY WHERE (query_kind='{query_kind}') AND (query LIKE '%{id}%'){filter_for_is_initial_query} SYNC" f"KILL QUERY WHERE (query_kind='{query_kind}') AND (query LIKE '%{id}%'){filter_for_is_initial_query} SYNC"
) )
node.query("SYSTEM FLUSH LOGS") waited = time.monotonic() - old_time
duration = (
int(
node.query(
f"SELECT query_duration_ms FROM system.query_log WHERE query_kind='KillQuery' AND query LIKE '%{id}%' AND type='QueryFinish'"
)
)
/ 1000
)
print( print(
f"{get_node_name(node)}: Cancelled {operation_name} {id} after {duration} seconds" f"{get_node_name(node)}: Cancelled {operation_name} {id} after {waited} seconds"
) )
if timeout is not None: if timeout is not None:
assert duration < timeout assert waited < timeout
# Stops all ZooKeeper servers. # Stops all ZooKeeper servers.
@ -305,7 +298,7 @@ def sleep(seconds):
class NoTrashChecker: class NoTrashChecker:
def __init__(self): def __init__(self):
self.expect_backups = [] self.expect_backups = []
self.expect_unfinished_backups = [] self.allow_unfinished_backups = []
self.expect_errors = [] self.expect_errors = []
self.allow_errors = [] self.allow_errors = []
self.check_zookeeper = True self.check_zookeeper = True
@ -373,7 +366,7 @@ class NoTrashChecker:
if unfinished_backups: if unfinished_backups:
print(f"Found unfinished backups: {unfinished_backups}") print(f"Found unfinished backups: {unfinished_backups}")
assert new_backups == set(self.expect_backups) assert new_backups == set(self.expect_backups)
assert unfinished_backups == set(self.expect_unfinished_backups) assert unfinished_backups.difference(self.allow_unfinished_backups) == set()
all_errors = set() all_errors = set()
start_time = time.strftime( start_time = time.strftime(
@ -641,7 +634,7 @@ def test_long_disconnection_stops_backup():
assert get_status(initiator, backup_id=backup_id) == "CREATING_BACKUP" assert get_status(initiator, backup_id=backup_id) == "CREATING_BACKUP"
assert get_num_system_processes(initiator, backup_id=backup_id) >= 1 assert get_num_system_processes(initiator, backup_id=backup_id) >= 1
no_trash_checker.expect_unfinished_backups = [backup_id] no_trash_checker.allow_unfinished_backups = [backup_id]
no_trash_checker.allow_errors = [ no_trash_checker.allow_errors = [
"FAILED_TO_SYNC_BACKUP_OR_RESTORE", "FAILED_TO_SYNC_BACKUP_OR_RESTORE",
"KEEPER_EXCEPTION", "KEEPER_EXCEPTION",
@ -674,7 +667,7 @@ def test_long_disconnection_stops_backup():
# A backup is expected to fail, but it isn't expected to fail too soon. # A backup is expected to fail, but it isn't expected to fail too soon.
print(f"Backup failed after {time_to_fail} seconds disconnection") print(f"Backup failed after {time_to_fail} seconds disconnection")
assert time_to_fail > 3 assert time_to_fail > 3
assert time_to_fail < 30 assert time_to_fail < 35
# A backup must NOT be stopped if Zookeeper is disconnected shorter than `failure_after_host_disconnected_for_seconds`. # A backup must NOT be stopped if Zookeeper is disconnected shorter than `failure_after_host_disconnected_for_seconds`.
@ -695,7 +688,7 @@ def test_short_disconnection_doesnt_stop_backup():
backup_id = random_id() backup_id = random_id()
initiator.query( initiator.query(
f"BACKUP TABLE tbl ON CLUSTER 'cluster' TO {get_backup_name(backup_id)} SETTINGS id='{backup_id}' ASYNC", f"BACKUP TABLE tbl ON CLUSTER 'cluster' TO {get_backup_name(backup_id)} SETTINGS id='{backup_id}' ASYNC",
settings={"backup_restore_failure_after_host_disconnected_for_seconds": 6}, settings={"backup_restore_failure_after_host_disconnected_for_seconds": 10},
) )
assert get_status(initiator, backup_id=backup_id) == "CREATING_BACKUP" assert get_status(initiator, backup_id=backup_id) == "CREATING_BACKUP"
@ -703,13 +696,13 @@ def test_short_disconnection_doesnt_stop_backup():
# Dropping connection for less than `failure_after_host_disconnected_for_seconds` # Dropping connection for less than `failure_after_host_disconnected_for_seconds`
with PartitionManager() as pm: with PartitionManager() as pm:
random_sleep(3) random_sleep(4)
node_to_drop_zk_connection = random_node() node_to_drop_zk_connection = random_node()
print( print(
f"Dropping connection between {get_node_name(node_to_drop_zk_connection)} and ZooKeeper" f"Dropping connection between {get_node_name(node_to_drop_zk_connection)} and ZooKeeper"
) )
pm.drop_instance_zk_connections(node_to_drop_zk_connection) pm.drop_instance_zk_connections(node_to_drop_zk_connection)
random_sleep(3) random_sleep(4)
print( print(
f"Restoring connection between {get_node_name(node_to_drop_zk_connection)} and ZooKeeper" f"Restoring connection between {get_node_name(node_to_drop_zk_connection)} and ZooKeeper"
) )