示例#1
0
 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
示例#3
0
 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])
示例#4
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
示例#7
0
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
示例#8
0
 def create_cl_network(self):
     account = self.get_key()
     self.add_bootstrap(self.docker_config(account))
     wait_for_genesis_block(self.docker_nodes[0])