Exemplo n.º 1
0
def print_communities(dispersy):
    stats = dispersy.statistics
    community_list = sorted(stats.communities,
                            key=lambda community:
                            (not community.dispersy_enable_candidate_walker,
                             community.classification, community.cid)
                            )

    print >> sys.stderr, u"\n\n===== Dispersy Communities ====="
    print >> sys.stderr, u"- %15s | %7s | %7s | %5s | %7s | %5s | %5s | %14s | %14s | %14s | %14s" %\
                         (u"Class", u"ID", u"Member", u"DB ID", u"GTime", u"Cands",
                          u"PK_cr", u"PK_sent", u"PK_recv", u"PK_succ", u"PK_drop")

    for community in community_list:
        print >> sys.stderr, u"- %15s | %7s | %7s | %5s | %7s | %5s | %5s | %14s | %14s | %14s | %14s" %\
                             (community.classification.replace('Community', ''),
                              community.hex_cid[:7],
                              community.hex_mid[:7],
                              community.database_id,
                              str(community.global_time)[:7], len(community.candidates),
                              community.msg_statistics.created_count,
                              compute_ratio(community.msg_statistics.outgoing_count,
                                            community.msg_statistics.outgoing_count
                                            + community.msg_statistics.total_received_count),
                              compute_ratio(community.msg_statistics.total_received_count,
                                            community.msg_statistics.outgoing_count
                                            + community.msg_statistics.total_received_count),
                              compute_ratio(community.msg_statistics.success_count,
                                            community.msg_statistics.total_received_count),
                              compute_ratio(community.msg_statistics.drop_count,
                                            community.msg_statistics.total_received_count),)
    print >> sys.stderr, u"====================\n\n"
Exemplo n.º 2
0
    def _create_community_data(self, dispersy):
        """
        Creates a dictionary of community statistics data.
        :param dispersy: The dispersy instance.
        :return: A dictionary of community statistics data.
        """
        community_data_dict = {}

        for community in dispersy.statistics.communities:
            median_global_time = u"%d (%d difference)" % \
                (community.acceptable_global_time - community.dispersy_acceptable_global_time_range,
                 community.acceptable_global_time - community.global_time -
                    community.dispersy_acceptable_global_time_range)

            candidate_list = None
            if community.dispersy_enable_candidate_walker or \
                    community.dispersy_enable_candidate_walker_responses:
                candidate_count = u"%d " % len(community.candidates)
                candidate_list = [
                    (u"%s" % global_time, u"%s:%s" % lan, u"%s:%s" % wan,
                     u"%s" % binascii.hexlify(mid) if mid else DATA_NONE)
                    for lan, wan, global_time, mid in community.candidates
                ]
                candidate_list.sort()
            elif community.candidates:
                candidate_count = u"%d*" % len(community.candidates)
            else:
                candidate_count = u"-"

            database_list = []
            if community.database:
                database_str = u"%d packets" % \
                    sum(count for count in community.database.itervalues())
                for name, count in sorted(community.database.iteritems(),
                                          key=lambda tup: tup[1]):
                    database_list.append((u"%s" % count, u"%s" % name))
            else:
                database_str = u"? packets"

            community_data = {
                u"Identifier":
                u"%s" % community.hex_cid,
                u"Member":
                u"%s" % community.hex_mid,
                u"Classification":
                u"%s" % community.classification,
                u"Database id":
                u"%s" % community.database_id,
                u"Global time":
                u"%s" % community.global_time,
                u"Median global time":
                u"%s" % median_global_time,
                u"Acceptable range":
                u"%s" % community.dispersy_acceptable_global_time_range,
                u"Sync bloom created":
                u"%s" % community.sync_bloom_new,
                u"Sync bloom reused":
                u"%s" % community.sync_bloom_reuse,
                u"Sync bloom skipped":
                u"%s" % community.sync_bloom_skip,
                u"Candidates":
                u"%s" % candidate_count,
                u"Candidate_list":
                candidate_list,
                u"Database":
                database_str,
                u"Database_list":
                database_list,
                u"Packets Created":
                u"%s" % community.msg_statistics.created_count,
                u"Packets Sent":
                u"%s" % compute_ratio(
                    community.msg_statistics.outgoing_count,
                    community.msg_statistics.outgoing_count +
                    community.msg_statistics.total_received_count),
                u"Packets Received":
                u"%s" % compute_ratio(
                    community.msg_statistics.total_received_count,
                    community.msg_statistics.outgoing_count +
                    community.msg_statistics.total_received_count),
                u"Packets Success":
                compute_ratio(community.msg_statistics.success_count,
                              community.msg_statistics.total_received_count),
                u"Packets Dropped":
                compute_ratio(community.msg_statistics.drop_count,
                              community.msg_statistics.total_received_count),
                u"Packets Delayed Sent":
                compute_ratio(community.msg_statistics.delay_send_count,
                              community.msg_statistics.total_received_count),
                u"Packets Delayed Received":
                compute_ratio(community.msg_statistics.delay_received_count,
                              community.msg_statistics.total_received_count),
                u"Packets Delayed Success":
                compute_ratio(community.msg_statistics.delay_success_count,
                              community.msg_statistics.delay_received_count),
                u"Packets Delayed Timeout":
                compute_ratio(community.msg_statistics.delay_timeout_count,
                              community.msg_statistics.delay_received_count),
                u"Statistics":
                self._get_community_rawinfo(community),
            }

            key = u"<%s>: %s" % (community.classification, community.hex_cid)
            community_data_dict[key] = community_data

        return community_data_dict
