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)
async def test_bdn_performance_single_node(self): self.gateway_node.connection_pool.add(20, self.node_endpoint_1.ip_address, self.node_endpoint_1.port, self.blockchain_connection_1) gateway_bdn_performance_stats_service.set_node(self.gateway_node) gateway_bdn_performance_stats_service.log_block_from_bdn() gateway_bdn_performance_stats_service.log_block_from_bdn() gateway_bdn_performance_stats_service.log_block_from_blockchain_node( self.node_endpoint_1) gateway_bdn_performance_stats_service.log_tx_from_bdn() gateway_bdn_performance_stats_service.log_tx_from_blockchain_node( self.node_endpoint_1) gateway_bdn_performance_stats_service.log_tx_from_blockchain_node( self.node_endpoint_1) gateway_bdn_performance_stats_service.close_interval_data() result = await self.request( BxJsonRpcRequest("6", RpcRequestType.BDN_PERFORMANCE, None)) self.assertEqual("6", result.id) self.assertIsNone(result.error) node_stats = result.result[str(self.node_endpoint_1)] self.assertEqual("66.67%", node_stats["blocks_from_bdn_percentage"]) self.assertEqual("33.33%", node_stats["transactions_from_bdn_percentage"]) self.assertEqual(3, node_stats["total_blocks_seen"])
def setUp(self) -> None: pub_key = "a04f30a45aae413d0ca0f219b4dcb7049857bc3f91a6351288cce603a2c9646294a02b987bf6586b370b2c22d74662355677007a14238bb037aedf41c2d08866" node_ssl_service = MockNodeSSLService(EthGatewayNode.NODE_TYPE, MagicMock()) opts = gateway_helpers.get_gateway_opts( 8000, include_default_eth_args=True, blockchain_protocol=BlockchainProtocol.ETHEREUM.name, blockchain_network_num=5, pub_key=pub_key, ) self.node = EthGatewayNode(opts, node_ssl_service) self.enqueued_messages = [] self.broadcast_to_node_messages = [] self.broadcast_messages = [] self.node.opts.has_fully_updated_tx_service = True self.node.init_live_feeds() self.connection = helpers.create_connection( EthNodeConnection, self.node, opts, port=opts.blockchain_port ) gateway_helpers.add_blockchain_peer(self.node, self.connection) self.block_queuing_service = self.node.block_queuing_service_manager.get_designated_block_queuing_service() self.connection.on_connection_established() self.node.node_conn = self.connection gateway_bdn_performance_stats_service.set_node(self.node) def mocked_enqueue_msg(msg, prepend=False): self.enqueued_messages.append(msg) self.connection.enqueue_msg = mocked_enqueue_msg def mocked_broadcast(msg, broadcasting_conn=None, prepend_to_queue=False, connection_types=None): if connection_types is None: connection_types = [ConnectionType.RELAY_ALL] if len(connection_types) == 1 and connection_types[0] == ConnectionType.BLOCKCHAIN_NODE: self.broadcast_to_node_messages.append(msg) else: self.broadcast_messages.append(msg) self.node.broadcast = mocked_broadcast self.cleanup_service = self.node.block_cleanup_service self.node.block_processing_service.queue_block_for_processing = MagicMock() self.sut = self.connection.connection_protocol self.sut._waiting_checkpoint_headers_request = False self.node.opts.ws = True self.node.publish_block = MagicMock()
async def test_bdn_performance(self): gateway_bdn_performance_stats_service.set_node(self.gateway_node) gateway_bdn_performance_stats_service.log_block_from_bdn() gateway_bdn_performance_stats_service.log_block_from_bdn() gateway_bdn_performance_stats_service.log_block_from_blockchain_node() gateway_bdn_performance_stats_service.log_tx_from_bdn() gateway_bdn_performance_stats_service.log_tx_from_blockchain_node() gateway_bdn_performance_stats_service.log_tx_from_blockchain_node() gateway_bdn_performance_stats_service.close_interval_data() result = await self.request( BxJsonRpcRequest("6", RpcRequestType.BDN_PERFORMANCE, None)) self.assertEqual("6", result.id) self.assertIsNone(result.error) self.assertEqual("66.67%", result.result["blocks_from_bdn_percentage"]) self.assertEqual("33.33%", result.result["transactions_from_bdn_percentage"])
async def test_bdn_performance_multi_node(self): self.gateway_node.connection_pool.add(20, self.node_endpoint_1.ip_address, self.node_endpoint_1.port, self.blockchain_connection_1) blockchain_connection_2 = EthNodeConnection( MockSocketConnection(1, node=self.gateway_node, ip_address="127.0.0.1", port=333), self.gateway_node) blockchain_connection_2.on_connection_established() self.gateway_node.mock_add_blockchain_peer(blockchain_connection_2) node_endpoint_2 = IpEndpoint("127.0.0.1", 333) self.gateway_node.connection_pool.add(21, node_endpoint_2.ip_address, node_endpoint_2.port, blockchain_connection_2) gateway_bdn_performance_stats_service.set_node(self.gateway_node) gateway_bdn_performance_stats_service.log_block_from_bdn() gateway_bdn_performance_stats_service.log_block_from_bdn() gateway_bdn_performance_stats_service.log_block_from_blockchain_node( self.node_endpoint_1) gateway_bdn_performance_stats_service.log_tx_from_bdn() gateway_bdn_performance_stats_service.log_tx_from_blockchain_node( self.node_endpoint_1) gateway_bdn_performance_stats_service.log_tx_from_blockchain_node( self.node_endpoint_1) gateway_bdn_performance_stats_service.close_interval_data() result = await self.request( BxJsonRpcRequest("6", RpcRequestType.BDN_PERFORMANCE, None)) self.assertEqual("6", result.id) self.assertIsNone(result.error) node_stats = result.result[str(self.node_endpoint_1)] self.assertEqual("66.67%", node_stats["blocks_from_bdn_percentage"]) self.assertEqual("33.33%", node_stats["transactions_from_bdn_percentage"]) self.assertEqual(3, node_stats["total_blocks_seen"]) node_stats_2 = result.result[str(node_endpoint_2)] self.assertEqual("100.00%", node_stats_2["blocks_from_bdn_percentage"]) self.assertEqual("100.00%", node_stats_2["transactions_from_bdn_percentage"]) self.assertEqual(3, node_stats_2["total_blocks_seen"])
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() 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) self.sut = BtcBaseConnectionProtocol(self.connection)
def setUp(self): self.node = MockGatewayNode(gateway_helpers.get_gateway_opts( 8000, include_default_eth_args=True, use_extensions=True), block_queueing_cls=MagicMock()) self.node.message_converter = converter_factory.create_eth_message_converter( self.node.opts) self.node.block_processing_service = BlockProcessingService(self.node) is_handshake_initiator = True dummy_private_key = crypto_utils.make_private_key( helpers.generate_bytearray(111)) dummy_public_key = crypto_utils.private_to_public_key( dummy_private_key) rlpx_cipher = RLPxCipher(is_handshake_initiator, dummy_private_key, dummy_public_key) node_ssl_service = MockNodeSSLService(EthGatewayNode.NODE_TYPE, MagicMock()) local_ip = "127.0.0.1" eth_port = 30303 eth_opts = gateway_helpers.get_gateway_opts( 1234, include_default_eth_args=True, blockchain_address=(local_ip, eth_port), pub_key=convert.bytes_to_hex(dummy_public_key)) self.eth_node = EthGatewayNode(eth_opts, node_ssl_service) self.blockchain_connection = EthNodeConnection( MockSocketConnection(1, node=self.node, ip_address=local_ip, port=30303), self.node) self.blockchain_connection.on_connection_established() self.node.connection_pool.add(19, local_ip, eth_port, self.blockchain_connection) self.blockchain_connection_1 = EthNodeConnection( MockSocketConnection(1, node=self.node, ip_address=local_ip, port=333), self.node) self.blockchain_connection_1.on_connection_established() self.node.mock_add_blockchain_peer(self.blockchain_connection_1) self.node_1_endpoint = IpEndpoint(local_ip, 333) self.node.connection_pool.add(20, self.node_1_endpoint.ip_address, self.node_1_endpoint.port, self.blockchain_connection_1) self.blockchain_connection_2 = EthNodeConnection( MockSocketConnection(1, node=self.node, ip_address=local_ip, port=444), self.node) self.blockchain_connection_2.on_connection_established() self.node.mock_add_blockchain_peer(self.blockchain_connection_2) self.node_2_endpoint = IpEndpoint(local_ip, 444) self.node.connection_pool.add(21, self.node_2_endpoint.ip_address, self.node_2_endpoint.port, self.blockchain_connection_2) self.blockchain_connection_1.network_num = 0 self.tx_blockchain_connection_protocol = EthNodeConnectionProtocol( self.blockchain_connection_1, is_handshake_initiator, rlpx_cipher) self.block_blockchain_connection_protocol = EthNodeConnectionProtocol( self.blockchain_connection_1, is_handshake_initiator, rlpx_cipher) self.tx_blockchain_connection_protocol.publish_transaction = MagicMock( ) self.block_blockchain_connection_protocol.publish_transaction = MagicMock( ) self.tx_blockchain_connection_protocol_2 = EthNodeConnectionProtocol( self.blockchain_connection_2, is_handshake_initiator, rlpx_cipher) self.block_blockchain_connection_protocol_2 = EthNodeConnectionProtocol( self.blockchain_connection_2, is_handshake_initiator, rlpx_cipher) self.tx_blockchain_connection_protocol_2.publish_transaction = MagicMock( ) self.block_blockchain_connection_protocol_2.publish_transaction = MagicMock( ) self.relay_connection = AbstractRelayConnection( MockSocketConnection(1, node=self.node, ip_address=local_ip, port=12345), self.node) self.relay_connection.state = ConnectionState.INITIALIZED gateway_bdn_performance_stats_service.set_node(self.node) self.node.account_id = "12345"