import time import pytest from tools import utils, constants from launchers.sandbox import Sandbox from . import protocol # TODO parameterize test MINIMAL_BLOCK_DELAY = 15 @pytest.mark.baker @pytest.mark.multinode @pytest.mark.slow @pytest.mark.incremental class TestManyBakers: """Run 5 bakers and num nodes, wait and check logs""" def test_init(self, sandbox: Sandbox): for i in range(10): sandbox.add_node(i, params=constants.NODE_PARAMS) protocol.activate(sandbox.client(0)) for i in range(5): sandbox.add_baker( i, [f'bootstrap{i + 1}'], proto=protocol.DAEMON, run_params=['--liquidity-baking-toggle-vote', 'pass'], ) def test_wait(self): # expects two level to be added to level start time.sleep(2 * MINIMAL_BLOCK_DELAY) def test_progress(self, sandbox: Sandbox): min_level = min( [client.get_level() for client in sandbox.all_clients()] ) assert min_level >= 3 @pytest.mark.xfail def test_check_logs(self, sandbox: Sandbox): if not sandbox.log_dir: pytest.skip() assert sandbox.logs error_pattern = r"canceled|crashed" assert utils.check_logs(sandbox.logs, error_pattern)