Exemplo n.º 3
0
    def _create_community_data(self, dispersy):
        """
        Creates a dictionary of community statistics data.
        :param dispersy: The dispersy instance.
        :return: A dictionary of community statistics data.
        """
        community_data_dict = {}

        for community in dispersy.statistics.communities:
            median_global_time = u"%d (%d difference)" % (
                community.acceptable_global_time - community.dispersy_acceptable_global_time_range,
                community.acceptable_global_time
                - community.global_time
                - community.dispersy_acceptable_global_time_range,
            )

            candidate_list = None
            if community.dispersy_enable_candidate_walker or community.dispersy_enable_candidate_walker_responses:
                candidate_count = u"%d " % len(community.candidates)
                candidate_list = [
                    (
                        u"%s" % global_time,
                        u"%s:%s" % lan,
                        u"%s:%s" % wan,
                        u"%s" % binascii.hexlify(mid) if mid else DATA_NONE,
                    )
                    for lan, wan, global_time, mid in community.candidates
                ]
                candidate_list.sort()
            elif community.candidates:
                candidate_count = u"%d*" % len(community.candidates)
            else:
                candidate_count = u"-"

            database_list = []
            if community.database:
                database_str = u"%d packets" % sum(count for count in community.database.itervalues())
                for name, count in sorted(community.database.iteritems(), key=lambda tup: tup[1]):
                    database_list.append((u"%s" % count, u"%s" % name))
            else:
                database_str = u"? packets"

            community_data = {
                u"Identifier": u"%s" % community.hex_cid,
                u"Member": u"%s" % community.hex_mid,
                u"Classification": u"%s" % community.classification,
                u"Database id": u"%s" % community.database_id,
                u"Global time": u"%s" % community.global_time,
                u"Median global time": u"%s" % median_global_time,
                u"Acceptable range": u"%s" % community.dispersy_acceptable_global_time_range,
                u"Sync bloom created": u"%s" % community.sync_bloom_new,
                u"Sync bloom reused": u"%s" % community.sync_bloom_reuse,
                u"Sync bloom skipped": u"%s" % community.sync_bloom_skip,
                u"Candidates": u"%s" % candidate_count,
                u"Candidate_list": candidate_list,
                u"Database": database_str,
                u"Database_list": database_list,
                u"Packets Created": u"%s" % community.msg_statistics.created_count,
                u"Packets Sent": u"%s"
                % compute_ratio(
                    community.msg_statistics.outgoing_count,
                    community.msg_statistics.outgoing_count + community.msg_statistics.total_received_count,
                ),
                u"Packets Received": u"%s"
                % compute_ratio(
                    community.msg_statistics.total_received_count,
                    community.msg_statistics.outgoing_count + community.msg_statistics.total_received_count,
                ),
                u"Packets Success": compute_ratio(
                    community.msg_statistics.success_count, community.msg_statistics.total_received_count
                ),
                u"Packets Dropped": compute_ratio(
                    community.msg_statistics.drop_count, community.msg_statistics.total_received_count
                ),
                u"Packets Delayed Sent": compute_ratio(
                    community.msg_statistics.delay_send_count, community.msg_statistics.total_received_count
                ),
                u"Packets Delayed Received": compute_ratio(
                    community.msg_statistics.delay_received_count, community.msg_statistics.total_received_count
                ),
                u"Packets Delayed Success": compute_ratio(
                    community.msg_statistics.delay_success_count, community.msg_statistics.delay_received_count
                ),
                u"Packets Delayed Timeout": compute_ratio(
                    community.msg_statistics.delay_timeout_count, community.msg_statistics.delay_received_count
                ),
                u"Statistics": self._get_community_rawinfo(community),
            }

            key = u"<%s>: %s" % (community.classification, community.hex_cid)
            community_data_dict[key] = community_data

        return community_data_dict
