def setUp(self):
        self.node = MockGatewayNode(gateway_helpers.get_gateway_opts(8000))
        self.node_conn = cast(
            AbstractGatewayBlockchainConnection,
            MockConnection(
                MockSocketConnection(1,
                                     self.node,
                                     ip_address=LOCALHOST,
                                     port=8002), self.node))
        self.node.blockchain_peers.add(
            BlockchainPeerInfo(self.node_conn.peer_ip,
                               self.node_conn.peer_port))

        self.node_conn_2 = cast(
            AbstractGatewayBlockchainConnection,
            MockConnection(
                MockSocketConnection(2,
                                     self.node,
                                     ip_address=LOCALHOST,
                                     port=8003), self.node))
        self.node.blockchain_peers.add(
            BlockchainPeerInfo(self.node_conn_2.peer_ip,
                               self.node_conn_2.peer_port))

        self.node_conn_3 = cast(
            AbstractGatewayBlockchainConnection,
            MockConnection(
                MockSocketConnection(3,
                                     self.node,
                                     ip_address=LOCALHOST,
                                     port=8004), self.node))
        self.node.blockchain_peers.add(
            BlockchainPeerInfo(self.node_conn_3.peer_ip,
                               self.node_conn_3.peer_port))
class BtcBlockQueuingServiceTest(AbstractTestCase):
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval=0)
        )

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node.node_conn = self.node_connection

        self.block_queuing_service = BtcBlockQueuingService(self.node)
        self.node.block_queuing_service = self.block_queuing_service
        self.node.block_cleanup_service = BtcNormalBlockCleanupService(self.node, 1)
        self.block_hashes = []
        self.block_msg = self._get_sample_block()
        self.block_queuing_service.store_block_data(self.block_msg.block_hash(), self.block_msg)
        self.node.get_tx_service().track_seen_short_ids(self.block_msg.block_hash(), [])

    def _get_sample_block(self, file_path=__file__):
        root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(file_path))))
        with open(os.path.join(root_dir, "btc_sample_block.txt")) as sample_file:
            btc_block = sample_file.read().strip("\n")
        buf = bytearray(convert.hex_to_bytes(btc_block))
        parsed_block = BlockBtcMessage(buf=buf)
        return parsed_block

    def test_tracked_block_cleanup(self):
        tx_service = self.node.get_tx_service()
        self.assertEqual(1, len(tx_service.get_tracked_blocks()))
        self.node.block_cleanup_service.block_cleanup_request(self.block_msg.block_hash())
        time.time = MagicMock(return_value=time.time() + constants.MIN_SLEEP_TIMEOUT)
        self.node.alarm_queue.fire_alarms()
        self.assertEqual(0, len(tx_service.get_tracked_blocks()))
    def setUp(self) -> None:

        opts = gateway_helpers.get_gateway_opts(8000, include_default_eth_args=True)

        self.node = MockGatewayNode(opts)

        self.connection = MagicMock(spec=AbstractGatewayBlockchainConnection)
        self.connection.node = self.node
        self.connection.is_active = MagicMock(return_value=True)
        self.connection.network_num = 5
        self.connection.format_connection_desc = "127.0.0.1:12345 - B"
        self.node.set_known_total_difficulty = MagicMock()
        self.node.node_conn = self.connection
        self.node.message_converter = EthNormalMessageConverter()

        self.cleanup_service = EthNormalBlockCleanupService(
            self.node, NETWORK_NUM
        )
        self.node.block_cleanup_service = self.cleanup_service
        self.node.block_processing_service = EthBlockProcessingService(
            self.node
        )
        self.node.block_processing_service.queue_block_for_processing = MagicMock()
        self.node.block_queuing_service = EthBlockQueuingService(self.node)

        dummy_private_key = crypto_utils.make_private_key(
            helpers.generate_bytearray(111)
        )
        dummy_public_key = crypto_utils.private_to_public_key(dummy_private_key)
        self.sut = EthNodeConnectionProtocol(
            self.connection, True, dummy_private_key, dummy_public_key
        )
        self.sut._waiting_checkpoint_headers_request = False
