from typing import Optional import allure import pytest from frostfs_testlib.shell import Shell from pytest_tests.helpers import epoch from pytest_tests.helpers.cluster import Cluster, StorageNode # To skip adding every mandatory singleton dependency to EACH test function class ClusterTestBase: shell: Shell cluster: Cluster @pytest.fixture(scope="session", autouse=True) def fill_mandatory_dependencies(self, cluster: Cluster, client_shell: Shell): ClusterTestBase.shell = client_shell ClusterTestBase.cluster = cluster yield @allure.title("Tick {epochs_to_tick} epochs") def tick_epochs(self, epochs_to_tick: int, alive_node: Optional[StorageNode] = None): for _ in range(epochs_to_tick): self.tick_epoch(alive_node) def tick_epoch(self, alive_node: Optional[StorageNode] = None): epoch.tick_epoch(self.shell, self.cluster, alive_node=alive_node) def wait_for_epochs_align(self): epoch.wait_for_epochs_align(self.shell, self.cluster) def get_epoch(self): return epoch.get_epoch(self.shell, self.cluster) def ensure_fresh_epoch(self): return epoch.ensure_fresh_epoch(self.shell, self.cluster)