Exemplo n.º 4
0
def print_info(dispersy):
    stats = dispersy.statistics
    print >> sys.stderr, u"\n\n===== Dispersy Info ====="
    print >> sys.stderr, u"- WAN Address %s:%d" % stats.wan_address
    print >> sys.stderr, u"- LAN Address %s:%d" % stats.lan_address
    print >> sys.stderr, u"- Connection: %s" % unicode(stats.connection_type)
    print >> sys.stderr, u"- Runtime: %s" % eta_value(stats.timestamp - stats.start)
    print >> sys.stderr, u"- Download: %s or %s/s" % (size_format(stats.total_down),
                                                      size_format(int(stats.total_down / (stats.timestamp - stats.start))))
    print >> sys.stderr, u"- Upload: %s or %s/s" % (size_format(stats.total_up),
                                                    size_format(int(stats.total_up / (stats.timestamp - stats.start))))
    print >> sys.stderr, u"- Packets Sent: %s" % compute_ratio(stats.total_send,
                                                               stats.total_received + stats.total_send)
    print >> sys.stderr, u"- Packets Received: %s" % compute_ratio(stats.total_received,
                                                                   stats.total_received + stats.total_send)
    print >> sys.stderr, u"- Packets Success: %s" % compute_ratio(stats.msg_statistics.success_count,
                                                                  stats.total_received)
    print >> sys.stderr, u"- Packets Dropped: %s" % compute_ratio(stats.msg_statistics.drop_count, stats.total_received)
    print >> sys.stderr, u"- Packets Delayed: %s" % compute_ratio(stats.msg_statistics.delay_received_count,
                                                                  stats.total_received)
    print >> sys.stderr, u"- Packets Delayed send: %s" % compute_ratio(stats.msg_statistics.delay_send_count,
                                                                       stats.msg_statistics.delay_received_count)
    print >> sys.stderr, u"- Packets Delayed success: %s" % compute_ratio(stats.msg_statistics.delay_success_count,
                                                                          stats.msg_statistics.delay_received_count)
    print >> sys.stderr, u"- Packets Delayed timeout: %s" % compute_ratio(stats.msg_statistics.delay_timeout_count,
                                                                          stats.msg_statistics.delay_received_count)
    print >> sys.stderr, u"- Walker Success: %s" % compute_ratio(stats.walk_success_count, stats.walk_attempt_count)
    print >> sys.stderr, u"- Sync-Messages Created: %s" % stats.msg_statistics.created_count
    print >> sys.stderr, u"- Bloom New: %s" % compute_ratio(sum(c.sync_bloom_new for c in stats.communities),
                                                            sum(c.sync_bloom_send + c.sync_bloom_skip
                                                                for c in stats.communities))
    print >> sys.stderr, u"- Bloom Reused: %s" % compute_ratio(sum(c.sync_bloom_reuse for c in stats.communities),
                                                               sum(c.sync_bloom_send + c.sync_bloom_skip
                                                                   for c in stats.communities))
    print >> sys.stderr, u"- Bloom Skipped: %s" % compute_ratio(sum(c.sync_bloom_skip for c in stats.communities),
                                                                sum(c.sync_bloom_send + c.sync_bloom_skip
                                                                    for c in stats.communities))
    print >> sys.stderr, u"- Debug Mode: %s" % u"yes" if __debug__ else u"no"
    print >> sys.stderr, u"====================\n\n"
