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()
示例#3
0
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
示例#4
0
    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)