tests/test-hgwebdirsym.t
author Arseniy Alekseyev <aalekseyev@janestreet.com>
Wed, 31 May 2023 10:37:55 +0100
changeset 50672 3b56395404a1
parent 25472 4d2b9b304ad0
permissions -rw-r--r--
stream-clone: avoid opening a revlog in case we do not need it Opening an revlog has a cost, especially if it is inline as we have to scan the file and construct an index. To prevent the associated slowdown, we just do a minimal scan to check that an inline file is still inline, and simply stream the file without creating a revlog when we can. This provides a big boost compared to the previous changeset, even if the full generation is still penalized by the initial gathering of information. All benchmarks are run on linux with Python 3.10.7. # benchmark.name = hg.exchange.stream.generate # benchmark.variants.version = v2 ### Compared to the previous changesets We get a large win all across the board! # mercurial-2018-08-01-zstd-sparse-revlog before: 0.250694 seconds after: 0.105986 seconds (-57.72%) # pypy-2018-08-01-zstd-sparse-revlog before: 3.885657 seconds after: 1.709748 seconds (-56.00%) # netbeans-2018-08-01-zstd-sparse-revlog before: 16.679371 seconds after: 7.687469 seconds (-53.91%) # mozilla-central-2018-08-01-zstd-sparse-revlog before: 38.575482 seconds after: 17.520316 seconds (-54.58%) # mozilla-try-2019-02-18-zstd-sparse-revlog before: 81.160994 seconds after: 37.073753 seconds (-54.32%) ### Compared to 6.4.3 We are still significantly slower than 6.4.3, the extra time is usually twice slower than the extra time we observe on the locked section, which is a quite interesting information. Except for mercurial-central that is much faster. That discrepancy is not really explained yet. # mercurial-2018-08-01-zstd-sparse-revlog 6.4.3: 0.072560 seconds after: 0.105986 seconds (+46.07%) (- 0.03 seconds) # pypy-2018-08-01-zstd-sparse-revlog 6.4.3: 1.211193 seconds after: 1.709748 seconds (+41.16%) (-0.45 seconds) # netbeans-2018-08-01-zstd-sparse-revlog 6.4.3: 4.932843 seconds after: 7.687469 seconds (+55.84%) (-2.75 seconds) # mozilla-central-2018-08-01-zstd-sparse-revlog 6.4.3: 34.012226 seconds after: 17.520316 seconds (-48.49%) (-16.49 seconds) # mozilla-try-2019-02-18-zstd-sparse-revlog 6.4.3: 23.850555 seconds after: 37.073753 seconds (+55.44%) (+13.22 seconds)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 17017
diff changeset
     1
#require serve symlink
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
     2
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 17017
diff changeset
     3
Tests whether or not hgwebdir properly handles various symlink topologies.
17015
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     4
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     5
hide outer repo
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     6
  $ hg init
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 15446
diff changeset
     7
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
     8
  $ hg init a
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
     9
  $ echo a > a/a
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    10
  $ hg --cwd a ci -Ama -d'1 0'
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    11
  adding a
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    12
  $ mkdir webdir
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    13
  $ cd webdir
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    14
  $ hg init b
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    15
  $ echo b > b/b
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    16
  $ hg --cwd b ci -Amb -d'2 0'
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    17
  adding b
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    18
  $ hg init c
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    19
  $ echo c > c/c
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    20
  $ hg --cwd c ci -Amc -d'3 0'
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    21
  adding c
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    22
  $ ln -s ../a al
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    23
  $ ln -s ../webdir circle
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    24
  $ root=`pwd`
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    25
  $ cd ..
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    26
  $ cat > collections.conf <<EOF
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    27
  > [collections]
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    28
  > $root=$root
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    29
  > EOF
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    30
  $ hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    31
  >     -A access-collections.log -E error-collections.log
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    32
  $ cat hg.pid >> $DAEMON_PIDS
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    33
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    34
should succeed
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    35
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    36
  $ get-with-headers.py localhost:$HGPORT '?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    37
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    38
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    39
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    40
  /al/
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    41
  /b/
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    42
  /c/
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    43
  
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    44
  $ get-with-headers.py localhost:$HGPORT 'al/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    45
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    46
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    47
  a
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    48
  $ get-with-headers.py localhost:$HGPORT 'b/file/tip/b?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    49
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    50
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    51
  b
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    52
  $ get-with-headers.py localhost:$HGPORT 'c/file/tip/c?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    53
  200 Script output follows
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    54
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    55
  c
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    56
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    57
should fail
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    58
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    59
  $ get-with-headers.py localhost:$HGPORT 'circle/al/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    60
  404 Not Found
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    61
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    62
  
13066
86888ae9ce90 hgwebdir: fix incorrect index generation for invalid paths (issue2023)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12444
diff changeset
    63
  error: repository circle/al/file/tip/a not found
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    64
  [1]
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    65
  $ get-with-headers.py localhost:$HGPORT 'circle/b/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    66
  404 Not Found
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    67
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    68
  
13066
86888ae9ce90 hgwebdir: fix incorrect index generation for invalid paths (issue2023)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12444
diff changeset
    69
  error: repository circle/b/file/tip/a not found
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    70
  [1]
25472
4d2b9b304ad0 tests: drop explicit $TESTDIR from executables
Matt Mackall <mpm@selenic.com>
parents: 22046
diff changeset
    71
  $ get-with-headers.py localhost:$HGPORT 'circle/c/file/tip/a?style=raw'
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    72
  404 Not Found
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    73
  
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    74
  
13066
86888ae9ce90 hgwebdir: fix incorrect index generation for invalid paths (issue2023)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12444
diff changeset
    75
  error: repository circle/c/file/tip/a not found
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    76
  [1]
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    77
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    78
collections errors
6341
63bdfcc3eaaf test: Add tests for webdir symlinks and walkrepos.
Eric Hopper <hopper@omnifarious.org>
parents:
diff changeset
    79
12444
a4c19a900794 tests: unify test-hgwebdirsym
Matt Mackall <mpm@selenic.com>
parents: 6341
diff changeset
    80
  $ cat error-collections.log