Exemplo n.º 5
0
    def UpdateInfo(self, stats):
        community_list = sorted(stats.communities, key=lambda community:
                                (not community.dispersy_enable_candidate_walker,
                                 community.classification, community.cid))
        self.__community_data_list = []
        reselect_community_idx = None
        idx = 0
        community_list_for_update = []
        for community in community_list:
            candidate_list = None
            if community.dispersy_enable_candidate_walker or \
                    community.dispersy_enable_candidate_walker_responses:
                candidate_count = "%d " % len(community.candidates)
                candidate_list = [("%s" % global_time, "%s:%s" % lan, "%s:%s" % wan,
                                   "%s" % binascii.hexlify(mid) if mid else DATA_NONE)
                                  for lan, wan, global_time, mid in community.candidates]
                candidate_list.sort()
            elif community.candidates:
                candidate_count = "%d*" % len(community.candidates)
            else:
                candidate_count = "-"

            median_global_time = "%d (%d difference)" % \
                (community.acceptable_global_time - community.dispersy_acceptable_global_time_range,
                 community.acceptable_global_time - community.global_time -
                    community.dispersy_acceptable_global_time_range)

            database_list = []
            if community.database:
                database_str = "%d packets" % \
                    sum(count for count in community.database.itervalues())
                for name, count in sorted(community.database.iteritems(), key=lambda tup: tup[1]):
                    database_list.append(("%s" % count, "%s" % name))
            else:
                database_str = "? packets"

            community_data = {
                "Identifier": "%s" % community.hex_cid,
                "Member": "%s" % community.hex_mid,
                "Classification": "%s" % community.classification,
                "Database id": "%s" % community.database_id,
                "Global time": "%s" % community.global_time,
                "Median global time": "%s" % median_global_time,
                "Acceptable range": "%s" % community.dispersy_acceptable_global_time_range,
                "Walk success": "%s" % compute_ratio(community.msg_statistics.walk_success_count,
                                                     community.msg_statistics.walk_attempt_count),
                "Sync bloom created": "%s" % community.sync_bloom_new,
                "Sync bloom reused": "%s" % community.sync_bloom_reuse,
                "Sync bloom skipped": "%s" % community.sync_bloom_skip,
                "Candidates": "%s" % candidate_count,
                "Candidate_list": candidate_list,
                "Database": database_str,
                "Database_list": database_list,
                "Packets Created": "%s" % community.msg_statistics.created_count,
                "Packets Sent": "%s" % compute_ratio(community.msg_statistics.outgoing_count,
                                                     community.msg_statistics.outgoing_count
                                                     + community.msg_statistics.total_received_count),
                "Packets Received": "%s" % compute_ratio(community.msg_statistics.total_received_count,
                                                         community.msg_statistics.outgoing_count
                                                         + community.msg_statistics.total_received_count),
                "Packets Success": compute_ratio(community.msg_statistics.success_count,
                                                 community.msg_statistics.total_received_count),
                "Packets Dropped": compute_ratio(community.msg_statistics.drop_count,
                                                 community.msg_statistics.total_received_count),
                "Packets Delayed Sent": compute_ratio(community.msg_statistics.delay_send_count,
                                                      community.msg_statistics.total_received_count),
                "Packets Delayed Received": compute_ratio(community.msg_statistics.delay_received_count,
                                                          community.msg_statistics.total_received_count),
                "Packets Delayed Success": compute_ratio(community.msg_statistics.delay_success_count,
                                                         community.msg_statistics.delay_received_count),
                "Packets Delayed Timeout": compute_ratio(community.msg_statistics.delay_timeout_count,
                                                         community.msg_statistics.delay_received_count),
                "Statistics": community,
            }
            # update community data list
            self.__community_data_list.append(community_data)

            community_list_for_update.append((community_data["Classification"],
                                              community_data["Identifier"][:7],
                                              community_data["Database id"],
                                              community_data["Member"][:7],
                                              community_data["Candidates"])
                                             )

            if self.__selected_community_identifier == community_data["Identifier"]:
                reselect_community_idx = idx
            idx += 1

        # update community detail
        self.__listctrl.UpdateData(community_list_for_update)
        community_data_for_update = None
        community_statistics = None
        if reselect_community_idx is not None:
            self.__listctrl.Select(reselect_community_idx)
            community_data_for_update = self.__community_data_list[reselect_community_idx]
        self.__detail_panel.UpdateInfo(community_data_for_update)
