Mercurial > hg
annotate tests/test-revlog-raw.py @ 47420:e7ad2490d623
transaction: clarify a conditionnal about version check
Let us move the short branch early.
Differential Revision: https://phab.mercurial-scm.org/D10844
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 09 Jun 2021 01:13:09 +0200 |
parents | 906a7bcaac86 |
children | c514936d92b4 |
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 ( |
47072
4c041c71ec01
revlog: introduce an explicit tracking of what the revlog is about
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47012
diff
changeset
|
17 constants, |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
18 deltas, |
42732
6d61be152c55
flagutil: move addflagprocessor to the new module (API)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41365
diff
changeset
|
19 flagutil, |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
20 ) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
21 |
47214
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
22 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
23 class _NoTransaction(object): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
24 """transaction like object to update the nodemap outside a transaction""" |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
25 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
26 def __init__(self): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
27 self._postclose = {} |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
28 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
29 def addpostclose(self, callback_id, callback_func): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
30 self._postclose[callback_id] = callback_func |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
31 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
32 def registertmp(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
33 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
34 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
35 def addbackup(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
36 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
37 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
38 def add(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
39 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
40 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
41 def addabort(self, *args, **kwargs): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
42 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
43 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
44 def _report(self, *args): |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
45 pass |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
46 |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
47 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
48 # 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
|
49 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
|
50 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
51 # 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
|
52 tvfs.options = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
53 b'generaldelta': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
54 b'revlogv1': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
55 b'sparse-revlog': True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
56 } |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
57 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
58 # 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
|
59 # "storedeltachains". |
39232
0a5b20c107a6
repository: remove storedeltachains from ifilestorage
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37896
diff
changeset
|
60 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
|
61 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
62 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
63 def abort(msg): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
64 print('abort: %s' % msg) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
65 # 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
|
66 sys.exit() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
67 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
68 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
69 # Register a revlog processor for flag EXTSTORED. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
70 # |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
71 # 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
|
72 # 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
|
73 # deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
74 _extheader = b'E\n' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
75 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
76 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
77 def readprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
78 # 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
|
79 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
|
80 return text, True |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
81 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
82 |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Raphaël Gomès <rgomes@octobus.net>
parents:
46113
diff
changeset
|
83 def writeprocessor(self, text): |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
84 # 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
|
85 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
|
86 return rawtext, False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
87 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
88 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
89 def rawprocessor(self, rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
90 # 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
|
91 # can be used to verify hash. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
92 return False |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
93 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
94 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
95 flagutil.addflagprocessor( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
96 revlog.REVIDX_EXTSTORED, (readprocessor, writeprocessor, rawprocessor) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
97 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
98 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
99 # Utilities about reading and appending revlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
100 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
101 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
102 def newtransaction(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
103 # A transaction is required to write revlogs |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
104 report = lambda msg: None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
105 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
|
106 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
107 |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
108 def newrevlog(name=b'_testrevlog', recreate=False): |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
109 if recreate: |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
110 tvfs.tryunlink(name + b'.i') |
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
111 target = (constants.KIND_OTHER, b'test') |
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
112 rlog = revlog.revlog(tvfs, target=target, radix=name) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
113 return rlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
114 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
115 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
116 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
|
117 """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
|
118 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
|
119 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
|
120 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
121 nextrev = len(rlog) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
122 p1 = rlog.node(nextrev - 1) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
123 p2 = rlog.nullid |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
124 if isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
125 flags = revlog.REVIDX_EXTSTORED |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
126 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
127 flags = revlog.REVIDX_DEFAULT_FLAGS |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
128 # 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
|
129 rlog._storedeltachains = isdelta |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
130 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
131 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
|
132 return nextrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
133 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
134 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
|
135 finally: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
136 # 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
|
137 rlog._storedeltachains = True |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
138 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
139 |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
140 def addgroupcopy(rlog, tr, destname=b'_destrevlog', optimaldelta=True): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
141 """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
|
142 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
143 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
|
144 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
|
145 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
146 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
|
147 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
|
148 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
|
149 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
150 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
|
151 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
|
152 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
153 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
154 class dummychangegroup(object): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
155 @staticmethod |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
156 def deltachunk(pnode): |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
157 pnode = pnode or rlog.nullid |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
158 parentrev = rlog.rev(pnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
159 r = parentrev + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
160 if r >= len(rlog): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
161 return {} |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
162 if optimaldelta: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
163 deltaparent = parentrev |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
164 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
165 # suboptimal deltaparent |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
166 deltaparent = min(0, parentrev) |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
167 if not rlog.candelta(deltaparent, r): |
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
168 deltaparent = -1 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
169 return { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
170 b'node': rlog.node(r), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
171 b'p1': pnode, |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
172 b'p2': rlog.nullid, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
173 b'cs': rlog.node(rlog.linkrev(r)), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
174 b'flags': rlog.flags(r), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
175 b'deltabase': rlog.node(deltaparent), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
176 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
|
177 b'sidedata': rlog.sidedata(r), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
178 } |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
179 |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
180 def deltaiter(self): |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
181 chain = None |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
182 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
|
183 node = chunkdata[b'node'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
184 p1 = chunkdata[b'p1'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
185 p2 = chunkdata[b'p2'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
186 cs = chunkdata[b'cs'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
187 deltabase = chunkdata[b'deltabase'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
188 delta = chunkdata[b'delta'] |
03a09579c854
tests: port test-revlog-raw.py to Python 3
Augie Fackler <augie@google.com>
parents:
36744
diff
changeset
|
189 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
|
190 sidedata = chunkdata[b'sidedata'] |
34148
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
191 |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
192 chain = node |
c8b6ed51386b
changegroup: remove changegroup dependency from revlog.addgroup
Durham Goode <durham@fb.com>
parents:
33625
diff
changeset
|
193 |
46711
a41565bef69f
changegroup: add v4 changegroup for revlog v2 exchange
Raphaël Gomès <rgomes@octobus.net>
parents:
46709
diff
changeset
|
194 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
|
195 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
196 def linkmap(lnode): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
197 return rlog.rev(lnode) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
198 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
199 dlog = newrevlog(destname, recreate=True) |
34291
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
200 dummydeltas = dummychangegroup().deltaiter() |
1db9abf407c5
revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com>
parents:
34148
diff
changeset
|
201 dlog.addgroup(dummydeltas, linkmap, tr) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
202 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
203 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
204 |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
205 def lowlevelcopy(rlog, tr, destname=b'_destrevlog'): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
206 """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
|
207 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
208 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
|
209 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
210 dlog = newrevlog(destname, recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
211 for r in rlog: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
212 p1 = rlog.node(r - 1) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46711
diff
changeset
|
213 p2 = rlog.nullid |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
214 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
|
215 text = rlog.rawdata(r) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
216 cachedelta = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
217 else: |
36744
33275ab5e837
revlog: do not use delta for lfs revisions
Jun Wu <quark@fb.com>
parents:
35638
diff
changeset
|
218 # deltaparent cannot have EXTSTORED flag. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
219 deltaparent = max( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
220 [-1] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
221 + [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
222 p |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
223 for p in range(r) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
224 if rlog.flags(p) & revlog.REVIDX_EXTSTORED == 0 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
225 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
226 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
227 text = None |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
228 cachedelta = (deltaparent, rlog.revdiff(deltaparent, r)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
229 flags = rlog.flags(r) |
47214
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
230 with dlog._writing(_NoTransaction()): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
231 dlog._addrevision( |
47214
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
232 rlog.node(r), |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
233 text, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
234 tr, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
235 r, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
236 p1, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
237 p2, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
238 flags, |
906a7bcaac86
revlog: introduce a mandatory `_writing` context to update revlog content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47150
diff
changeset
|
239 cachedelta, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
240 ) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
241 return dlog |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
242 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
243 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
244 # Utilities to generate revisions for testing |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
245 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
246 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
247 def genbits(n): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
248 """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
|
249 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
|
250 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
251 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
|
252 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
|
253 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
|
254 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
255 m = 2 ** n |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
256 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
257 # 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
|
258 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
|
259 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
|
260 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
261 # 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
|
262 # 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
|
263 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
264 # 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
|
265 a = [0] * m |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
266 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
267 # Iterate from 0. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
268 x = 0 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
269 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
270 for i in range(m * m): |
31763
8a0c47982ade
test-revlog-raw: fix "genbits" implementation
Jun Wu <quark@fb.com>
parents:
31748
diff
changeset
|
271 x = reversegray[x] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
272 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
|
273 assert a[x] < m |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
274 a[x] += 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
275 x = y |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
276 yield x |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
277 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
278 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
279 def gentext(rev): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
280 '''Given a revision number, generate dummy text''' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
281 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
|
282 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
283 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
284 def writecases(rlog, tr): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
285 """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
|
286 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
287 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
|
288 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
289 - 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
|
290 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
|
291 - 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
|
292 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
|
293 interacted with revlog deltas. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
294 - Is its text empty? (isempty) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
295 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
|
296 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
|
297 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
|
298 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
299 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
|
300 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
|
301 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
302 len(set( |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
303 (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
|
304 for r in range(len(rlog) - 1) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
305 )) is 64. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
306 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
307 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
|
308 mentioned above. |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
309 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
310 Return expected [(text, rawtext)]. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
44452
diff
changeset
|
311 """ |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
312 result = [] |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
313 for i, x in enumerate(genbits(3)): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
314 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
|
315 if isempty: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
316 text = b'' |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
317 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
318 text = gentext(i) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
319 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
|
320 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
321 # Verify text, rawtext, and rawsize |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
322 if isext: |
46709
3d740058b467
sidedata: move to new sidedata storage in revlogv2
Raphaël Gomès <rgomes@octobus.net>
parents:
46113
diff
changeset
|
323 rawtext = writeprocessor(None, text)[0] |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
324 else: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
325 rawtext = text |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
326 if rlog.rawsize(rev) != len(rawtext): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
327 abort('rev %d: wrong rawsize' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
328 if rlog.revision(rev, raw=False) != text: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
329 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
|
330 if rlog.rawdata(rev) != rawtext: |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
331 abort('rev %d: wrong rawtext' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
332 result.append((text, rawtext)) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
333 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
334 # 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
|
335 # 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
|
336 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
|
337 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
|
338 if bool(rlog.flags(rev)) != isext: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
339 abort('rev %d: isext is ineffective' % rev) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
340 return result |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
341 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
342 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
343 # Main test and checking |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
344 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
345 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
346 def checkrevlog(rlog, expected): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
347 '''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
|
348 # 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
|
349 # depending on revlog caching (see revlog._cache). |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
350 for r0 in range(len(rlog) - 1): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
351 r1 = r0 + 1 |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
352 for revorder in [[r0, r1], [r1, r0]]: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
353 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
|
354 nlog = newrevlog() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
355 for rev in revorder: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
356 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
|
357 if raw: |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
358 t = nlog.rawdata(rev) |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
359 else: |
740450677221
rawdata: update callers in test-revlog-raw
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42732
diff
changeset
|
360 t = nlog.revision(rev) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
361 if t != expected[rev][int(raw)]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
362 abort( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
363 'rev %d: corrupted %stext' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
364 % (rev, raw and 'raw' or '') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
365 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
366 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
367 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
368 slicingdata = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
369 ([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
|
370 ([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
|
371 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
372 [-1, 0, 1, 2, 3, 55, 56, 58, 59, 60], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
373 [[-1, 0, 1], [2], [58], [59, 60]], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
374 10, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
375 ), |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
376 ] |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
377 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
378 |
41034
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
379 def slicingtest(rlog): |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
380 oldmin = rlog._srmingapsize |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
381 try: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
382 # 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
|
383 # slicing is diregarded. |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
384 rlog._srmingapsize = 0 |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
385 for item in slicingdata: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
386 chain, expected, target = item |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
387 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
|
388 result = list(result) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
389 if result != expected: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
390 print('slicing differ:') |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
391 print(' chain: %s' % chain) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
392 print(' target: %s' % target) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
393 print(' expected: %s' % expected) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
394 print(' result: %s' % result) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
395 finally: |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
396 rlog._srmingapsize = oldmin |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
397 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
398 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
399 def md5sum(s): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
400 return hashlib.md5(s).digest() |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
401 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
402 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
403 def _maketext(*coord): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
404 """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
|
405 |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
406 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
|
407 compressible""" |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
408 pieces = [] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
409 for start, size in coord: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
410 num = range(start, start + size) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
411 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
|
412 pieces.append(b'\n'.join(p)) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
413 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
|
414 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
415 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
416 data = [ |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
417 _maketext((0, 120), (456, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
418 _maketext((0, 120), (345, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
419 _maketext((0, 120), (734, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
420 _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
|
421 _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
|
422 _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
|
423 _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
|
424 _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
|
425 _maketext((0, 120), (123, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
426 _maketext((0, 120), (145, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
427 _maketext((0, 120), (104, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
428 _maketext((0, 120), (430, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
429 _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
|
430 _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
|
431 _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
|
432 _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
|
433 _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
|
434 _maketext((0, 120), (249, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
435 _maketext((0, 120), (832, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
436 _maketext((0, 120), (891, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
437 _maketext((0, 120), (543, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
438 _maketext((0, 120), (120, 60)), |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
439 _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
|
440 _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
|
441 _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
|
442 _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
|
443 _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
|
444 _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
|
445 _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
|
446 _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
|
447 _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
|
448 _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
|
449 ] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
450 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
451 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
452 def makesnapshot(tr): |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
453 rl = newrevlog(name=b'_snaprevlog3', recreate=True) |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
454 for i in data: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
455 appendrev(rl, i, tr) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
456 return rl |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
457 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
458 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
459 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
|
460 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
461 |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
462 def issnapshottest(rlog): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
463 result = [] |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
464 if rlog.issnapshot(-1): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
465 result.append(-1) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
466 for rev in rlog: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
467 if rlog.issnapshot(rev): |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
468 result.append(rev) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
469 if snapshots != result: |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
470 print('snapshot differ:') |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
471 print(' expected: %s' % snapshots) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
472 print(' got: %s' % result) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
473 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
474 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
475 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
|
476 snapshotmap15 = {0: [17, 19, 25], 8: [21], -1: [30]} |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
477 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
478 |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
479 def findsnapshottest(rlog): |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
480 resultall = collections.defaultdict(list) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
481 deltas._findsnapshots(rlog, resultall, 0) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
482 resultall = dict(resultall.items()) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
483 if resultall != snapshotmapall: |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
484 print('snapshot map differ:') |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
485 print(' expected: %s' % snapshotmapall) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
486 print(' got: %s' % resultall) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
487 result15 = collections.defaultdict(list) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
488 deltas._findsnapshots(rlog, result15, 15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
489 result15 = dict(result15.items()) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
490 if result15 != snapshotmap15: |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
491 print('snapshot map differ:') |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
492 print(' expected: %s' % snapshotmap15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
493 print(' got: %s' % result15) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
494 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
495 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
496 def maintest(): |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
497 with newtransaction() as tr: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
498 rl = newrevlog(recreate=True) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
499 expected = writecases(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
500 checkrevlog(rl, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
501 print('local test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
502 # Copy via revlog.addgroup |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
503 rl1 = addgroupcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
504 checkrevlog(rl1, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
505 rl2 = addgroupcopy(rl, tr, optimaldelta=False) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
506 checkrevlog(rl2, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
507 print('addgroupcopy test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
508 # Copy via revlog.clone |
47150
8d3c2f9d4af7
revlog: use a "radix" to address revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47149
diff
changeset
|
509 rl3 = newrevlog(name=b'_destrevlog3', recreate=True) |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
510 rl.clone(tr, rl3) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
511 checkrevlog(rl3, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
512 print('clone test passed') |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
513 # Copy via low-level revlog._addrevision |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
514 rl4 = lowlevelcopy(rl, tr) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
515 checkrevlog(rl4, expected) |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
516 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
|
517 slicingtest(rl) |
cca12a31ede5
revlog: add some direct testing of the slicing logic
Boris Feld <boris.feld@octobus.net>
parents:
39232
diff
changeset
|
518 print('slicing test passed') |
41035
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
519 rl5 = makesnapshot(tr) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
520 issnapshottest(rl5) |
15f78383d3c8
revlog: add an explicit test for `issnapshot`
Boris Feld <boris.feld@octobus.net>
parents:
41034
diff
changeset
|
521 print('issnapshot test passed') |
41087
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
522 findsnapshottest(rl5) |
797a416a91bd
revlog: add test case for _findsnapshots
Boris Feld <boris.feld@octobus.net>
parents:
41035
diff
changeset
|
523 print('findsnapshot test passed') |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
524 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42988
diff
changeset
|
525 |
31748
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
526 try: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
527 maintest() |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
528 except Exception as ex: |
985de02b5b9d
revlog: add a stronger test for raw processing
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
529 abort('crashed: %s' % ex) |