tests/test-push-checkheads-partial-C4.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 16 Apr 2019 17:26:38 +0200
changeset 42159 4f9a89837f07
parent 39480 89630d0b3e23
child 42893 34a46d48d24e
permissions -rw-r--r--
setdiscovery: stop limiting the number of local head we initially send In our testing this limitation provides now real gain and instead triggers pathological discovery timing for some repository with many heads. See inline documentation for details. Some timing below: Mozilla try repository, (~1M revs, ~35K heads), discovery between 2 clones with 100 head missing on each side before: ! wall 1.492111 comb 1.490000 user 1.450000 sys 0.040000 (best of 20) ! wall 1.813992 comb 1.820000 user 1.700000 sys 0.120000 (max of 20) ! wall 1.574326 comb 1.573500 user 1.522000 sys 0.051500 (avg of 20) ! wall 1.572583 comb 1.570000 user 1.520000 sys 0.050000 (median of 20) after: ! wall 1.147834 comb 1.150000 user 1.090000 sys 0.060000 (best of 20) ! wall 1.449144 comb 1.450000 user 1.330000 sys 0.120000 (max of 20) ! wall 1.204618 comb 1.202500 user 1.146500 sys 0.056000 (avg of 20) ! wall 1.194407 comb 1.190000 user 1.140000 sys 0.050000 (median of 20) pypy (~100 heads, 317 heads) discovery between clones with only 42 common heads before: ! wall 0.031653 comb 0.030000 user 0.030000 sys 0.000000 (best of 25) ! wall 0.055719 comb 0.050000 user 0.040000 sys 0.010000 (max of 25) ! wall 0.038939 comb 0.039600 user 0.038400 sys 0.001200 (avg of 25) ! wall 0.038660 comb 0.050000 user 0.040000 sys 0.010000 (median of 25) after: ! wall 0.018754 comb 0.020000 user 0.020000 sys 0.000000 (best of 49) ! wall 0.034505 comb 0.040000 user 0.030000 sys 0.010000 (max of 49) ! wall 0.019631 comb 0.019796 user 0.018367 sys 0.001429 (avg of 49) ! wall 0.019132 comb 0.020000 user 0.020000 sys 0.000000 (median of 49) Private repository (~1M revs, ~3K heads), discovery from a strip subset, about 100 changesets to be pulled. before: ! wall 1.837729 comb 1.840000 user 1.790000 sys 0.050000 (best of 20) ! wall 2.203468 comb 2.200000 user 2.100000 sys 0.100000 (max of 20) ! wall 2.049355 comb 2.048500 user 2.002500 sys 0.046000 (avg of 20) ! wall 2.035315 comb 2.040000 user 2.000000 sys 0.040000 (median of 20) after: ! wall 0.136598 comb 0.130000 user 0.110000 sys 0.020000 (best of 20) ! wall 0.330519 comb 0.330000 user 0.260000 sys 0.070000 (max of 20) ! wall 0.157254 comb 0.155500 user 0.123000 sys 0.032500 (avg of 20) ! wall 0.149870 comb 0.140000 user 0.110000 sys 0.030000 (median of 20) Same private repo, discovery between two clone with 500 different heads on each side: before: ! wall 2.372919 comb 2.370000 user 2.320000 sys 0.050000 (best of 20) ! wall 2.622422 comb 2.610000 user 2.510000 sys 0.100000 (max of 20) ! wall 2.450135 comb 2.450000 user 2.402000 sys 0.048000 (avg of 20) ! wall 2.443896 comb 2.450000 user 2.410000 sys 0.040000 (median of 20) after: ! wall 0.625497 comb 0.620000 user 0.570000 sys 0.050000 (best of 20) ! wall 0.834723 comb 0.820000 user 0.730000 sys 0.090000 (max of 20) ! wall 0.675725 comb 0.675500 user 0.628000 sys 0.047500 (avg of 20) ! wall 0.671614 comb 0.680000 user 0.640000 sys 0.040000 (median of 20)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31985
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case C-4
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     5
Mercurial checks for the introduction of new heads on push. Evolution comes
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     6
into play to detect if existing branches on the server are being replaced by
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     9
This case is part of a series of tests checking this behavior.
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category C: case were the branch is only partially obsoleted
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 4: 2 changeset branch, only the base is pruned
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
.. old-state:
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
.. * 2 changeset branch
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
.. new-state:
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
.. * old base is pruned
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
.. * 1 new unrelated branch
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
.. expected-result:
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
.. * push denied
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
.. graph-summary:
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..   B ◔
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
..     |
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..   A ⊗ ◔ C
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..     |/
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
..     ●
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
  $ . $TESTDIR/testlib/push-checkheads-util.sh
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
Test setup
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
----------
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
  $ mkdir C4
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
  $ cd C4
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
  $ setuprepos
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
  creating basic server and client repo
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
  updating to branch default
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  $ cd server
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  $ mkcommit B0
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  $ cd ../client
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
  $ hg pull
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
    50
  pulling from $TESTTMP/C4/server
31985
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
  searching for changes
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
  adding changesets
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  adding manifests
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  adding file changes
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    55
  added 1 changesets with 1 changes to 1 files
39480
89630d0b3e23 phase: report number of non-public changeset alongside the new range
Boris Feld <boris.feld@octobus.net>
parents: 35709
diff changeset
    56
  new changesets d73caddc5533 (1 drafts)
31985
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
  (run 'hg update' to get a working copy)
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    58
  $ hg up 0
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    59
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  $ mkcommit C0
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  created new head
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
  $ hg debugobsolete --record-parents `getid "desc(A0)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 31985
diff changeset
    63
  obsoleted 1 changesets
35709
1a09dad8b85a evolution: report new unstable changesets
Martin von Zweigbergk <martinvonz@google.com>
parents: 35508
diff changeset
    64
  1 new orphan changesets
31985
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
  $ hg log -G --hidden
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
  @  0f88766e02d6 (draft): C0
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
  |
35508
9b3f95d9783d graphlog: add another graph node type, unstable, using character "*" (BC)
Anton Shestakov <av6@dwimlabs.net>
parents: 35393
diff changeset
    68
  | *  d73caddc5533 (draft): B0
31985
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
  | |
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
  | x  8aaa48160adc (draft): A0
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
  |/
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
  o  1e4be0697311 (public): root
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
  
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
Actual testing
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
--------------
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    77
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
  $ hg push --rev 'desc(C0)'
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
    79
  pushing to $TESTTMP/C4/server
31985
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    80
  searching for changes
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    81
  abort: push creates new remote head 0f88766e02d6!
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    82
  (merge or see 'hg help push' for details about pushing new heads)
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    83
  [255]
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    84
7906cdb64895 obsolescence: add test for the "branch replacement" logic during push, case C4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    85
  $ cd ../..