Exemplo n.º 6
0
    def UpdateInfo(self, stats, to_cleanup=False):
        if to_cleanup:
            for info in self.__info_list:
                info[1] = DATA_NONE
        else:
            self.__info_list[0][1] = "%s:%d" % stats.wan_address
            self.__info_list[1][1] = "%s:%d" % stats.lan_address
            self.__info_list[2][1] = unicode(stats.connection_type)

            self.__info_list[3][1] = "%s" % eta_value(stats.timestamp - stats.start)
            self.__info_list[4][1] = "%s or %s/s" % (
                size_format(stats.total_down),
                size_format(int(stats.total_down / (stats.timestamp - stats.start)))
            )
            self.__info_list[5][1] = "%s or %s/s" % (
                size_format(stats.total_up),
                size_format(int(stats.total_up / (stats.timestamp - stats.start)))
            )
            self.__info_list[6][1] = compute_ratio(stats.total_send, stats.total_received + stats.total_send)
            self.__info_list[7][1] = compute_ratio(stats.total_received, stats.total_received + stats.total_send)
            self.__info_list[8][1] = compute_ratio(stats.msg_statistics.success_count, stats.total_received)
            self.__info_list[9][1] = compute_ratio(stats.msg_statistics.drop_count, stats.total_received)
            self.__info_list[10][1] = compute_ratio(stats.msg_statistics.delay_received_count, stats.total_received)
            self.__info_list[11][1] = compute_ratio(stats.msg_statistics.delay_send_count,
                                                    stats.msg_statistics.delay_received_count)
            self.__info_list[12][1] = compute_ratio(stats.msg_statistics.delay_success_count,
                                                    stats.msg_statistics.delay_received_count)
            self.__info_list[13][1] = compute_ratio(stats.msg_statistics.delay_timeout_count,
                                                    stats.msg_statistics.delay_received_count)
            self.__info_list[14][1] = compute_ratio(stats.walk_success_count, stats.walk_attempt_count)
            self.__info_list[15][1] = "%s" % stats.msg_statistics.created_count
            self.__info_list[16][1] = compute_ratio(sum(c.sync_bloom_new for c in stats.communities),
                                                    sum(c.sync_bloom_send + c.sync_bloom_skip
                                                        for c in stats.communities))
            self.__info_list[17][1] = compute_ratio(sum(c.sync_bloom_reuse for c in stats.communities),
                                                    sum(c.sync_bloom_send + c.sync_bloom_skip
                                                        for c in stats.communities))
            self.__info_list[18][1] = compute_ratio(sum(c.sync_bloom_skip for c in stats.communities),
                                                    sum(c.sync_bloom_send + c.sync_bloom_skip
                                                        for c in stats.communities))
            self.__info_list[19][1] = "yes" if __debug__ else "no"

        for key, value, _ in self.__info_list:
            self.__text_dict[key].SetLabel(value)

        self.SetupScrolling()
