hgext3rd/evolve/debugcmd.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 17 Apr 2019 20:54:28 +0200
branchstable
changeset 4524 f6099a171a9d
parent 2547 3c594000844b
child 4715 12c8b24757f4
permissions -rw-r--r--
branching: merge 8.5.0 expected output in stable Upstream stable is now for mercurial 5.0
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
2547
3c594000844b debugobsstorestat: adds static about actually obsolete changeses
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2440
diff changeset
    94
    numobs = len(unfi.revs('obsolete()'))
3c594000844b debugobsstorestat: adds static about actually obsolete changeses
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2440
diff changeset
    95
    numtotal = len(unfi)
3c594000844b debugobsstorestat: adds static about actually obsolete changeses
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2440
diff changeset
    96
    ui.write(('    for known precursors:   %9i' % known))
3c594000844b debugobsstorestat: adds static about actually obsolete changeses
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2440
diff changeset
    97
    ui.write((' (%i/%i obsolete changesets)\n' % (numobs, numtotal)))
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    98
    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
    99
    # successors data
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   100
    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
   101
    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
   102
    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
   103
    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
   104
    # meta data info
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   105
    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
   106
    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
   107
        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
   108
2440
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   109
    size_v0.sort()
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   110
    size_v1.sort()
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   111
    if size_v0:
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   112
        ui.write('marker size:\n')
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   113
        # format v1
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   114
        ui.write('    format v1:\n')
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   115
        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
   116
        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
   117
        median = size_v1[nbmarkers // 2]
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   118
        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
   119
        mean = sum(size_v1) // nbmarkers
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   120
        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
   121
        # format v0
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   122
        ui.write('    format v0:\n')
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   123
        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
   124
        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
   125
        median = size_v0[nbmarkers // 2]
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   126
        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
   127
        mean = sum(size_v0) // nbmarkers
0fa7971071b1 debugobsstorestat: add markers size information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 2123
diff changeset
   128
        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
   129
2123
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   130
    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
   131
    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
   132
    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
   133
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   134
    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
   135
             % 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
   136
                    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
   137
    if allclusters:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   138
        nbcluster = len(allclusters)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   139
        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
   140
        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
   141
                 % 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
   142
        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
   143
        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
   144
        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
   145
        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
   146
    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
   147
    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
   148
    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
   149
    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
   150
             % 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
   151
                    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
   152
    if allpclusters:
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   153
        nbcluster = len(allpclusters)
cf7b4ab31f0c split: move the debugcommand into a dedicated module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   154
        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
   155
                 % 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
   156
        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
   157
                 % 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
   158
        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
   159
        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
   160
        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
   161
        ui.write(('        mean length:        %9i\n' % mean))