예제 #4
0
 async def setUp(self) -> None:
     self.gateway_node = MockGatewayNode(self.get_gateway_opts())
     self.gateway_node.requester = ThreadedRequestService(
         "mock_thread_service",
         self.gateway_node.alarm_queue,
         constants.THREADED_HTTP_POOL_SLEEP_INTERVAL_S
     )
     self.gateway_node.requester.start()
     self.gateway_node.account_id = ACCOUNT_ID
예제 #5
0
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval_s=0))
        self.node.block_parts_storage = ExpiringDict(
            self.node.alarm_queue,
            gateway_constants.MAX_BLOCK_CACHE_TIME_S,
            "eth_block_queue_parts",
        )

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node_conn = self.node_connection

        self.block_queuing_service = EthBlockQueuingService(
            self.node, self.node_conn)
        self.node.block_queuing_service_manager.add_block_queuing_service(
            self.node_conn, self.block_queuing_service)
        self.node_conn.enqueue_msg = MagicMock()

        self.block_hashes = []
        self.block_messages = []
        self.block_headers = []
        self.block_bodies = []

        # block numbers: 1000-1019
        prev_block_hash = None
        for i in range(20):
            block_message = InternalEthBlockInfo.from_new_block_msg(
                mock_eth_messages.new_block_eth_protocol_message(
                    i, i + 1000, prev_block_hash=prev_block_hash))
            block_hash = block_message.block_hash()
            self.block_hashes.append(block_hash)
            self.block_messages.append(block_message)

            block_parts = block_message.to_new_block_parts()
            self.block_headers.append(
                BlockHeadersEthProtocolMessage.from_header_bytes(
                    block_parts.block_header_bytes).get_block_headers()[0])
            self.block_bodies.append(
                BlockBodiesEthProtocolMessage.from_body_bytes(
                    block_parts.block_body_bytes).get_blocks()[0])

            self.node.block_queuing_service_manager.push(
                block_hash, block_message)
            prev_block_hash = block_hash

        for block_hash in self.block_hashes:
            self.block_queuing_service.remove_from_queue(block_hash)

        self.block_queuing_service.best_sent_block = (1019,
                                                      self.block_hashes[-1],
                                                      time.time())
        self.block_queuing_service.best_accepted_block = (
            1019, self.block_hashes[-1])
 def setUp(self):
     self.node = MockGatewayNode(gateway_helpers.get_gateway_opts(8000))
     self.node.connection_pool = ConnectionPool()
     self.blockchain_sync_service = BlockchainSyncService(
         self.node, {BtcMessageType.GET_HEADERS: BtcMessageType.HEADERS})
     self.blockchain_connection = MockConnection(1, (LOCALHOST, 8001),
                                                 self.node)
     self.blockchain_connection.state |= ConnectionState.ESTABLISHED
     self.node.node_conn = self.blockchain_connection
     self.alarms = []
예제 #7
0
 async def setUp(self) -> None:
     self.gateway_node = MockGatewayNode(self.get_gateway_opts())
     self.gateway_node.requester = ThreadedRequestService(
         "mock_thread_service", self.gateway_node.alarm_queue,
         constants.THREADED_HTTP_POOL_SLEEP_INTERVAL_S)
     self.gateway_node.requester.start()
     self.gateway_node.account_id = ACCOUNT_ID
     self.node_endpoint_1 = IpEndpoint("127.0.0.1", 7000)
     self.blockchain_connection_1 = EthBaseConnection(
         MockSocketConnection(node=self.gateway_node,
                              ip_address="127.0.0.1",
                              port=7000),
         cast(EthGatewayNode, self.gateway_node))
     self.blockchain_connection_1.state = ConnectionState.ESTABLISHED