Exemplo n.º 7
0
    def UpdateInfo(self, stats):
        community_list = sorted(
            stats.communities,
            key=lambda community:
            (not community.dispersy_enable_candidate_walker, community.
             classification, community.cid))
        self.__community_data_list = []
        reselect_community_idx = None
        idx = 0
        community_list_for_update = []
        for community in community_list:
            candidate_list = None
            if community.dispersy_enable_candidate_walker or \
                    community.dispersy_enable_candidate_walker_responses:
                candidate_count = "%d " % len(community.candidates)
                candidate_list = [
                    ("%s" % global_time, "%s:%s" % lan, "%s:%s" % wan,
                     "%s" % binascii.hexlify(mid) if mid else DATA_NONE)
                    for lan, wan, global_time, mid in community.candidates
                ]
                candidate_list.sort()
            elif community.candidates:
                candidate_count = "%d*" % len(community.candidates)
            else:
                candidate_count = "-"

            median_global_time = "%d (%d difference)" % \
                (community.acceptable_global_time - community.dispersy_acceptable_global_time_range,
                 community.acceptable_global_time - community.global_time -
                    community.dispersy_acceptable_global_time_range)

            database_list = []
            if community.database:
                database_str = "%d packets" % \
                    sum(count for count in community.database.itervalues())
                for name, count in sorted(community.database.iteritems(),
                                          key=lambda tup: tup[1]):
                    database_list.append(("%s" % count, "%s" % name))
            else:
                database_str = "? packets"

            community_data = {
                "Identifier":
                "%s" % community.hex_cid,
                "Member":
                "%s" % community.hex_mid,
                "Classification":
                "%s" % community.classification,
                "Database id":
                "%s" % community.database_id,
                "Global time":
                "%s" % community.global_time,
                "Median global time":
                "%s" % median_global_time,
                "Acceptable range":
                "%s" % community.dispersy_acceptable_global_time_range,
                "Walk success":
                "%s" %
                compute_ratio(community.msg_statistics.walk_success_count,
                              community.msg_statistics.walk_attempt_count),
                "Sync bloom created":
                "%s" % community.sync_bloom_new,
                "Sync bloom reused":
                "%s" % community.sync_bloom_reuse,
                "Sync bloom skipped":
                "%s" % community.sync_bloom_skip,
                "Candidates":
                "%s" % candidate_count,
                "Candidate_list":
                candidate_list,
                "Database":
                database_str,
                "Database_list":
                database_list,
                "Packets Created":
                "%s" % community.msg_statistics.created_count,
                "Packets Sent":
                "%s" % compute_ratio(
                    community.msg_statistics.outgoing_count,
                    community.msg_statistics.outgoing_count +
                    community.msg_statistics.total_received_count),
                "Packets Received":
                "%s" % compute_ratio(
                    community.msg_statistics.total_received_count,
                    community.msg_statistics.outgoing_count +
                    community.msg_statistics.total_received_count),
                "Packets Success":
                compute_ratio(community.msg_statistics.success_count,
                              community.msg_statistics.total_received_count),
                "Packets Dropped":
                compute_ratio(community.msg_statistics.drop_count,
                              community.msg_statistics.total_received_count),
                "Packets Delayed Sent":
                compute_ratio(community.msg_statistics.delay_send_count,
                              community.msg_statistics.total_received_count),
                "Packets Delayed Received":
                compute_ratio(community.msg_statistics.delay_received_count,
                              community.msg_statistics.total_received_count),
                "Packets Delayed Success":
                compute_ratio(community.msg_statistics.delay_success_count,
                              community.msg_statistics.delay_received_count),
                "Packets Delayed Timeout":
                compute_ratio(community.msg_statistics.delay_timeout_count,
                              community.msg_statistics.delay_received_count),
                "Statistics":
                community,
            }
            # update community data list
            self.__community_data_list.append(community_data)

            community_list_for_update.append(
                (community_data["Classification"],
                 community_data["Identifier"][:7],
                 community_data["Database id"], community_data["Member"][:7],
                 community_data["Candidates"]))

            if self.__selected_community_identifier == community_data[
                    "Identifier"]:
                reselect_community_idx = idx
            idx += 1

        # update community detail
        self.__listctrl.UpdateData(community_list_for_update)
        community_data_for_update = None
        community_statistics = None
        if reselect_community_idx is not None:
            self.__listctrl.Select(reselect_community_idx)
            community_data_for_update = self.__community_data_list[
                reselect_community_idx]
        self.__detail_panel.UpdateInfo(community_data_for_update)
