def add_bootstrap(self, config: DockerConfig) -> None: if self.node_count > 0: raise Exception("There can be only one bootstrap") config.is_bootstrap = True self._add_cl_node(config) self.wait_method(wait_for_node_started, 0) wait_for_genesis_block(self.docker_nodes[0])
def nodes(docker_client_fixture): with ThreeNodeNetwork(docker_client_fixture) as network: network.create_cl_network() # Wait for the genesis block reaching each node. for node in network.docker_nodes: wait_for_genesis_block(node) yield network.docker_nodes
def add_bootstrap(self, config: DockerConfig, bootstrap_address: str = None) -> None: config.is_bootstrap = True config.bootstrap_address = bootstrap_address self._add_cl_node(config) self.wait_method(wait_for_node_started, 0) wait_for_genesis_block(self.docker_nodes[0])
def start_cl_node(self, node_number: int) -> None: with self._lock: self.cl_nodes[node_number].execution_engine.start() node = self.cl_nodes[node_number].node node.truncate_logs() node.start() wait_for_approved_block_received_handler_state( node, node.config.command_timeout) wait_for_genesis_block(self.docker_nodes[node_number])
def four_nodes_network(docker_client_fixture): with CustomConnectionNetwork(docker_client_fixture) as network: # Initially all nodes are connected to each other network.create_cl_network(4, [(i, j) for i in range(4) for j in range(4) if i != j and i < j]) # Wait till all nodes have the genesis block. for node in network.docker_nodes: wait_for_genesis_block(node) yield network
def not_all_connected_directly_nodes(docker_client_fixture): """ node0 -- node1 -- node2 """ with CustomConnectionNetwork(docker_client_fixture) as network: # All nodes need to be connected to bootstrap in order to download the genesis block. network.create_cl_network(3, [(0, 1), (1, 2), (0, 2)]) # Wait for the genesis block reaching each node. for node in network.docker_nodes: wait_for_genesis_block(node) # All nodes have the genesis block now, so we can disconnect one from the bootstrap. network.disconnect((0, 2)) yield network.docker_nodes
def test_multiple_propose(one_node_network, wasm): """ Feature file: propose.feature Scenario: Single node deploy and multiple propose generates an Exception. OP-182: First propose should be success, and subsequent propose calls should throw an error/exception. """ node = one_node_network.docker_nodes[0] deploy_and_propose_from_genesis(node, wasm) number_of_blocks = node.client.get_blocks_count(100) try: _ = node.client.propose() assert False, "Second propose must not succeed, should throw" except NonZeroExitCodeError as e: assert e.exit_code == 1, "Second propose should fail" wait_for_genesis_block(node) # Number of blocks after second propose should not change assert node.client.get_blocks_count(100) == number_of_blocks
def create_cl_network(self): account = self.get_key() self.add_bootstrap(self.docker_config(account)) wait_for_genesis_block(self.docker_nodes[0])