hgext3rd/evolve/debugcmd.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 19 May 2017 11:16:22 +0200
changeset 2440 0fa7971071b1
parent 2123 cf7b4ab31f0c
child 2547 3c594000844b
permissions -rw-r--r--
debugobsstorestat: add markers size information We adds some extra information about markers size in all known format.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
# Code dedicated to debug commands around evolution
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
#
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
# Copyright 2017 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
#
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
# Status: Ready to Upstream
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     9
#
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
#  * We could have the same code in core as `hg debugobsolete --stat`,
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
#  * We probably want a way for the extension to hook in for extra data.
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
2440
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    13
from mercurial import (
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    14
    obsolete,
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    15
    node,
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    16
)
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
from mercurial.i18n import _
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
from . import exthelper
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
eh = exthelper.exthelper()
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
@eh.command('debugobsstorestat', [], '')
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
def cmddebugobsstorestat(ui, repo):
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
    """print statistics about obsolescence markers in the repo"""
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
    def _updateclustermap(nodes, mark, clustersmap):
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
        c = (set(nodes), set([mark]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
        toproceed = set(nodes)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
        while toproceed:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
            n = toproceed.pop()
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
            other = clustersmap.get(n)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
            if (other is not None
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
                and other is not c):
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
                other[0].update(c[0])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
                other[1].update(c[1])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
                for on in c[0]:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
                    if on in toproceed:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
                        continue
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
                    clustersmap[on] = other
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
                c = other
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
            clustersmap[n] = c
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
    store = repo.obsstore
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
    unfi = repo.unfiltered()
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
    nm = unfi.changelog.nodemap
2440
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    47
    nbmarkers = len(store._all)
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    48
    ui.write(_('markers total:              %9i\n') % nbmarkers)
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
    sucscount = [0, 0, 0, 0]
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    50
    known = 0
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
    parentsdata = 0
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
    metakeys = {}
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
    # node -> cluster mapping
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
    #   a cluster is a (set(nodes), set(markers)) tuple
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    55
    clustersmap = {}
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    56
    # same data using parent information
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
    pclustersmap = {}
2440
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    58
    size_v0 = []
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    59
    size_v1 = []
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
    for mark in store:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
        if mark[0] in nm:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
            known += 1
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    63
        nbsucs = len(mark[1])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    64
        sucscount[min(nbsucs, 3)] += 1
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
        meta = mark[3]
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
        for key, value in meta:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
            metakeys.setdefault(key, 0)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
            metakeys[key] += 1
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
        meta = dict(meta)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
        parents = [meta.get('p1'), meta.get('p2')]
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
        parents = [node.bin(p) for p in parents if p is not None]
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
        if parents:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
            parentsdata += 1
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
        # cluster handling
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
        nodes = set(mark[1])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
        nodes.add(mark[0])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    77
        _updateclustermap(nodes, mark, clustersmap)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
        # same with parent data
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    79
        nodes.update(parents)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    80
        _updateclustermap(nodes, mark, pclustersmap)
2440
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    81
        size_v0.append(len(obsolete._fm0encodeonemarker(mark)))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
    82
        size_v1.append(len(obsolete._fm1encodeonemarker(mark)))
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    83
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    84
    # freezing the result
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    85
    for c in clustersmap.values():
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    86
        fc = (frozenset(c[0]), frozenset(c[1]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    87
        for n in fc[0]:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    88
            clustersmap[n] = fc
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    89
    # same with parent data
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    90
    for c in pclustersmap.values():
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    91
        fc = (frozenset(c[0]), frozenset(c[1]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    92
        for n in fc[0]:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    93
            pclustersmap[n] = fc
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    94
    ui.write(('    for known precursors:   %9i\n' % known))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    95
    ui.write(('    with parents data:      %9i\n' % parentsdata))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    96
    # successors data
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    97
    ui.write(('markers with no successors: %9i\n' % sucscount[0]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    98
    ui.write(('              1 successors: %9i\n' % sucscount[1]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    99
    ui.write(('              2 successors: %9i\n' % sucscount[2]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   100
    ui.write(('    more than 2 successors: %9i\n' % sucscount[3]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   101
    # meta data info
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   102
    ui.write(('    available  keys:\n'))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   103
    for key in sorted(metakeys):
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   104
        ui.write(('    %15s:        %9i\n' % (key, metakeys[key])))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   105
2440
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   106
    size_v0.sort()
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   107
    size_v1.sort()
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   108
    if size_v0:
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   109
        ui.write('marker size:\n')
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   110
        # format v1
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   111
        ui.write('    format v1:\n')
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   112
        ui.write(('        smallest length:    %9i\n' % size_v1[0]))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   113
        ui.write(('        longer length:      %9i\n' % size_v1[-1]))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   114
        median = size_v1[nbmarkers // 2]
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   115
        ui.write(('        median length:      %9i\n' % median))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   116
        mean = sum(size_v1) // nbmarkers
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   117
        ui.write(('        mean length:        %9i\n' % mean))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   118
        # format v0
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   119
        ui.write('    format v0:\n')
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   120
        ui.write(('        smallest length:    %9i\n' % size_v0[0]))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   121
        ui.write(('        longer length:      %9i\n' % size_v0[-1]))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   122
        median = size_v0[nbmarkers // 2]
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   123
        ui.write(('        median length:      %9i\n' % median))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   124
        mean = sum(size_v0) // nbmarkers
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   125
        ui.write(('        mean length:        %9i\n' % mean))
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   126
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   127
    allclusters = list(set(clustersmap.values()))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   128
    allclusters.sort(key=lambda x: len(x[1]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   129
    ui.write(('disconnected clusters:      %9i\n' % len(allclusters)))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   130
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   131
    ui.write('        any known node:     %9i\n'
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   132
             % len([c for c in allclusters
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   133
                    if [n for n in c[0] if nm.get(n) is not None]]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   134
    if allclusters:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   135
        nbcluster = len(allclusters)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   136
        ui.write(('        smallest length:    %9i\n' % len(allclusters[0][1])))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   137
        ui.write(('        longer length:      %9i\n'
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   138
                 % len(allclusters[-1][1])))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   139
        median = len(allclusters[nbcluster // 2][1])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   140
        ui.write(('        median length:      %9i\n' % median))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   141
        mean = sum(len(x[1]) for x in allclusters) // nbcluster
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   142
        ui.write(('        mean length:        %9i\n' % mean))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   143
    allpclusters = list(set(pclustersmap.values()))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   144
    allpclusters.sort(key=lambda x: len(x[1]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   145
    ui.write(('    using parents data:     %9i\n' % len(allpclusters)))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   146
    ui.write('        any known node:     %9i\n'
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   147
             % len([c for c in allclusters
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   148
                    if [n for n in c[0] if nm.get(n) is not None]]))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   149
    if allpclusters:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   150
        nbcluster = len(allpclusters)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   151
        ui.write(('        smallest length:    %9i\n'
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   152
                 % len(allpclusters[0][1])))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   153
        ui.write(('        longer length:      %9i\n'
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   154
                 % len(allpclusters[-1][1])))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   155
        median = len(allpclusters[nbcluster // 2][1])
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   156
        ui.write(('        median length:      %9i\n' % median))
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   157
        mean = sum(len(x[1]) for x in allpclusters) // nbcluster
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   158
        ui.write(('        mean length:        %9i\n' % mean))