Exemplo n.º 8
0
    def UpdateInfo(self, stats, to_cleanup=False):
        if to_cleanup:
            for info in self.__info_list:
                info[1] = DATA_NONE
        else:
            self.__info_list[0][1] = "%s:%d" % stats.wan_address
            self.__info_list[1][1] = "%s:%d" % stats.lan_address
            self.__info_list[2][1] = unicode(stats.connection_type)

            self.__info_list[3][1] = "%s" % eta_value(stats.timestamp -
                                                      stats.start)
            self.__info_list[4][1] = "%s or %s/s" % (
                size_format(stats.total_down),
                size_format(
                    int(stats.total_down / (stats.timestamp - stats.start))))
            self.__info_list[5][1] = "%s or %s/s" % (
                size_format(stats.total_up),
                size_format(
                    int(stats.total_up / (stats.timestamp - stats.start))))
            self.__info_list[6][1] = compute_ratio(
                stats.total_send, stats.total_received + stats.total_send)
            self.__info_list[7][1] = compute_ratio(
                stats.total_received, stats.total_received + stats.total_send)
            self.__info_list[8][1] = compute_ratio(
                stats.msg_statistics.success_count, stats.total_received)
            self.__info_list[9][1] = compute_ratio(
                stats.msg_statistics.drop_count, stats.total_received)
            self.__info_list[10][1] = compute_ratio(
                stats.msg_statistics.delay_received_count,
                stats.total_received)
            self.__info_list[11][1] = compute_ratio(
                stats.msg_statistics.delay_send_count,
                stats.msg_statistics.delay_received_count)
            self.__info_list[12][1] = compute_ratio(
                stats.msg_statistics.delay_success_count,
                stats.msg_statistics.delay_received_count)
            self.__info_list[13][1] = compute_ratio(
                stats.msg_statistics.delay_timeout_count,
                stats.msg_statistics.delay_received_count)
            self.__info_list[14][1] = compute_ratio(stats.walk_success_count,
                                                    stats.walk_attempt_count)
            self.__info_list[15][1] = "%s" % stats.msg_statistics.created_count
            self.__info_list[16][1] = compute_ratio(
                sum(c.sync_bloom_new for c in stats.communities),
                sum(c.sync_bloom_send + c.sync_bloom_skip
                    for c in stats.communities))
            self.__info_list[17][1] = compute_ratio(
                sum(c.sync_bloom_reuse for c in stats.communities),
                sum(c.sync_bloom_send + c.sync_bloom_skip
                    for c in stats.communities))
            self.__info_list[18][1] = compute_ratio(
                sum(c.sync_bloom_skip for c in stats.communities),
                sum(c.sync_bloom_send + c.sync_bloom_skip
                    for c in stats.communities))
            self.__info_list[19][1] = "yes" if __debug__ else "no"

        for key, value, _ in self.__info_list:
            self.__text_dict[key].SetLabel(value)

        self.SetupScrolling()