예제 #8
0
    async def setUp(self) -> None:
        self.feed_service_model = FeedServiceModelBase(
            allow_filtering=True, available_fields=["all"])
        self.base_feed_service_model = BdnFeedServiceModelConfigBase(
            expire_date="2999-01-01", feed=self.feed_service_model)
        account_model = BdnAccountModelBase(
            "account_id",
            "account_name",
            "fake_certificate",
            tier_name="Developer",
            new_transaction_streaming=self.base_feed_service_model,
            new_pending_transaction_streaming=self.base_feed_service_model,
            on_block_feed=self.base_feed_service_model,
            transaction_receipts_feed=self.base_feed_service_model)
        gateway_opts = gateway_helpers.get_gateway_opts(8000, ws=True)
        gateway_opts.set_account_options(account_model)

        self.gateway_node = MockGatewayNode(gateway_opts)
        self.gateway_node.NODE_TYPE = NodeType.INTERNAL_GATEWAY
        self.transaction_streamer_peer = OutboundPeerModel(
            "127.0.0.1", 8006, node_type=NodeType.INTERNAL_GATEWAY)
        self.gateway_node.requester = ThreadedRequestService(
            "mock_thread_service",
            self.gateway_node.alarm_queue,
            constants.THREADED_HTTP_POOL_SLEEP_INTERVAL_S,
        )
        self.gateway_node.requester.start()
        self.server = WsServer(constants.LOCALHOST, 8005,
                               self.gateway_node.feed_manager,
                               self.gateway_node)
        self.ws_uri = f"ws://{constants.LOCALHOST}:8005"

        await self.server.start()
        self.gateway_node.get_ws_server_status = MagicMock(return_value=True)
    def setUp(self):
        self.node = MockGatewayNode(gateway_helpers.get_gateway_opts(
            8000,
            include_default_btc_args=True,
            compact_block_min_tx_count=5
        ))
        self.node.block_processing_service = MagicMock()

        self.connection = BtcNodeConnection(
            MockSocketConnection(node=self.node, ip_address=LOCALHOST, port=123), self.node
        )
        self.connection.node = self.node
        self.connection.peer_ip = LOCALHOST
        self.connection.peer_port = 8001
        self.connection.network_num = 2
        self.sut = BtcNodeConnectionProtocol(self.connection)

        full_block_msg = BlockBtcMessage(
            buf=bytearray(convert.hex_to_bytes(self.FULL_BLOCK_BYTES_HEX))
        )
        if self.node.opts.use_extensions:
            transaction_service = ExtensionTransactionService(self.node, 0)
        else:
            transaction_service = TransactionService(self.node, 0)

        short_id = 1
        for tx in full_block_msg.txns():
            tx_hash = btc_common_utils.get_txid(tx)
            transaction_service.set_transaction_contents(tx_hash, tx)
            transaction_service.assign_short_id(tx_hash, short_id)
            short_id += 1

        self.sut.connection.node._tx_service = transaction_service
예제 #10
0
    async def setUp(self) -> None:
        account_model = BdnAccountModelBase(
            "account_id", "account_name", "fake_certificate",
            new_transaction_streaming=BdnServiceModelConfigBase(
                expire_date=date(2999, 1, 1).isoformat()
            )
        )
        gateway_opts = gateway_helpers.get_gateway_opts(8000, ws=True)
        gateway_opts.set_account_options(account_model)

        self.gateway_node = MockGatewayNode(gateway_opts)
        self.gateway_node.NODE_TYPE = NodeType.INTERNAL_GATEWAY
        self.transaction_streamer_peer = OutboundPeerModel("127.0.0.1", 8006, node_type=NodeType.INTERNAL_GATEWAY)
        self.gateway_node.requester = ThreadedRequestService(
            "mock_thread_service",
            self.gateway_node.alarm_queue,
            constants.THREADED_HTTP_POOL_SLEEP_INTERVAL_S
        )
        self.gateway_node.requester.start()
        self.server = WsServer(
            constants.LOCALHOST, 8005, self.gateway_node.feed_manager, self.gateway_node
        )
        self.ws_uri = f"ws://{constants.LOCALHOST}:8005"

        await self.server.start()
예제 #11
0
    def setUp(self):
        opts = gateway_helpers.get_gateway_opts(8000,
                                                include_default_btc_args=True)
        if opts.use_extensions:
            helpers.set_extensions_parallelism()
        self.node = MockGatewayNode(opts)
        self.node.neutrality_service = MagicMock()

        self.connection = BtcNodeConnection(
            MockSocketConnection(1,
                                 node=self.node,
                                 ip_address=LOCALHOST,
                                 port=123), self.node)
        gateway_helpers.add_blockchain_peer(self.node, self.connection)

        self.tx_hash = BtcObjectHash(buf=helpers.generate_bytearray(32),
                                     length=BTC_SHA_HASH_LEN)
        self.block_hash = BtcObjectHash(buf=helpers.generate_bytearray(32),
                                        length=BTC_SHA_HASH_LEN)

        self.sut = BtcNodeConnectionProtocol(self.connection)

        while self.connection.outputbuf.length > 0:
            initial_bytes = self.connection.get_bytes_to_send()
            self.connection.advance_sent_bytes(len(initial_bytes))
