##// END OF EJS Templates
phabricator: make user searches case-insensitive...
phabricator: make user searches case-insensitive User names in conduit are case insensitive, but when looking for "FOO" it would return "foo" instead and we'd think the user didn't exist. So lower case both the query and the response when comparing them. Differential Revision: https://phab.mercurial-scm.org/D5934

File last commit:

r40958:ca6372b7 default
r41854:570e62f1 default
Show More
test-wireproto-command-filedata.t
364 lines | 10.4 KiB | text/troff | Tads3Lexer
/ tests / test-wireproto-command-filedata.t
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ . $TESTDIR/wireprotohelpers.sh
$ hg init server
$ enablehttpv2 server
$ cd server
Gregory Szorc
tests: use more complex file storage test...
r39899 $ cat > a << EOF
> a0
> 00000000000000000000000000000000000000
> 11111111111111111111111111111111111111
> EOF
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ echo b0 > b
$ mkdir -p dir0/child0 dir0/child1 dir1
$ echo c0 > dir0/c
$ echo d0 > dir0/d
$ echo e0 > dir0/child0/e
$ echo f0 > dir0/child1/f
$ hg -q commit -A -m 'commit 0'
Gregory Szorc
tests: use more complex file storage test...
r39899 $ echo a1 >> a
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ echo d1 > dir0/d
$ hg commit -m 'commit 1'
Gregory Szorc
tests: fix empty commit in test...
r40957 $ echo f1 > dir0/child1/f
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ hg commit -m 'commit 2'
$ hg -q up -r 0
Gregory Szorc
tests: use more complex file storage test...
r39899 $ echo a2 >> a
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ hg commit -m 'commit 3'
created new head
Gregory Szorc
tests: add tests for server-side linknode adjustment with wireprotov2...
r40958 Create multiple heads introducing the same changeset
$ hg -q up -r 0
$ echo foo > dupe-file
$ hg commit -Am 'dupe 1'
adding dupe-file
created new head
$ hg -q up -r 0
$ echo foo > dupe-file
$ hg commit -Am 'dupe 2'
adding dupe-file
created new head
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ hg log -G -T '{rev}:{node} {desc}\n'
Gregory Szorc
tests: add tests for server-side linknode adjustment with wireprotov2...
r40958 @ 5:732c3dd7bee94242de656000e5f458e7ccfe2828 dupe 2
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 |
Gregory Szorc
tests: add tests for server-side linknode adjustment with wireprotov2...
r40958 | o 4:4334f10897d13c3e8beb4b636f7272b4ec2d0322 dupe 1
|/
| o 3:5ce944d7fece1252dae06c34422b573c191b9489 commit 3
|/
Gregory Szorc
tests: fix empty commit in test...
r40957 | o 2:b3c27db01410dae01e5485d425b1440078df540c commit 2
| |
Gregory Szorc
tests: use more complex file storage test...
r39899 | o 1:3ef5e551f219ba505481d34d6b0316b017fa3f00 commit 1
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 |/
Gregory Szorc
tests: use more complex file storage test...
r39899 o 0:91b232a2253ce0638496f67bdfd7a4933fb51b25 commit 0
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675
$ hg --debug debugindex a
rev linkrev nodeid p1 p2
Gregory Szorc
tests: use more complex file storage test...
r39899 0 0 649d149df43d83882523b7fb1e6a3af6f1907b39 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
1 1 0a86321f1379d1a9ecd0579a22977af7a5acaf11 649d149df43d83882523b7fb1e6a3af6f1907b39 0000000000000000000000000000000000000000
Gregory Szorc
tests: fix empty commit in test...
r40957 2 3 7e5801b6d5f03a5a54f3c47b583f7567aad43e5b 649d149df43d83882523b7fb1e6a3af6f1907b39 0000000000000000000000000000000000000000
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675
$ hg --debug debugindex dir0/child0/e
rev linkrev nodeid p1 p2
0 0 bbba6c06b30f443d34ff841bc985c4d0827c6be4 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
Gregory Szorc
tests: add tests for server-side linknode adjustment with wireprotov2...
r40958 $ hg --debug debugindex dupe-file
rev linkrev nodeid p1 p2
0 4 2ed2a3912a0b24502043eae84ee4b279c18b90dd 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ hg serve -p $HGPORT -d --pid-file hg.pid -E error.log
$ cat hg.pid > $DAEMON_PIDS
Missing arguments is an error
$ sendhttpv2peer << EOF
> command filedata
> EOF
creating http peer for wire protocol version 2
sending filedata command
Gregory Szorc
wireprotov2: declare command arguments richly...
r39835 abort: missing required arguments: nodes, path!
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 [255]
$ sendhttpv2peer << EOF
> command filedata
> nodes eval:[]
> EOF
creating http peer for wire protocol version 2
sending filedata command
Gregory Szorc
wireprotov2: declare command arguments richly...
r39835 abort: missing required arguments: path!
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 [255]
Unknown node is an error
$ sendhttpv2peer << EOF
> command filedata
> nodes eval:[b'\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa']
> path eval:b'a'
> EOF
creating http peer for wire protocol version 2
sending filedata command
abort: unknown file node: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
[255]
Fetching a single revision returns just metadata by default
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11']
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 > path eval:b'a'
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 1
},
{
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 }
]
Requesting parents works
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11']
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 > path eval:b'a'
> fields eval:[b'parents']
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 1
},
{
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11',
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 b'parents': [
Gregory Szorc
tests: use more complex file storage test...
r39899 b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9',
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
]
}
]
Requesting revision data works
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 (haveparents defaults to False, so fulltext is emitted)
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11']
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 > path eval:b'a'
> fields eval:[b'revision']
> EOF
creating http peer for wire protocol version 2
sending filedata command
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 response: gen[
{
b'totalitems': 1
},
{
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'revision',
Gregory Szorc
tests: use more complex file storage test...
r39899 84
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 ]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11'
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\na1\n'
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 ]
haveparents=False should be same as above
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11']
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 > path eval:b'a'
> fields eval:[b'revision']
> haveparents eval:False
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 1
},
{
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'revision',
Gregory Szorc
tests: use more complex file storage test...
r39899 84
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 ]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11'
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\na1\n'
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 ]
haveparents=True should emit a delta
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11']
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 > path eval:b'a'
> fields eval:[b'revision']
> haveparents eval:True
> EOF
creating http peer for wire protocol version 2
sending filedata command
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 response: gen[
{
b'totalitems': 1
},
{
Gregory Szorc
tests: use more complex file storage test...
r39899 b'deltabasenode': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9',
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'delta',
15
]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'\x00\x00\x00Q\x00\x00\x00Q\x00\x00\x00\x03a1\n'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 ]
Requesting multiple revisions works
Gregory Szorc
wireprotov2: let clients drive delta behavior...
r39677 (first revision is a fulltext since haveparents=False by default)
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x64\x9d\x14\x9d\xf4\x3d\x83\x88\x25\x23\xb7\xfb\x1e\x6a\x3a\xf6\xf1\x90\x7b\x39', b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11']
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 > path eval:b'a'
> fields eval:[b'revision']
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 2
},
{
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'revision',
Gregory Szorc
tests: use more complex file storage test...
r39899 81
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 ]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\n',
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 {
Gregory Szorc
tests: use more complex file storage test...
r39899 b'deltabasenode': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9',
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'delta',
15
]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'\x00\x00\x00Q\x00\x00\x00Q\x00\x00\x00\x03a1\n'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 ]
Revisions are sorted by DAG order, parents first
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x0a\x86\x32\x1f\x13\x79\xd1\xa9\xec\xd0\x57\x9a\x22\x97\x7a\xf7\xa5\xac\xaf\x11', b'\x64\x9d\x14\x9d\xf4\x3d\x83\x88\x25\x23\xb7\xfb\x1e\x6a\x3a\xf6\xf1\x90\x7b\x39']
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 > path eval:b'a'
> fields eval:[b'revision']
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 2
},
{
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'revision',
Gregory Szorc
tests: use more complex file storage test...
r39899 81
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 ]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\n',
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 {
Gregory Szorc
tests: use more complex file storage test...
r39899 b'deltabasenode': b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9',
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'delta',
15
]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'\n\x862\x1f\x13y\xd1\xa9\xec\xd0W\x9a"\x97z\xf7\xa5\xac\xaf\x11'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'\x00\x00\x00Q\x00\x00\x00Q\x00\x00\x00\x03a1\n'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 ]
Requesting parents and revision data works
$ sendhttpv2peer << EOF
> command filedata
Gregory Szorc
tests: use more complex file storage test...
r39899 > nodes eval:[b'\x7e\x58\x01\xb6\xd5\xf0\x3a\x5a\x54\xf3\xc4\x7b\x58\x3f\x75\x67\xaa\xd4\x3e\x5b']
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 > path eval:b'a'
> fields eval:[b'parents', b'revision']
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 1
},
{
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 b'fieldsfollowing': [
[
b'revision',
Gregory Szorc
tests: use more complex file storage test...
r39899 84
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 ]
],
Gregory Szorc
tests: use more complex file storage test...
r39899 b'node': b'~X\x01\xb6\xd5\xf0:ZT\xf3\xc4{X?ug\xaa\xd4>[',
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 b'parents': [
Gregory Szorc
tests: use more complex file storage test...
r39899 b'd\x9d\x14\x9d\xf4=\x83\x88%#\xb7\xfb\x1ej:\xf6\xf1\x90{9',
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Gregory Szorc
wireprotov2: allow multiple fields to follow revision maps...
r39839 ]
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 },
Gregory Szorc
tests: use more complex file storage test...
r39899 b'a0\n00000000000000000000000000000000000000\n11111111111111111111111111111111111111\na2\n'
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 ]
Gregory Szorc
tests: add tests for server-side linknode adjustment with wireprotov2...
r40958 Linknode for duplicate revision is the initial revision
$ sendhttpv2peer << EOF
> command filedata
> nodes eval:[b'\x2e\xd2\xa3\x91\x2a\x0b\x24\x50\x20\x43\xea\xe8\x4e\xe4\xb2\x79\xc1\x8b\x90\xdd']
> path eval:b'dupe-file'
> fields eval:[b'linknode', b'parents', b'revision']
> EOF
creating http peer for wire protocol version 2
sending filedata command
response: gen[
{
b'totalitems': 1
},
{
b'fieldsfollowing': [
[
b'revision',
4
]
],
b'linknode': b'C4\xf1\x08\x97\xd1<>\x8b\xebKcorr\xb4\xec-\x03"',
b'node': b'.\xd2\xa3\x91*\x0b$P C\xea\xe8N\xe4\xb2y\xc1\x8b\x90\xdd',
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'foo\n'
]
Gregory Szorc
wireprotov2: define and implement "filedata" command...
r39675 $ cat error.log