def get_node_stats( self, node_endpoint: IpEndpoint, blockchain_node_to_bdn_stats: Dict[IpEndpoint, BdnPerformanceStatsData] ) -> BdnPerformanceStatsData: if node_endpoint in blockchain_node_to_bdn_stats: node_stats = blockchain_node_to_bdn_stats[node_endpoint] else: blockchain_node_to_bdn_stats[node_endpoint] = BdnPerformanceStatsData() node_stats = blockchain_node_to_bdn_stats[node_endpoint] return node_stats
def create_interval_data_object(self) -> None: super().create_interval_data_object() node = self.node assert node is not None blockchain_node_to_bdn_stats = self.interval_data.blockchain_node_to_bdn_stats assert blockchain_node_to_bdn_stats is not None active_blockchain_peers = list(node.connection_pool.get_by_connection_types([ConnectionType.BLOCKCHAIN_NODE])) for blockchain_peer in active_blockchain_peers: blockchain_node_to_bdn_stats[blockchain_peer.endpoint] = BdnPerformanceStatsData()
def add_stats_to_node_stats( node_stats: Dict[IpEndpoint, BdnPerformanceStatsData], ip: str, port: int, new_blocks_from_node: int, new_blocks_from_bdn: int, new_tx_from_node: int, new_tx_from_bdn: int, new_blocks_seen: int, new_block_messages_from_node: int, new_block_announcements_from_node: int, tx_sent_to_node: int, duplicate_tx_from_node: int ) -> None: new_node_stats = BdnPerformanceStatsData() new_node_stats.new_blocks_received_from_blockchain_node = new_blocks_from_node new_node_stats.new_blocks_received_from_bdn = new_blocks_from_bdn new_node_stats.new_blocks_seen = new_blocks_seen new_node_stats.new_block_messages_from_blockchain_node = new_block_messages_from_node new_node_stats.new_block_announcements_from_blockchain_node = new_block_announcements_from_node new_node_stats.new_tx_received_from_blockchain_node = new_tx_from_node new_node_stats.new_tx_received_from_bdn = new_tx_from_bdn new_node_stats.tx_sent_to_node = tx_sent_to_node new_node_stats.duplicate_tx_from_node = duplicate_tx_from_node node_stats[IpEndpoint(ip, port)] = new_node_stats
def test_bdn_performance_stats_message_multi_node(self): node_stats = {} start_time = datetime.utcnow() memory_utilization_mb = 800 node_1_bdn_stats = BdnPerformanceStatsData() node_1_bdn_stats.new_blocks_received_from_blockchain_node = 200 node_1_bdn_stats.new_blocks_received_from_bdn = 300 node_1_bdn_stats.new_tx_received_from_blockchain_node = 400 node_1_bdn_stats.new_tx_received_from_bdn = constants.UNSIGNED_SHORT_MAX_VALUE + 1 # unsigned short max (0xffff) + 1 node_1_bdn_stats.new_blocks_seen = 700 node_1_bdn_stats.new_block_messages_from_blockchain_node = 200 node_1_bdn_stats.new_block_announcements_from_blockchain_node = 900 node_1_bdn_stats.tx_sent_to_node = 1100 node_1_bdn_stats.duplicate_tx_from_node = 600 end_time = datetime.utcnow() node_1_ip = "127.0.0.1" node_1_port = 8001 node_2_bdn_stats = BdnPerformanceStatsData() node_2_bdn_stats.new_blocks_received_from_blockchain_node = 100 node_2_bdn_stats.new_blocks_received_from_bdn = 200 node_2_bdn_stats.new_tx_received_from_blockchain_node = 300 node_2_bdn_stats.new_tx_received_from_bdn = constants.UNSIGNED_SHORT_MAX_VALUE + 1 # unsigned short max (0xffff) + 1 node_2_bdn_stats.new_blocks_seen = 800 node_2_bdn_stats.new_block_messages_from_blockchain_node = 900 node_2_bdn_stats.new_block_announcements_from_blockchain_node = 1000 node_2_bdn_stats.tx_sent_to_node = 1200 node_2_bdn_stats.duplicate_tx_from_node = 500 node_2_ip = "127.0.0.2" node_2_port = 8002 node_stats[IpEndpoint(node_1_ip, node_1_port)] = node_1_bdn_stats node_stats[IpEndpoint(node_2_ip, node_2_port)] = node_2_bdn_stats bdn_stats_msg = self.create_message_successfully( BdnPerformanceStatsMessage(start_time, end_time, memory_utilization_mb, node_stats), BdnPerformanceStatsMessage) stats = bdn_stats_msg.node_stats()[IpEndpoint(node_1_ip, node_1_port)] self.assertEqual(start_time, bdn_stats_msg.interval_start_time()) self.assertEqual(end_time, bdn_stats_msg.interval_end_time()) self.assertEqual(memory_utilization_mb, bdn_stats_msg.memory_utilization()) self.assertEqual( node_1_bdn_stats.new_blocks_received_from_blockchain_node, stats.new_blocks_received_from_blockchain_node) self.assertEqual(node_1_bdn_stats.new_blocks_received_from_bdn, stats.new_blocks_received_from_bdn) self.assertEqual(node_1_bdn_stats.new_tx_received_from_blockchain_node, stats.new_tx_received_from_blockchain_node) self.assertEqual(node_1_bdn_stats.new_tx_received_from_bdn, stats.new_tx_received_from_bdn) self.assertEqual(node_1_bdn_stats.new_blocks_seen, stats.new_blocks_seen) self.assertEqual( node_1_bdn_stats.new_block_messages_from_blockchain_node, stats.new_block_messages_from_blockchain_node) self.assertEqual( node_1_bdn_stats.new_block_announcements_from_blockchain_node, stats.new_block_announcements_from_blockchain_node) self.assertEqual(node_1_bdn_stats.tx_sent_to_node, stats.tx_sent_to_node) self.assertEqual(node_1_bdn_stats.duplicate_tx_from_node, stats.duplicate_tx_from_node) stats = bdn_stats_msg.node_stats()[IpEndpoint(node_2_ip, node_2_port)] self.assertEqual( node_2_bdn_stats.new_blocks_received_from_blockchain_node, stats.new_blocks_received_from_blockchain_node) self.assertEqual(node_2_bdn_stats.new_blocks_received_from_bdn, stats.new_blocks_received_from_bdn) self.assertEqual(node_2_bdn_stats.new_tx_received_from_blockchain_node, stats.new_tx_received_from_blockchain_node) self.assertEqual(node_2_bdn_stats.new_tx_received_from_bdn, stats.new_tx_received_from_bdn) self.assertEqual(node_2_bdn_stats.new_blocks_seen, stats.new_blocks_seen) self.assertEqual( node_2_bdn_stats.new_block_messages_from_blockchain_node, stats.new_block_messages_from_blockchain_node) self.assertEqual( node_2_bdn_stats.new_block_announcements_from_blockchain_node, stats.new_block_announcements_from_blockchain_node) self.assertEqual(node_2_bdn_stats.tx_sent_to_node, stats.tx_sent_to_node) self.assertEqual(node_2_bdn_stats.duplicate_tx_from_node, stats.duplicate_tx_from_node)