예제 #12
0
 def setUp(self):
     self.node = MockGatewayNode(
         gateway_helpers.get_gateway_opts(8000,
                                          include_default_btc_args=True,
                                          include_default_eth_args=True))
     self.neutrality_service = NeutralityService(self.node)
     self.node.neutrality_service = self.neutrality_service
예제 #13
0
 def setUp(self) -> None:
     self._account_model = BdnAccountModelBase(
         account_id="",
         logical_account_name="",
         certificate="",
         expire_date=utils_constants.DEFAULT_EXPIRATION_DATE.isoformat(),
         cloud_api=BdnServiceModelConfigBase(
             msg_quota=None,
             permit=BdnServiceModelBase(service_type=BdnServiceType.PERMIT),
             expire_date=utils_constants.DEFAULT_EXPIRATION_DATE.isoformat(
             ),
         ),
         blockchain_protocol="Ethereum",
         blockchain_network="Mainnet",
     )
     self.rpc_port = helpers.get_free_port()
     opts = gateway_helpers.get_gateway_opts(
         8000,
         rpc_port=self.rpc_port,
         account_model=self._account_model,
         blockchain_protocol="Ethereum",
     )
     self.node = MockGatewayNode(opts)
     self.node.eth_ws_proxy_publisher = MockEthWsProxyPublisher(
         None, None, None, self.node)
     self.node.eth_ws_proxy_publisher.call_rpc = AsyncMock(
         return_value=JsonRpcResponse(request_id=1))
     self.sut = EthOnBlockFeed(self.node)
예제 #14
0
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(
                8000,
                max_block_interval_s=gateway_constants.MAX_INTERVAL_BETWEEN_BLOCKS_S,
                blockchain_message_ttl=TTL
            )
        )
        self.node_conn = MockConnection(
            MockSocketConnection(1, self.node, ip_address=LOCALHOST, port=8002), self.node
            )
        self.node.blockchain_peers.add(BlockchainPeerInfo(self.node_conn.peer_ip, self.node_conn.peer_port))
        self.block_queuing_service = TestPushBlockQueuingService(self.node, self.node_conn)
        self.node.block_queuing_service_manager.add_block_queuing_service(self.node_conn, self.block_queuing_service)
        self.node_conn.enqueue_msg = MagicMock()

        self.node_conn_2 = MockConnection(
            MockSocketConnection(2, self.node, ip_address=LOCALHOST, port=8003), self.node
            )
        self.node.blockchain_peers.add(BlockchainPeerInfo(self.node_conn_2.peer_ip, self.node_conn_2.peer_port))
        self.block_queuing_service_2 = TestPushBlockQueuingService(self.node, self.node_conn_2)
        self.node.block_queuing_service_manager.add_block_queuing_service(self.node_conn_2, self.block_queuing_service_2)
        self.node_conn_2.enqueue_msg = MagicMock()

        self.blockchain_connections = [self.node_conn, self.node_conn_2]
        self.block_queuing_services = [self.block_queuing_service, self.block_queuing_service_2]
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval_s=0)
        )

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node.node_conn = self.node_connection

        self.block_queuing_service = OntBlockQueuingService(self.node)

        self.block_hashes = []
        self.block_msg = self._get_sample_block()
        self.block_queuing_service.store_block_data(self.block_msg.block_hash(), self.block_msg)
예제 #16
0
    def setUp(self) -> None:
        opts = gateway_helpers.get_gateway_opts(8000)

        self.node = MockGatewayNode(opts)
        self.node.message_converter = EthNormalMessageConverter()
        self.connection = helpers.create_connection(EthRelayConnection,
                                                    self.node)
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000,
                                             include_default_btc_args=True,
                                             include_default_eth_args=True))

        self.relay_connection = AbstractRelayConnection(
            MockSocketConnection(node=self.node,
                                 ip_address="127.0.0.1",
                                 port=12345), self.node)
        self.blockchain_connection = EthBaseConnection(
            MockSocketConnection(node=self.node,
                                 ip_address="127.0.0.1",
                                 port=12345), self.node)
        self.node.message_converter = converter_factory.create_eth_message_converter(
            self.node.opts)

        dummy_private_key = crypto_utils.make_private_key(
            helpers.generate_bytearray(111))
        dummy_public_key = crypto_utils.private_to_public_key(
            dummy_private_key)
        self.blockchain_connection_protocol = EthNodeConnectionProtocol(
            self.blockchain_connection, True, dummy_private_key,
            dummy_public_key)
        self.blockchain_connection.network_num = 0
        self.blockchain_connection_protocol.publish_transaction = MagicMock()

        self.relay_connection.state = ConnectionState.INITIALIZED
        gateway_transaction_stats_service.set_node(self.node)
