Mercurial > public > mercurial-scm > hg
annotate tests/test-revlog-raw.py @ 47012:d55b71393907
node: replace nullid and friends with nodeconstants class
The introduction of 256bit hashes require changes to nullid and other
constant magic values. Start pushing them down from repository and
revlog where sensible.
Differential Revision: https://phab.mercurial-scm.org/D9465
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Mon, 29 Mar 2021 01:52:06 +0200 |
parents | a41565bef69f |
children | 4c041c71ec01 |
rev | line source |
---|---|
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
1 # test revlog interaction about raw data (flagprocessor) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
2 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
3 from __future__ import absolute_import, print_function |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
4 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
5 import collections |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
6 import hashlib |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
7 import sys |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
8 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
9 from mercurial import ( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
10 encoding, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
11 revlog, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
12 transaction, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
13 vfs, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
14 ) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
15 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
16 from mercurial.revlogutils import ( |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
17 deltas, |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41365
diff
changeset
|
18 flagutil, |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
19 ) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
20 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
21 # TESTTMP is optional. This makes it convenient to run without run-tests.py |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
22 tvfs = vfs.vfs(encoding.environ.get(b'TESTTMP', b'/tmp')) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
23 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
24 # Enable generaldelta otherwise revlog won't use delta as expected by the test |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
25 tvfs.options = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
26 b'generaldelta': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
27 b'revlogv1': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
28 b'sparse-revlog': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
29 } |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
30 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
31 # The test wants to control whether to use delta explicitly, based on |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
32 # "storedeltachains". |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
33 revlog.revlog._isgooddeltainfo = lambda self, d, textlen: self._storedeltachains |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
34 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
35 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
36 def abort(msg): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
37 print('abort: %s' % msg) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
38 # Return 0 so run-tests.py could compare the output. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
39 sys.exit() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
40 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
41 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
42 # Register a revlog processor for flag EXTSTORED. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
43 # |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
44 # It simply prepends a fixed header, and replaces '1' to 'i'. So it has |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
45 # insertion and replacement, and may be interesting to test revlog's line-based |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
46 # deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
47 _extheader = b'E\n' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
48 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
49 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
50 def readprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
51 # True: the returned text could be used to verify hash |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
52 text = rawtext[len(_extheader) :].replace(b'i', b'1') |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46113
diff
changeset
|
53 return text, True |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
54 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
55 |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46113
diff
changeset
|
56 def writeprocessor(self, text): |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
57 # False: the returned rawtext shouldn't be used to verify hash |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
58 rawtext = _extheader + text.replace(b'1', b'i') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
59 return rawtext, False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
60 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
61 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
62 def rawprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
63 # False: do not verify hash. Only the content returned by "readprocessor" |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
64 # can be used to verify hash. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
65 return False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
66 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
67 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
68 flagutil.addflagprocessor( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
69 revlog.REVIDX_EXTSTORED, (readprocessor, writeprocessor, rawprocessor) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
70 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
71 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
72 # Utilities about reading and appending revlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
73 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
74 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
75 def newtransaction(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
76 # A transaction is required to write revlogs |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
77 report = lambda msg: None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
78 return transaction.transaction(report, tvfs, {'plain': tvfs}, b'journal') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
79 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
80 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
81 def newrevlog(name=b'_testrevlog.i', recreate=False): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
82 if recreate: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
83 tvfs.tryunlink(name) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
84 rlog = revlog.revlog(tvfs, name) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
85 return rlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
86 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
87 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
88 def appendrev(rlog, text, tr, isext=False, isdelta=True): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
89 """Append a revision. If isext is True, set the EXTSTORED flag so flag |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
90 processor will be used (and rawtext is different from text). If isdelta is |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
91 True, force the revision to be a delta, otherwise it's full text. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
92 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
93 nextrev = len(rlog) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
94 p1 = rlog.node(nextrev - 1) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
95 p2 = rlog.nullid |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
96 if isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
97 flags = revlog.REVIDX_EXTSTORED |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
98 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
99 flags = revlog.REVIDX_DEFAULT_FLAGS |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
100 # Change storedeltachains temporarily, to override revlog's delta decision |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
101 rlog._storedeltachains = isdelta |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
102 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
103 rlog.addrevision(text, tr, nextrev, p1, p2, flags=flags) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
104 return nextrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
105 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
106 abort('rev %d: failed to append: %s' % (nextrev, ex)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
107 finally: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
108 # Restore storedeltachains. It is always True, see revlog.__init__ |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
109 rlog._storedeltachains = True |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
110 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
111 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
112 def addgroupcopy(rlog, tr, destname=b'_destrevlog.i', optimaldelta=True): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
113 """Copy revlog to destname using revlog.addgroup. Return the copied revlog. |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
114 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
115 This emulates push or pull. They use changegroup. Changegroup requires |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
116 repo to work. We don't have a repo, so a dummy changegroup is used. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
117 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
118 If optimaldelta is True, use optimized delta parent, so the destination |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
119 revlog could probably reuse it. Otherwise it builds sub-optimal delta, and |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
120 the destination revlog needs more work to use it. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
121 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
122 This exercises some revlog.addgroup (and revlog._addrevision(text=None)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
123 code path, which is not covered by "appendrev" alone. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
124 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
125 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
126 class dummychangegroup(object): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
127 @staticmethod |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
128 def deltachunk(pnode): |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
129 pnode = pnode or rlog.nullid |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
130 parentrev = rlog.rev(pnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
131 r = parentrev + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
132 if r >= len(rlog): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
133 return {} |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
134 if optimaldelta: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
135 deltaparent = parentrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
136 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
137 # suboptimal deltaparent |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
138 deltaparent = min(0, parentrev) |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
139 if not rlog.candelta(deltaparent, r): |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
140 deltaparent = -1 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
141 return { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
142 b'node': rlog.node(r), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
143 b'p1': pnode, |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
144 b'p2': rlog.nullid, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
145 b'cs': rlog.node(rlog.linkrev(r)), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
146 b'flags': rlog.flags(r), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
147 b'deltabase': rlog.node(deltaparent), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
148 b'delta': rlog.revdiff(deltaparent, r), |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46709
diff
changeset
|
149 b'sidedata': rlog.sidedata(r), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
150 } |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
151 |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
152 def deltaiter(self): |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
153 chain = None |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
154 for chunkdata in iter(lambda: self.deltachunk(chain), {}): |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
155 node = chunkdata[b'node'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
156 p1 = chunkdata[b'p1'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
157 p2 = chunkdata[b'p2'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
158 cs = chunkdata[b'cs'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
159 deltabase = chunkdata[b'deltabase'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
160 delta = chunkdata[b'delta'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
161 flags = chunkdata[b'flags'] |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46709
diff
changeset
|
162 sidedata = chunkdata[b'sidedata'] |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
163 |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
164 chain = node |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
165 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46709
diff
changeset
|
166 yield (node, p1, p2, cs, deltabase, delta, flags, sidedata) |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
167 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
168 def linkmap(lnode): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
169 return rlog.rev(lnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
170 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
171 dlog = newrevlog(destname, recreate=True) |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
172 dummydeltas = dummychangegroup().deltaiter() |
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
173 dlog.addgroup(dummydeltas, linkmap, tr) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
174 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
175 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
176 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
177 def lowlevelcopy(rlog, tr, destname=b'_destrevlog.i'): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
178 """Like addgroupcopy, but use the low level revlog._addrevision directly. |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
179 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
180 It exercises some code paths that are hard to reach easily otherwise. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
181 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
182 dlog = newrevlog(destname, recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
183 for r in rlog: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
184 p1 = rlog.node(r - 1) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
185 p2 = rlog.nullid |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
186 if r == 0 or (rlog.flags(r) & revlog.REVIDX_EXTSTORED): |
42777
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
187 text = rlog.rawdata(r) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
188 cachedelta = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
189 else: |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
190 # deltaparent cannot have EXTSTORED flag. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
191 deltaparent = max( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
192 [-1] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
193 + [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
194 p |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
195 for p in range(r) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
196 if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
197 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
198 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
199 text = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
200 cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
201 flags = rlog.flags(r) |
33625
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
202 ifh = dfh = None |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
203 try: |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
204 ifh = dlog.opener(dlog.indexfile, b'a+') |
33625
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
205 if not dlog._inline: |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
206 dfh = dlog.opener(dlog.datafile, b'a+') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
207 dlog._addrevision( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
208 rlog.node(r), text, tr, r, p1, p2, flags, cachedelta, ifh, dfh |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
209 ) |
33625
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
210 finally: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
211 if dfh is not None: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
212 dfh.close() |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
213 if ifh is not None: |
6788e648efcf
test-revlog-raw: close file handles explicitly (issue5644)
Yuya Nishihara <yuya@tcha.org>
parents:
31764
diff
changeset
|
214 ifh.close() |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
215 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
216 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
217 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
218 # Utilities to generate revisions for testing |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
219 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
220 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
221 def genbits(n): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
222 """Given a number n, generate (2 ** (n * 2) + 1) numbers in range(2 ** n). |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
223 i.e. the generated numbers have a width of n bits. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
224 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
225 The combination of two adjacent numbers will cover all possible cases. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
226 That is to say, given any x, y where both x, and y are in range(2 ** n), |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
227 there is an x followed immediately by y in the generated sequence. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
228 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
229 m = 2 ** n |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
230 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
231 # Gray Code. See https://en.wikipedia.org/wiki/Gray_code |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
232 gray = lambda x: x ^ (x >> 1) |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
233 reversegray = {gray(i): i for i in range(m)} |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
234 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
235 # Generate (n * 2) bit gray code, yield lower n bits as X, and look for |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
236 # the next unused gray code where higher n bits equal to X. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
237 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
238 # For gray codes whose higher bits are X, a[X] of them have been used. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
239 a = [0] * m |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
240 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
241 # Iterate from 0. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
242 x = 0 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
243 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
244 for i in range(m * m): |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
245 x = reversegray[x] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
246 y = gray(a[x] + x * m) & (m - 1) |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
247 assert a[x] < m |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
248 a[x] += 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
249 x = y |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
250 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
251 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
252 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
253 def gentext(rev): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
254 '''Given a revision number, generate dummy text''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
255 return b''.join(b'%d\n' % j for j in range(-1, rev % 5)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
256 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
257 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
258 def writecases(rlog, tr): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
259 """Write some revisions interested to the test. |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
260 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
261 The test is interested in 3 properties of a revision: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
262 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
263 - Is it a delta or a full text? (isdelta) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
264 This is to catch some delta application issues. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
265 - Does it have a flag of EXTSTORED? (isext) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
266 This is to catch some flag processor issues. Especially when |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
267 interacted with revlog deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
268 - Is its text empty? (isempty) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
269 This is less important. It is intended to try to catch some careless |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
270 checks like "if text" instead of "if text is None". Note: if flag |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
271 processor is involved, raw text may be not empty. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
272 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
273 Write 65 revisions. So that all combinations of the above flags for |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
274 adjacent revisions are covered. That is to say, |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
275 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
276 len(set( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
277 (r.delta, r.ext, r.empty, (r+1).delta, (r+1).ext, (r+1).empty) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
278 for r in range(len(rlog) - 1) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
279 )) is 64. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
280 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
281 Where "r.delta", "r.ext", and "r.empty" are booleans matching properties |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
282 mentioned above. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
283 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
284 Return expected [(text, rawtext)]. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
285 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
286 result = [] |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
287 for i, x in enumerate(genbits(3)): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
288 isdelta, isext, isempty = bool(x & 1), bool(x & 2), bool(x & 4) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
289 if isempty: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
290 text = b'' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
291 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
292 text = gentext(i) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
293 rev = appendrev(rlog, text, tr, isext=isext, isdelta=isdelta) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
294 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
295 # Verify text, rawtext, and rawsize |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
296 if isext: |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46113
diff
changeset
|
297 rawtext = writeprocessor(None, text)[0] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
298 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
299 rawtext = text |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
300 if rlog.rawsize(rev) != len(rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
301 abort('rev %d: wrong rawsize' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
302 if rlog.revision(rev, raw=False) != text: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
303 abort('rev %d: wrong text' % rev) |
42777
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
304 if rlog.rawdata(rev) != rawtext: |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
305 abort('rev %d: wrong rawtext' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
306 result.append((text, rawtext)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
307 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
308 # Verify flags like isdelta, isext work as expected |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
309 # isdelta can be overridden to False if this or p1 has isext set |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
310 if bool(rlog.deltaparent(rev) > -1) and not isdelta: |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
311 abort('rev %d: isdelta is unexpected' % rev) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
312 if bool(rlog.flags(rev)) != isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
313 abort('rev %d: isext is ineffective' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
314 return result |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
315 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
316 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
317 # Main test and checking |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
318 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
319 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
320 def checkrevlog(rlog, expected): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
321 '''Check if revlog has expected contents. expected is [(text, rawtext)]''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
322 # Test using different access orders. This could expose some issues |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
323 # depending on revlog caching (see revlog._cache). |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
324 for r0 in range(len(rlog) - 1): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
325 r1 = r0 + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
326 for revorder in [[r0, r1], [r1, r0]]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
327 for raworder in [[True], [False], [True, False], [False, True]]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
328 nlog = newrevlog() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
329 for rev in revorder: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
330 for raw in raworder: |
42777
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
331 if raw: |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
332 t = nlog.rawdata(rev) |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
333 else: |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
334 t = nlog.revision(rev) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
335 if t != expected[rev][int(raw)]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
336 abort( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
337 'rev %d: corrupted %stext' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
338 % (rev, raw and 'raw' or '') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
339 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
340 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
341 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
342 slicingdata = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
343 ([0, 1, 2, 3, 55, 56, 58, 59, 60], [[0, 1], [2], [58], [59, 60]], 10), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
344 ([0, 1, 2, 3, 55, 56, 58, 59, 60], [[0, 1], [2], [58], [59, 60]], 10), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
345 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
346 [-1, 0, 1, 2, 3, 55, 56, 58, 59, 60], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
347 [[-1, 0, 1], [2], [58], [59, 60]], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
348 10, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
349 ), |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
350 ] |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
351 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
352 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
353 def slicingtest(rlog): |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
354 oldmin = rlog._srmingapsize |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
355 try: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
356 # the test revlog is small, we remove the floor under which we |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
357 # slicing is diregarded. |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
358 rlog._srmingapsize = 0 |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
359 for item in slicingdata: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
360 chain, expected, target = item |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
361 result = deltas.slicechunk(rlog, chain, targetsize=target) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
362 result = list(result) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
363 if result != expected: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
364 print('slicing differ:') |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
365 print(' chain: %s' % chain) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
366 print(' target: %s' % target) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
367 print(' expected: %s' % expected) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
368 print(' result: %s' % result) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
369 finally: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
370 rlog._srmingapsize = oldmin |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
371 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
372 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
373 def md5sum(s): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
374 return hashlib.md5(s).digest() |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
375 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
376 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
377 def _maketext(*coord): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
378 """create piece of text according to range of integers |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
379 |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
380 The test returned use a md5sum of the integer to make it less |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
381 compressible""" |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
382 pieces = [] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
383 for start, size in coord: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
384 num = range(start, start + size) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
385 p = [md5sum(b'%d' % r) for r in num] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
386 pieces.append(b'\n'.join(p)) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
387 return b'\n'.join(pieces) + b'\n' |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
388 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
389 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
390 data = [ |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
391 _maketext((0, 120), (456, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
392 _maketext((0, 120), (345, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
393 _maketext((0, 120), (734, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
394 _maketext((0, 120), (734, 60), (923, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
395 _maketext((0, 120), (734, 60), (234, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
396 _maketext((0, 120), (734, 60), (564, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
397 _maketext((0, 120), (734, 60), (361, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
398 _maketext((0, 120), (734, 60), (489, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
399 _maketext((0, 120), (123, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
400 _maketext((0, 120), (145, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
401 _maketext((0, 120), (104, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
402 _maketext((0, 120), (430, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
403 _maketext((0, 120), (430, 60), (923, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
404 _maketext((0, 120), (430, 60), (234, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
405 _maketext((0, 120), (430, 60), (564, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
406 _maketext((0, 120), (430, 60), (361, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
407 _maketext((0, 120), (430, 60), (489, 45)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
408 _maketext((0, 120), (249, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
409 _maketext((0, 120), (832, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
410 _maketext((0, 120), (891, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
411 _maketext((0, 120), (543, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
412 _maketext((0, 120), (120, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
413 _maketext((0, 120), (60, 60), (768, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
414 _maketext((0, 120), (60, 60), (260, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
415 _maketext((0, 120), (60, 60), (450, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
416 _maketext((0, 120), (60, 60), (361, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
417 _maketext((0, 120), (60, 60), (886, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
418 _maketext((0, 120), (60, 60), (116, 30)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
419 _maketext((0, 120), (60, 60), (567, 30), (629, 40)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
420 _maketext((0, 120), (60, 60), (569, 30), (745, 40)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
421 _maketext((0, 120), (60, 60), (777, 30), (700, 40)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
422 _maketext((0, 120), (60, 60), (618, 30), (398, 40), (158, 10)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
423 ] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
424 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
425 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
426 def makesnapshot(tr): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
427 rl = newrevlog(name=b'_snaprevlog3.i', recreate=True) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
428 for i in data: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
429 appendrev(rl, i, tr) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
430 return rl |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
431 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
432 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
433 snapshots = [-1, 0, 6, 8, 11, 17, 19, 21, 25, 30] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
434 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
435 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
436 def issnapshottest(rlog): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
437 result = [] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
438 if rlog.issnapshot(-1): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
439 result.append(-1) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
440 for rev in rlog: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
441 if rlog.issnapshot(rev): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
442 result.append(rev) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
443 if snapshots != result: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
444 print('snapshot differ:') |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
445 print(' expected: %s' % snapshots) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
446 print(' got: %s' % result) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
447 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
448 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
449 snapshotmapall = {0: [6, 8, 11, 17, 19, 25], 8: [21], -1: [0, 30]} |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
450 snapshotmap15 = {0: [17, 19, 25], 8: [21], -1: [30]} |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
451 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
452 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
453 def findsnapshottest(rlog): |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
454 resultall = collections.defaultdict(list) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
455 deltas._findsnapshots(rlog, resultall, 0) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
456 resultall = dict(resultall.items()) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
457 if resultall != snapshotmapall: |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
458 print('snapshot map differ:') |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
459 print(' expected: %s' % snapshotmapall) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
460 print(' got: %s' % resultall) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
461 result15 = collections.defaultdict(list) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
462 deltas._findsnapshots(rlog, result15, 15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
463 result15 = dict(result15.items()) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
464 if result15 != snapshotmap15: |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
465 print('snapshot map differ:') |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
466 print(' expected: %s' % snapshotmap15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
467 print(' got: %s' % result15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
468 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
469 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
470 def maintest(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
471 with newtransaction() as tr: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
472 rl = newrevlog(recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
473 expected = writecases(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
474 checkrevlog(rl, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
475 print('local test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
476 # Copy via revlog.addgroup |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
477 rl1 = addgroupcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
478 checkrevlog(rl1, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
479 rl2 = addgroupcopy(rl, tr, optimaldelta=False) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
480 checkrevlog(rl2, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
481 print('addgroupcopy test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
482 # Copy via revlog.clone |
37896
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
483 rl3 = newrevlog(name=b'_destrevlog3.i', recreate=True) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
484 rl.clone(tr, rl3) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
485 checkrevlog(rl3, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
486 print('clone test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
487 # Copy via low-level revlog._addrevision |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
488 rl4 = lowlevelcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
489 checkrevlog(rl4, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
490 print('lowlevelcopy test passed') |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
491 slicingtest(rl) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
492 print('slicing test passed') |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
493 rl5 = makesnapshot(tr) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
494 issnapshottest(rl5) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
495 print('issnapshot test passed') |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
496 findsnapshottest(rl5) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
497 print('findsnapshot test passed') |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
498 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
499 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
500 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
501 maintest() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
502 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
503 abort('crashed: %s' % ex) |