--- a/tests/test-wireproto-caching.t Thu Dec 30 13:25:44 2021 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,468 +0,0 @@
- $ . $TESTDIR/wireprotohelpers.sh
-
-persistent-nodemap is not enabled by default. It is not relevant for this test so disable it.
-
- $ cat >> $HGRCPATH << EOF
- > [format]
- > use-persistent-nodemap = no
- > [extensions]
- > blackbox =
- > [blackbox]
- > track = simplecache
- > EOF
- $ hg init server
- $ enablehttpv2 server
- $ cd server
- $ cat >> .hg/hgrc << EOF
- > [extensions]
- > simplecache = $TESTDIR/wireprotosimplecache.py
- > EOF
-
- $ echo a0 > a
- $ echo b0 > b
- $ hg -q commit -A -m 'commit 0'
- $ echo a1 > a
- $ hg commit -m 'commit 1'
- $ echo b1 > b
- $ hg commit -m 'commit 2'
- $ echo a2 > a
- $ echo b2 > b
- $ hg commit -m 'commit 3'
-
- $ hg log -G -T '{rev}:{node} {desc}'
- @ 3:50590a86f3ff5d1e9a1624a7a6957884565cc8e8 commit 3
- |
- o 2:4d01eda50c6ac5f7e89cbe1880143a32f559c302 commit 2
- |
- o 1:4432d83626e8a98655f062ec1f2a43b07f7fbbb0 commit 1
- |
- o 0:3390ef850073fbc2f0dfff2244342c8e9229013a commit 0
-
-
- $ hg --debug debugindex -m
- rev linkrev nodeid p1 p2
- 0 0 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
- 1 1 a988fb43583e871d1ed5750ee074c6d840bbbfc8 992f4779029a3df8d0666d00bb924f69634e2641 0000000000000000000000000000000000000000
- 2 2 a8853dafacfca6fc807055a660d8b835141a3bb4 a988fb43583e871d1ed5750ee074c6d840bbbfc8 0000000000000000000000000000000000000000
- 3 3 3fe11dfbb13645782b0addafbe75a87c210ffddc a8853dafacfca6fc807055a660d8b835141a3bb4 0000000000000000000000000000000000000000
-
- $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
- $ cat hg.pid > $DAEMON_PIDS
-
-Performing the same request should result in same result, with 2nd response
-coming from cache.
-
- $ sendhttpv2peer << EOF
- > command manifestdata
- > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
- > tree eval:b''
- > fields eval:[b'parents']
- > EOF
- creating http peer for wire protocol version 2
- sending manifestdata command
- response: gen[
- {
- b'totalitems': 1
- },
- {
- b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
- b'parents': [
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- ]
- }
- ]
-
- $ sendhttpv2peer << EOF
- > command manifestdata
- > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
- > tree eval:b''
- > fields eval:[b'parents']
- > EOF
- creating http peer for wire protocol version 2
- sending manifestdata command
- response: gen[
- {
- b'totalitems': 1
- },
- {
- b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
- b'parents': [
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- ]
- }
- ]
-
-Sending different request doesn't yield cache hit.
-
- $ sendhttpv2peer << EOF
- > command manifestdata
- > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41', b'\xa9\x88\xfb\x43\x58\x3e\x87\x1d\x1e\xd5\x75\x0e\xe0\x74\xc6\xd8\x40\xbb\xbf\xc8']
- > tree eval:b''
- > fields eval:[b'parents']
- > EOF
- creating http peer for wire protocol version 2
- sending manifestdata command
- response: gen[
- {
- b'totalitems': 2
- },
- {
- b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
- b'parents': [
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- ]
- },
- {
- b'node': b'\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8',
- b'parents': [
- b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- ]
- }
- ]
-
- $ cat .hg/blackbox.log
- *> cacher constructed for manifestdata (glob)
- *> cache miss for 47abb8efa5f01b8964d74917793ad2464db0fa2c (glob)
- *> storing cache entry for 47abb8efa5f01b8964d74917793ad2464db0fa2c (glob)
- *> cacher constructed for manifestdata (glob)
- *> cache hit for 47abb8efa5f01b8964d74917793ad2464db0fa2c (glob)
- *> cacher constructed for manifestdata (glob)
- *> cache miss for 37326a83e9843f15161fce9d1e92d06b795d5e8e (glob)
- *> storing cache entry for 37326a83e9843f15161fce9d1e92d06b795d5e8e (glob)
-
- $ cat error.log
-
- $ killdaemons.py
- $ rm .hg/blackbox.log
-
-Try with object caching mode
-
- $ cat >> .hg/hgrc << EOF
- > [simplecache]
- > cacheobjects = true
- > EOF
-
- $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
- $ cat hg.pid > $DAEMON_PIDS
-
- $ sendhttpv2peer << EOF
- > command manifestdata
- > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
- > tree eval:b''
- > fields eval:[b'parents']
- > EOF
- creating http peer for wire protocol version 2
- sending manifestdata command
- response: gen[
- {
- b'totalitems': 1
- },
- {
- b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
- b'parents': [
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- ]
- }
- ]
-
- $ sendhttpv2peer << EOF
- > command manifestdata
- > nodes eval:[b'\x99\x2f\x47\x79\x02\x9a\x3d\xf8\xd0\x66\x6d\x00\xbb\x92\x4f\x69\x63\x4e\x26\x41']
- > tree eval:b''
- > fields eval:[b'parents']
- > EOF
- creating http peer for wire protocol version 2
- sending manifestdata command
- response: gen[
- {
- b'totalitems': 1
- },
- {
- b'node': b'\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A',
- b'parents': [
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
- b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
- ]
- }
- ]
-
- $ cat .hg/blackbox.log
- *> cacher constructed for manifestdata (glob)
- *> cache miss for 47abb8efa5f01b8964d74917793ad2464db0fa2c (glob)
- *> storing cache entry for 47abb8efa5f01b8964d74917793ad2464db0fa2c (glob)
- *> cacher constructed for manifestdata (glob)
- *> cache hit for 47abb8efa5f01b8964d74917793ad2464db0fa2c (glob)
-
- $ cat error.log
-
- $ killdaemons.py
- $ rm .hg/blackbox.log
-
-A non-cacheable command does not instantiate cacher
-
- $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
- $ cat hg.pid > $DAEMON_PIDS
- $ sendhttpv2peer << EOF
- > command capabilities
- > EOF
- creating http peer for wire protocol version 2
- sending capabilities command
- response: gen[
- {
- b'commands': {
- b'branchmap': {
- b'args': {},
- b'permissions': [
- b'pull'
- ]
- },
- b'capabilities': {
- b'args': {},
- b'permissions': [
- b'pull'
- ]
- },
- b'changesetdata': {
- b'args': {
- b'fields': {
- b'default': set([]),
- b'required': False,
- b'type': b'set',
- b'validvalues': set([
- b'bookmarks',
- b'parents',
- b'phase',
- b'revision'
- ])
- },
- b'revisions': {
- b'required': True,
- b'type': b'list'
- }
- },
- b'permissions': [
- b'pull'
- ]
- },
- b'filedata': {
- b'args': {
- b'fields': {
- b'default': set([]),
- b'required': False,
- b'type': b'set',
- b'validvalues': set([
- b'linknode',
- b'parents',
- b'revision'
- ])
- },
- b'haveparents': {
- b'default': False,
- b'required': False,
- b'type': b'bool'
- },
- b'nodes': {
- b'required': True,
- b'type': b'list'
- },
- b'path': {
- b'required': True,
- b'type': b'bytes'
- }
- },
- b'permissions': [
- b'pull'
- ]
- },
- b'filesdata': {
- b'args': {
- b'fields': {
- b'default': set([]),
- b'required': False,
- b'type': b'set',
- b'validvalues': set([
- b'firstchangeset',
- b'linknode',
- b'parents',
- b'revision'
- ])
- },
- b'haveparents': {
- b'default': False,
- b'required': False,
- b'type': b'bool'
- },
- b'pathfilter': {
- b'default': None,
- b'required': False,
- b'type': b'dict'
- },
- b'revisions': {
- b'required': True,
- b'type': b'list'
- }
- },
- b'permissions': [
- b'pull'
- ],
- b'recommendedbatchsize': 50000
- },
- b'heads': {
- b'args': {
- b'publiconly': {
- b'default': False,
- b'required': False,
- b'type': b'bool'
- }
- },
- b'permissions': [
- b'pull'
- ]
- },
- b'known': {
- b'args': {
- b'nodes': {
- b'default': [],
- b'required': False,
- b'type': b'list'
- }
- },
- b'permissions': [
- b'pull'
- ]
- },
- b'listkeys': {
- b'args': {
- b'namespace': {
- b'required': True,
- b'type': b'bytes'
- }
- },
- b'permissions': [
- b'pull'
- ]
- },
- b'lookup': {
- b'args': {
- b'key': {
- b'required': True,
- b'type': b'bytes'
- }
- },
- b'permissions': [
- b'pull'
- ]
- },
- b'manifestdata': {
- b'args': {
- b'fields': {
- b'default': set([]),
- b'required': False,
- b'type': b'set',
- b'validvalues': set([
- b'parents',
- b'revision'
- ])
- },
- b'haveparents': {
- b'default': False,
- b'required': False,
- b'type': b'bool'
- },
- b'nodes': {
- b'required': True,
- b'type': b'list'
- },
- b'tree': {
- b'required': True,
- b'type': b'bytes'
- }
- },
- b'permissions': [
- b'pull'
- ],
- b'recommendedbatchsize': 100000
- },
- b'pushkey': {
- b'args': {
- b'key': {
- b'required': True,
- b'type': b'bytes'
- },
- b'namespace': {
- b'required': True,
- b'type': b'bytes'
- },
- b'new': {
- b'required': True,
- b'type': b'bytes'
- },
- b'old': {
- b'required': True,
- b'type': b'bytes'
- }
- },
- b'permissions': [
- b'push'
- ]
- },
- b'rawstorefiledata': {
- b'args': {
- b'files': {
- b'required': True,
- b'type': b'list'
- },
- b'pathfilter': {
- b'default': None,
- b'required': False,
- b'type': b'list'
- }
- },
- b'permissions': [
- b'pull'
- ]
- }
- },
- b'framingmediatypes': [
- b'application/mercurial-exp-framing-0006'
- ],
- b'pathfilterprefixes': set([
- b'path:',
- b'rootfilesin:'
- ]),
- b'rawrepoformats': [
- b'generaldelta',
- b'revlogv1',
- b'sparserevlog'
- ]
- }
- ]
-
- $ test -f .hg/blackbox.log
- [1]
-
-An error is not cached
-
- $ sendhttpv2peer << EOF
- > command manifestdata
- > nodes eval:[b'\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa']
- > tree eval:b''
- > fields eval:[b'parents']
- > EOF
- creating http peer for wire protocol version 2
- sending manifestdata command
- abort: unknown node: \xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa (esc)
- [255]
-
- $ cat .hg/blackbox.log
- *> cacher constructed for manifestdata (glob)
- *> cache miss for 2cba2a7d0d1575fea2fe68f597e97a7c2ac2f705 (glob)
- *> cacher exiting due to error (glob)
-
- $ killdaemons.py
- $ rm .hg/blackbox.log