예제 #18
0
    def setUp(self):
        opts = gateway_helpers.get_gateway_opts(
            8000,
            include_default_eth_args=True,
            track_detailed_sent_messages=True)
        if opts.use_extensions:
            helpers.set_extensions_parallelism()

        self.node = MockGatewayNode(opts)
        self.node.block_processing_service = MagicMock()

        self.connection = MagicMock()
        gateway_helpers.add_blockchain_peer(self.node, self.connection)
        self.connection.node = self.node
        self.connection.peer_ip = LOCALHOST
        self.connection.peer_port = 8001
        self.connection.network_num = 2
        self.connection.endpoint = IpEndpoint(self.connection.peer_ip,
                                              self.connection.peer_port)
        self.node.blockchain_peers.add(
            BlockchainPeerInfo(self.connection.peer_ip,
                               self.connection.peer_port))
        gateway_bdn_performance_stats_service.set_node(self.node)

        dummy_private_key = crypto_utils.make_private_key(
            helpers.generate_bytearray(111))
        dummy_public_key = crypto_utils.private_to_public_key(
            dummy_private_key)
        self.sut = EthNodeConnectionProtocol(self.connection, True,
                                             dummy_private_key,
                                             dummy_public_key)
예제 #19
0
 def setUp(self):
     self.node = MockGatewayNode(
         gateway_helpers.get_gateway_opts(
             8000,
             max_block_interval_s=gateway_constants.
             MAX_INTERVAL_BETWEEN_BLOCKS_S,
             blockchain_message_ttl=TTL))
     self.block_queuing_service = TestPushBlockQueuingService(self.node)
예제 #20
0
 def setUp(self) -> None:
     self.mock_gateway = MockGatewayNode(
         gateway_helpers.get_gateway_opts(8000,
                                          rpc_user="******",
                                          rpc_password="******"))
     self.rpc_server = GatewayHttpRpcServer(self.mock_gateway)
     self.encoded_auth = base64.b64encode(
         "user:password".encode("utf-8")).decode("utf-8")
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval=0)
        )

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node.node_conn = self.node_connection

        self.block_queuing_service = BtcBlockQueuingService(self.node)
        self.node.block_queuing_service = self.block_queuing_service
        self.node.block_cleanup_service = BtcNormalBlockCleanupService(self.node, 1)
        self.block_hashes = []
        self.block_msg = self._get_sample_block()
        self.block_queuing_service.store_block_data(self.block_msg.block_hash(), self.block_msg)
        self.node.get_tx_service().track_seen_short_ids(self.block_msg.block_hash(), [])
예제 #22
0
    async def setUp(self) -> None:
        crypto_utils.recover_public_key = MagicMock(return_value=bytes(32))
        account_model = BdnAccountModelBase(
            "account_id",
            "account_name",
            "fake_certificate",
            new_transaction_streaming=BdnServiceModelConfigBase(
                expire_date=date(2999, 1, 1).isoformat()))

        self.eth_ws_port = helpers.get_free_port()
        self.eth_ws_uri = f"ws://127.0.0.1:{self.eth_ws_port}"
        self.eth_ws_server_message_queue = asyncio.Queue()
        await self.start_server()

        gateway_opts = gateway_helpers.get_gateway_opts(
            8000, eth_ws_uri=self.eth_ws_uri, ws=True)
        gateway_opts.set_account_options(account_model)
        self.gateway_node = MockGatewayNode(gateway_opts)
        self.gateway_node.transaction_streamer_peer = OutboundPeerModel(
            "127.0.0.1", 8006, node_type=NodeType.INTERNAL_GATEWAY)
        self.gateway_node.feed_manager.register_feed(
            EthPendingTransactionFeed(self.gateway_node.alarm_queue))

        self.eth_ws_proxy_publisher = EthWsProxyPublisher(
            self.eth_ws_uri, self.gateway_node.feed_manager,
            self.gateway_node.get_tx_service(), self.gateway_node)
        self.subscriber: Subscriber[
            RawTransactionFeedEntry] = self.gateway_node.feed_manager.subscribe_to_feed(
                EthPendingTransactionFeed.NAME, {})
        self.assertIsNotNone(self.subscriber)

        await self.eth_ws_proxy_publisher.start()
        await asyncio.sleep(0.01)

        self.assertEqual(len(self.eth_ws_proxy_publisher.receiving_tasks), 2)
        self.assertEqual(0, self.subscriber.messages.qsize())

        self.sample_transactions = {
            i: mock_eth_messages.get_dummy_transaction(i)
            for i in range(10)
        }
