Beispiel #1
0
def test_nodes(mock_timer):
    random = DefaultSimRandom()
    net = SimNetwork(mock_timer, random)
    return [
        TestNode(name, net.create_peer(name))
        for name in genNodeNames(NODE_COUNT)
    ]
Beispiel #2
0
    def __init__(self,
                 node_count: int = 4,
                 random: Optional[SimRandom] = None):
        self._random = random if random else DefaultSimRandom()
        self._timer = MockTimer()
        self._network = SimNetwork(self._timer, self._random,
                                   self._serialize_deserialize)
        self._nodes = []
        validators = genNodeNames(node_count)
        # ToDo: maybe it should be a random too?
        primary_name = validators[0]

        genesis_txns = create_pool_txn_data(
            node_names=validators,
            crypto_factory=create_default_bls_crypto_factory(),
            get_free_port=partial(random.integer, 9000, 9999))['txns']

        for name in validators:
            # TODO: emulate it the same way as in Replica, that is sender must have 'node_name:inst_id' form
            replica_name = generateName(name, 0)
            handler = partial(self.network._send_message, replica_name)
            write_manager = create_test_write_req_manager(name, genesis_txns)
            write_manager.node_reg_handler.node_reg_at_beginning_of_view[
                0] = validators
            replica = ReplicaService(replica_name,
                                     validators,
                                     primary_name,
                                     self._timer,
                                     InternalBus(),
                                     self.network.create_peer(name, handler),
                                     write_manager=write_manager,
                                     bls_bft_replica=MockBlsBftReplica())
            replica.config.NEW_VIEW_TIMEOUT = 30 * 1000
            self._nodes.append(replica)
Beispiel #3
0
    def __init__(self,
                 node_count: int = 4,
                 random: Optional[SimRandom] = None):
        self._random = random if random else DefaultSimRandom()
        self._timer = MockTimer()
        self._network = SimNetwork(self._timer, self._random,
                                   self._serialize_deserialize)
        self._nodes = []
        self._genesis_txns = None
        self._genesis_validators = genNodeNames(node_count)
        self.validators = self._genesis_validators
        # ToDo: maybe it should be a random too?
        self._primary_name = self._genesis_validators[0]
        self._internal_buses = {}
        self._node_votes = {}
        self._ports = self._random.sample(range(9000, 9999),
                                          2 * len(self._genesis_validators))
        # ToDo: need to remove after implementation catchup_service (INDY-2148)
        #  and when we can change pool after NODE txn
        self._expected_node_reg = self.validators

        # Actions
        self._generate_genensis_txns()

        # Create nodes from genesis
        for name in self._genesis_validators:
            self.add_new_node(name)
Beispiel #4
0
 def __init__(self,
              node_count: int = 4,
              random: Optional[SimRandom] = None):
     self._random = random if random else DefaultSimRandom()
     self._timer = MockTimer()
     self._network = SimNetwork(self._timer, self._random)
     self._nodes = [
         ReplicaService(name, self.network.create_peer(name))
         for name in genNodeNames(node_count)
     ]
Beispiel #5
0
 def __init__(self,
              node_count: int = 4,
              random: Optional[SimRandom] = None):
     self._random = random if random else DefaultSimRandom()
     self._timer = MockTimer()
     self._network = SimNetwork(self._timer, self._random)
     validators = genNodeNames(node_count)
     primary_name = validators[0]
     self._nodes = [
         ReplicaService(name, validators, primary_name, self._timer,
                        InternalBus(), self.network.create_peer(name))
         for name in validators
     ]
Beispiel #6
0
    def __init__(self, node_count: int = 4, random: Optional[SimRandom] = None):
        self._random = random if random else DefaultSimRandom()
        self._timer = MockTimer()
        self._network = SimNetwork(self._timer, self._random)
        validators = genNodeNames(node_count)
        primary_name = validators[0]

        genesis_txns = create_pool_txn_data(
            node_names=validators,
            crypto_factory=create_default_bls_crypto_factory(),
            get_free_port=partial(random.integer, 9000, 9999))['txns']

        self._nodes = [ReplicaService(name, validators, primary_name,
                                      self._timer, InternalBus(), self.network.create_peer(name),
                                      write_manager=create_test_write_req_manager(name, genesis_txns))
                       for name in validators]
Beispiel #7
0
    def __init__(self,
                 node_count: int = 4,
                 random: Optional[SimRandom] = None):
        self._random = random if random else DefaultSimRandom()
        self._timer = MockTimer()
        self._network = SimNetwork(self._timer, self._random,
                                   self._serialize_deserialize)
        self._nodes = []
        validators = genNodeNames(node_count)
        # ToDo: maybe it should be a random too?
        primary_name = validators[0]

        genesis_txns = create_pool_txn_data(
            node_names=validators,
            crypto_factory=create_default_bls_crypto_factory(),
            get_free_port=partial(random.integer, 9000, 9999))['txns']

        for name in validators:
            # TODO: emulate it the same way as in Replica, that is sender must have 'node_name:inst_id' form
            replica_name = generateName(name, 0)
            handler = partial(self.network._send_message, replica_name)
            write_manager = create_test_write_req_manager(name, genesis_txns)
            replica = ReplicaService(replica_name,
                                     validators,
                                     primary_name,
                                     self._timer,
                                     InternalBus(),
                                     self.network.create_peer(name, handler),
                                     write_manager=write_manager,
                                     bls_bft_replica=MockBlsBftReplica())
            # ToDo: For now, future_primary_handler is depended from the node.
            # And for now we need to patching set_node_state functionality
            future_primaries_handler = FuturePrimariesBatchHandler(
                write_manager.database_manager,
                FakeSomething(nodeReg={}, nodeIds=[]))
            future_primaries_handler._get_primaries = lambda *args, **kwargs: replica._data.primaries
            write_manager.register_batch_handler(future_primaries_handler)
            # ToDo: also, it should be done at the zero-view stage.
            write_manager.future_primary_handler.set_node_state()
            replica.config.NEW_VIEW_TIMEOUT = 30 * 1000
            self._nodes.append(replica)
def sim_network(mock_timer, random, latency_bounds):
    net = SimNetwork(mock_timer, random)
    net.set_latency(latency_bounds[0], latency_bounds[1])
    return net