tests/test-bad-pull.t
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
Mon, 23 Dec 2013 15:29:51 -0800
changeset 20207 cd62532c62a1
parent 17019 5d0538599428
child 22046 7a9cbb315d84
permissions -rw-r--r--
obsolete: order of magnitude speedup in _computebumpedset Reminder: a changeset is said "bumped" if it tries to obsolete a immutable changeset. The previous algorithm for computing bumped changeset was: 1) Get all public changesets 2) Find all they successors 3) Search for stuff that are eligible for being "bumped" (mutable and non obsolete) The entry size of this algorithm is `O(len(public))` which is mostly the same as `O(len(repo))`. Even this this approach mean fewer obsolescence marker are traveled, this is not very scalable. The new algorithm is: 1) For each potential bumped changesets (non obsolete mutable) 2) iterate over precursors 3) if a precursors is public. changeset is bumped We travel more obsolescence marker, but the entry size is much smaller since the amount of potential bumped should remains mostly stable with time `O(1)`. On some confidential gigantic repo this move bumped computation from 15.19s to 0.46s (×33 speedup…). On "smaller" repo (mercurial, cubicweb's review) no significant gain were seen. The additional traversal of obsolescence marker is probably probably counter balance the advantage of it. Other optimisation could be done in the future (eg: sharing precursors cache for divergence detection)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15446
c5c9ca3719f9 tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents: 12376
diff changeset
     1
  $ "$TESTDIR/hghave" serve || exit 80
c5c9ca3719f9 tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents: 12376
diff changeset
     2
17019
5d0538599428 test-bad-pull: partially adjust for Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 16496
diff changeset
     3
#if windows
5d0538599428 test-bad-pull: partially adjust for Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 16496
diff changeset
     4
  $ hg clone http://localhost:$HGPORT/ copy
5d0538599428 test-bad-pull: partially adjust for Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 16496
diff changeset
     5
  abort: * (glob)
5d0538599428 test-bad-pull: partially adjust for Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 16496
diff changeset
     6
  [255]
5d0538599428 test-bad-pull: partially adjust for Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 16496
diff changeset
     7
#else
11859
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
     8
  $ hg clone http://localhost:$HGPORT/ copy
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
     9
  abort: error: Connection refused
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 11859
diff changeset
    10
  [255]
17019
5d0538599428 test-bad-pull: partially adjust for Windows
Adrian Buehlmann <adrian@cadifra.com>
parents: 16496
diff changeset
    11
#endif
395
fbe8834923c5 commands: report http exceptions nicely
mpm@selenic.com
parents:
diff changeset
    12
15515
21766d5531cb tests: remove hacks for testing if file or directory exists
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
    13
  $ test -d copy
21766d5531cb tests: remove hacks for testing if file or directory exists
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
    14
  [1]
395
fbe8834923c5 commands: report http exceptions nicely
mpm@selenic.com
parents:
diff changeset
    15
11859
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    16
  $ cat > dumb.py <<EOF
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    17
  > import BaseHTTPServer, SimpleHTTPServer, os, signal
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    18
  > def run(server_class=BaseHTTPServer.HTTPServer,
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    19
  >         handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    20
  >     server_address = ('localhost', int(os.environ['HGPORT']))
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    21
  >     httpd = server_class(server_address, handler_class)
16334
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    22
  >     open("listening", "w")
16296
4343d5226149 tests: eliminate daemon race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 15515
diff changeset
    23
  >     httpd.handle_request()
11859
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    24
  > run()
f48178034569 tests: unify test-bad-pull
Martin Geisler <mg@lazybytes.net>
parents: 10154
diff changeset
    25
  > EOF
395
fbe8834923c5 commands: report http exceptions nicely
mpm@selenic.com
parents:
diff changeset
    26
16334
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    27
  $ python dumb.py 2> log &
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    28
  $ P=$!
16496
abbabbbe4ec2 tests: use 'do sleep 0' instead of 'do true', also on first line of command
Mads Kiilerich <mads@kiilerich.com>
parents: 16341
diff changeset
    29
  $ while [ ! -f listening ]; do sleep 0; done
16334
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    30
  $ hg clone http://localhost:$HGPORT/foo copy2
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    31
  abort: HTTP Error 404: * (glob)
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    32
  [255]
b9bd95e61b49 tests: fix shutdown race in test-bad-pull
Matt Mackall <mpm@selenic.com>
parents: 16296
diff changeset
    33
  $ wait $P