class OntBlockQueuingServiceTest(AbstractTestCase):
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, max_block_interval=0))

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)
        self.node.set_known_total_difficulty = MagicMock()

        self.node.node_conn = self.node_connection

        self.block_queuing_service = OntBlockQueuingService(self.node)

        self.block_hashes = []
        self.block_msg = self._get_sample_block()
        self.block_queuing_service.store_block_data(
            self.block_msg.block_hash(), self.block_msg)

    def test_get_recent_blocks(self):
        recent_blocks = list(
            self.block_queuing_service.iterate_recent_block_hashes(10))
        self.assertEqual(len(recent_blocks), 1)
        self.assertEqual(recent_blocks[0], self.block_msg.block_hash())

    def _get_sample_block(self, file_path=__file__):
        root_dir = os.path.dirname(
            os.path.dirname(os.path.dirname(os.path.abspath(file_path))))
        with open(os.path.join(root_dir,
                               "ont_sample_block.txt")) as sample_file:
            ont_block = sample_file.read().strip("\n")
        buf = bytearray(convert.hex_to_bytes(ont_block))
        parsed_block = BlockOntMessage(buf=buf)
        return parsed_block

    def test_tracked_block_cleanup(self):
        self.node.block_queuing_service = self.block_queuing_service
        tx_service = self.node.get_tx_service()
        for block_hash in self.block_queuing_service.iterate_recent_block_hashes(
                10):
            tx_service.track_seen_short_ids(block_hash, [])
        self.node._tracked_block_cleanup()
    def setUp(self):
        self.node = MockGatewayNode(gateway_helpers.get_gateway_opts(8000))
        self.sut = BlockProcessingService(self.node)

        self.node.block_processing_service = self.sut
        self.node.neutrality_service = MagicMock(spec=NeutralityService)
        self.node.block_recovery_service = MagicMock(spec=BlockRecoveryService)
        self.node.block_queuing_service = MagicMock(
            spec=PushBlockQueuingService)

        self.dummy_connection = MockConnection(
            MockSocketConnection(0, self.node, ip_address=LOCALHOST,
                                 port=9000), self.node)
예제 #25
0
    async def setUp(self) -> None:
        account_model = BdnAccountModelBase(
            "account_id", "account_name", "fake_certificate",
            new_transaction_streaming=BdnServiceModelConfigBase(
                expire_date=date(2999, 1, 1).isoformat()
            )
        )

        self.eth_ws_port = helpers.get_free_port()
        self.eth_ws_uri = f"ws://127.0.0.1:{self.eth_ws_port}"
        self.eth_ws_server_message_queue = asyncio.Queue()
        self.eth_subscription_id = "sub_id"
        await self.start_server()

        gateway_opts = gateway_helpers.get_gateway_opts(
            8000, eth_ws_uri=self.eth_ws_uri, ws=True)
        gateway_opts.set_account_options(account_model)
        self.gateway_node = MockGatewayNode(gateway_opts)
        self.gateway_node.feed_manager.register_feed(
            EthPendingTransactionFeed(self.gateway_node.alarm_queue)
        )

        self.eth_ws_subscriber = EthWsSubscriber(
            self.eth_ws_uri, self.gateway_node.feed_manager, self.gateway_node.get_tx_service()
        )
        self.subscriber: Subscriber[
            RawTransactionFeedEntry
        ] = self.gateway_node.feed_manager.subscribe_to_feed(EthPendingTransactionFeed.NAME, {})
        self.assertIsNotNone(self.subscriber)

        await self.eth_ws_subscriber.start()
        await asyncio.sleep(0.01)

        self.assertIsNotNone(self.eth_ws_subscriber.receiving_task)
        self.assertEqual(0, self.subscriber.messages.qsize())

        self.sample_transactions = {
            i: mock_eth_messages.get_dummy_transaction(i) for i in range(10)
        }
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(
                8000,
                max_block_interval=gateway_constants.
                MAX_INTERVAL_BETWEEN_BLOCKS_S,
                blockchain_message_ttl=TTL))

        self.node_connection = Mock()
        self.node_connection.is_active = MagicMock(return_value=True)

        self.node.node_conn = self.node_connection

        self.block_queuing_service = TestPushBlockQueuingService(self.node)
    def setUp(self):
        opts = gateway_helpers.get_gateway_opts(8000,
                                                include_default_btc_args=True)
        if opts.use_extensions:
            helpers.set_extensions_parallelism()
        self.node = MockGatewayNode(opts)
        self.node.block_processing_service = MagicMock()

        self.connection = MagicMock()
        self.connection.node = self.node
        self.connection.peer_ip = LOCALHOST
        self.connection.peer_port = 8001
        self.connection.network_num = 2

        self.sut = BtcBaseConnectionProtocol(self.connection)
    def setUp(self) -> None:
        self.gateway_node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(8000, split_relays=True))
        self.gateway_node.alarm_queue = AlarmQueue()
        self.gateway_node.requester = ThreadedRequestService(
            "mock_thread_service", self.gateway_node.alarm_queue,
            constants.THREADED_HTTP_POOL_SLEEP_INTERVAL_S)
        self.gateway_node.requester.start()

        self.outbound_peer_models = [
            OutboundPeerModel("1.1.1.1", 1609, node_type=NodeType.RELAY_BLOCK),
            OutboundPeerModel("1.1.1.2", 1609, node_type=NodeType.RELAY_BLOCK),
            OutboundPeerModel("1.1.1.3", 1609, node_type=NodeType.RELAY_BLOCK),
        ]
        sdn_http_service.fetch_potential_relay_peers_by_network = MagicMock(
            side_effect=lambda *args: self.outbound_peer_models)
        sdn_http_service.submit_peer_connection_error_event = MagicMock()
        self.latencies = [10, 20, 30]
        ping_latency.get_ping_latencies = MagicMock(side_effect=lambda *args: [
            NodeLatencyInfo(self.outbound_peer_models[0], self.latencies[0]),
            NodeLatencyInfo(self.outbound_peer_models[1], self.latencies[1]),
            NodeLatencyInfo(self.outbound_peer_models[2], self.latencies[2]),
        ])
        self.gateway_node.enqueue_connection = MagicMock()
    def setUp(self) -> None:
        self.block_confirmations_count = 3
        opts = gateway_helpers.get_gateway_opts(
            8000,
            block_confirmations_count=self.block_confirmations_count - 1,
            include_default_btc_args=True)
        if opts.use_extensions:
            helpers.set_extensions_parallelism()

        self.node = MockGatewayNode(opts)
        self.transaction_service = self._get_transaction_service()
        self.cleanup_service = self._get_cleanup_service()
        self.node._tx_service = self.transaction_service
        self.node.block_cleanup_service = self.cleanup_service
        self.node.post_block_cleanup_tasks = MagicMock()
        self.tx_hashes = []
예제 #30
0
    def setUp(self):
        self.node = MockGatewayNode(
            gateway_helpers.get_gateway_opts(
                8000,
                include_default_btc_args=True,
                include_default_eth_args=True,
                split_relays=True,
            )
        )
        self.connection = AbstractRelayConnection(
            MockSocketConnection(node=self.node, ip_address=constants.LOCALHOST, port=12345), self.node
        )
        self.connection.state = ConnectionState.INITIALIZED

        self.blockchain_connecton = AbstractGatewayBlockchainConnection(
            MockSocketConnection(node=self.node, ip_address=constants.LOCALHOST, port=333), self.node)
        self.blockchain_connecton.state = ConnectionState.ESTABLISHED