Commit 1118ba3a authored by Kirill Smelkov's avatar Kirill Smelkov

test/gen_testdata: Retrieve object keys in predictable order independent of python version

gen_testdata.py picks up root keys randomly and shuffles extension dict
keys also randomly. But even with predictable PRNG if the input to e.g.
rand.choice is different, the result will be different as well.

So far we were lucky: we were running gen_testdata.py only via py2 and
the order of retrieved root keys was - by chance - the same each time.
That's why generated testdata databases were the same after each
gen_testdata.py run. But even on py2 there is no such guaranty and when
runnning gen_testdata.py via py3 the order of keys is really different:

    $ python2
    Python 2.7.18 (default, Jul 14 2021, 08:11:37)
    [GCC 10.2.1 20210110] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> d = {}
    >>> d['a'] = 1
    >>> d['b'] = 2
    >>> d['c'] = 3
    >>> d.keys()
    ['a', 'c', 'b']

    $ python3
    Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> d = {}
    >>> d['a'] = 1
    >>> d['b'] = 2
    >>> d['c'] = 3
    >>> list(d.keys())
    ['a', 'b', 'c']

So let's prepare for py3 generation beforehand by making sure that
keys input to PRNG is the same be it py2 or py3, thus, giving a chance
for generated py2/py3 databases to be really close to each other.

Since here we change the order of keys that are feed to PRNG, generated
test databases are shuffled a bit.
parent 667a0088
......@@ -105,6 +105,12 @@ class Object(Persistent):
rand = random.Random()
del random
# keys returns list of obj.keys() in predictable order independent of python version.
def keys(obj):
vk = list(obj.keys())
vk.sort()
return vk
# prepare extension dictionary for subject
alnum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def ext4subj(subj):
......@@ -120,7 +126,7 @@ def ext4subj(subj):
d[xcookie] = cookie
# shufle extension dict randomly - to likely trigger different ordering on save
keyv = list(d.keys())
keyv = keys(d)
rand.shuffle(keyv)
ext = {}
for key in keyv:
......@@ -243,13 +249,13 @@ def _gen_testdb(outfs_path, zext):
# create a cyclic object -> object reference
# pretty=zpickledis used not to handle this well because in ZODB pickle the reference
# referes to referred type by GET that is prepared by PUT in class part of the pickle.
name = rand.choice(list(root.keys()))
name = rand.choice(keys(root))
obj = root[name]
obj.value = obj
commit(u"user", u"cyclic reference", ext("cycle"))
# delete an object
name = rand.choice(list(root.keys()))
name = rand.choice(keys(root))
obj = root[name]
root[name] = Object("%s%i*" % (name, i))
# NOTE user/ext are kept empty on purpose - to also test this case
......
......@@ -159,14 +159,14 @@ extension
57: u SETITEMS (MARK at 5)
58: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 41 sha1:7108c96ccb9cbeaab1164d533174c300e51309f9
obj 0000000000000004 41 sha1:08190c422b49eb59f44043860a25e3916965aa35
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
......@@ -177,9 +177,9 @@ obj 0000000000000007 41 sha1:7108c96ccb9cbeaab1164d533174c300e51309f9
txn 0285cbacbbbbbc00 "p"
user ""
description "predelete 4"
description "predelete 7"
extension ""
obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
obj 0000000000000000 213 sha1:9eba67326a7fd2393c39966bfc7d7be2a8035dfa
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -201,13 +201,13 @@ obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
......@@ -241,14 +241,14 @@ obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 32 sha1:936674657cf846998d27356363832827fa612092
obj 0000000000000008 32 sha1:c0517df3bfc49dcda73c2797fb957c92bc651888
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b0*'
24: U SHORT_BINSTRING 'c0*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
......@@ -299,7 +299,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:c37e1d2350c8fc4e18cdbc53b432dba50e5196ba
obj 0000000000000004 33 sha1:c37e1d2350c8fc4e18cdbc53b432dba50e5196ba
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -386,7 +386,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 33 sha1:90b0ffa657df9de708913a2cbbd454126fd9de15
obj 0000000000000008 33 sha1:90b0ffa657df9de708913a2cbbd454126fd9de15
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -473,7 +473,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 33 sha1:0cd3f4b725517a5371429e2ef2f56ea54fe405fb
obj 0000000000000008 33 sha1:0cd3f4b725517a5371429e2ef2f56ea54fe405fb
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -502,7 +502,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 33 sha1:13e366fb1d15d36a62099e6b835638407718229f
obj 0000000000000008 33 sha1:13e366fb1d15d36a62099e6b835638407718229f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -589,7 +589,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 34 sha1:88ab1add11652101077535c03b04e83fe4ddb88b
obj 0000000000000008 34 sha1:88ab1add11652101077535c03b04e83fe4ddb88b
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1031,14 +1031,14 @@ extension
57: u SETITEMS (MARK at 5)
58: . STOP
highest protocol among opcodes = 2
obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
......@@ -1049,9 +1049,9 @@ obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
txn 0285cbad858bf2e6 " "
user ""
description "predelete 3"
description "predelete 1"
extension ""
obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
obj 0000000000000000 213 sha1:39b8d9a34d973ab8bef66f1e12eb0acde72ce9a3
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -1073,13 +1073,13 @@ obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
......@@ -1097,13 +1097,13 @@ obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
170: \x86 TUPLE2
171: Q BINPERSID
172: U SHORT_BINSTRING 'g'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
185: q BINPUT 11
187: h BINGET 6
189: \x86 TUPLE2
190: Q BINPERSID
191: U SHORT_BINSTRING 'f'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x01'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
204: q BINPUT 12
206: h BINGET 6
208: \x86 TUPLE2
......@@ -1113,14 +1113,14 @@ obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 32 sha1:38aaea7061f311a5ff41e144ea56df2c8f66435c
obj 0000000000000009 32 sha1:9bf07787029e3c7e95d4dd0058537926aed033d1
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1*'
24: U SHORT_BINSTRING 'f1*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
......@@ -1138,11 +1138,11 @@ extension
17: U SHORT_BINSTRING 'XVOTI'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (delete 3)'
39: U SHORT_BINSTRING 'zodb/py2 (delete 1)'
60: u SETITEMS (MARK at 5)
61: . STOP
highest protocol among opcodes = 2
obj 0000000000000003 delete
obj 0000000000000001 delete
txn 0285cbadc740db19 " "
user "user2.0"
......@@ -1160,7 +1160,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 33 sha1:7b5599bdbf192e2d33e2597b52c8a72a751ddd13
obj 0000000000000009 33 sha1:7b5599bdbf192e2d33e2597b52c8a72a751ddd13
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1218,7 +1218,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
obj 0000000000000003 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1247,7 +1247,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 33 sha1:e6236b8f0a4a2201c0c2375a8f360905108eff2d
obj 0000000000000003 33 sha1:e6236b8f0a4a2201c0c2375a8f360905108eff2d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1334,7 +1334,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 33 sha1:2a3221e27ac8fbf15ab75b38a9a65e727d237355
obj 0000000000000004 33 sha1:2a3221e27ac8fbf15ab75b38a9a65e727d237355
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1363,7 +1363,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 33 sha1:408fddc8c7255c5e2ed94c239ac57c211ab94b6d
obj 0000000000000003 33 sha1:408fddc8c7255c5e2ed94c239ac57c211ab94b6d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1450,7 +1450,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 34 sha1:6696fa0434fadb645687c74c8561f0f55fce1fd6
obj 0000000000000008 34 sha1:6696fa0434fadb645687c74c8561f0f55fce1fd6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1508,7 +1508,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 34 sha1:db269b90a0df33aa7d411c672f93fb7d86bbdb87
obj 0000000000000003 34 sha1:db269b90a0df33aa7d411c672f93fb7d86bbdb87
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1566,7 +1566,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000007 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
obj 0000000000000008 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1624,7 +1624,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000001 34 sha1:e934438dede49d14ee2d1d2afa8fa18774547764
obj 0000000000000009 34 sha1:e934438dede49d14ee2d1d2afa8fa18774547764
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1653,7 +1653,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:9961f82b3f01204f80efbb3b62a2b98d9d3202fa
obj 0000000000000004 34 sha1:9961f82b3f01204f80efbb3b62a2b98d9d3202fa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1740,7 +1740,7 @@ extension
53: u SETITEMS (MARK at 5)
54: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 34 sha1:14b17f0e944432782cb270205b2e96948d112619
obj 0000000000000004 34 sha1:14b17f0e944432782cb270205b2e96948d112619
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1921,14 +1921,14 @@ extension
57: u SETITEMS (MARK at 5)
58: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
......@@ -1939,9 +1939,9 @@ obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
txn 0285cbae4aaaab80 " "
user ""
description "predelete 6"
description "predelete 2"
extension ""
obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
obj 0000000000000000 213 sha1:418df67fa7f268f2f4e66392e9cdf19b2029b113
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -1963,37 +1963,37 @@ obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\n'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
152: Q BINPERSID
153: U SHORT_BINSTRING 'd'
156: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
156: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\n'
166: q BINPUT 10
168: h BINGET 6
170: \x86 TUPLE2
171: Q BINPERSID
172: U SHORT_BINSTRING 'g'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
185: q BINPUT 11
187: h BINGET 6
189: \x86 TUPLE2
190: Q BINPERSID
191: U SHORT_BINSTRING 'f'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x01'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
204: q BINPUT 12
206: h BINGET 6
208: \x86 TUPLE2
......@@ -2003,14 +2003,14 @@ obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
212: . STOP
highest protocol among opcodes = 2
obj 000000000000000a 32 sha1:35a18f6ce20260014618957689b770b74d7b3c78
obj 000000000000000a 32 sha1:c9a667705323348a209f8f3b22c1977dbcd3f7e9
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2*'
24: U SHORT_BINSTRING 'd2*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
......@@ -2028,9 +2028,9 @@ extension
17: U SHORT_BINSTRING '4WFSD'
24: U SHORT_BINSTRING 'x-generator'
37: q BINPUT 2
39: U SHORT_BINSTRING 'zodb/py2 (delete 6)'
39: U SHORT_BINSTRING 'zodb/py2 (delete 2)'
60: u SETITEMS (MARK at 5)
61: . STOP
highest protocol among opcodes = 2
obj 0000000000000006 delete
obj 0000000000000002 delete
......@@ -87,14 +87,14 @@ txn 0285cbacb70a3db3 "p"
user "user"
description "cyclic reference"
extension ""
obj 0000000000000007 41 sha1:7108c96ccb9cbeaab1164d533174c300e51309f9
obj 0000000000000004 41 sha1:08190c422b49eb59f44043860a25e3916965aa35
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
......@@ -105,9 +105,9 @@ obj 0000000000000007 41 sha1:7108c96ccb9cbeaab1164d533174c300e51309f9
txn 0285cbacbbbbbc00 "p"
user ""
description "predelete 4"
description "predelete 7"
extension ""
obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
obj 0000000000000000 213 sha1:9eba67326a7fd2393c39966bfc7d7be2a8035dfa
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -129,13 +129,13 @@ obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
......@@ -169,14 +169,14 @@ obj 0000000000000000 213 sha1:a6e70638fafd4619841032356ae93a4da7b539c5
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000008 32 sha1:936674657cf846998d27356363832827fa612092
obj 0000000000000008 32 sha1:c0517df3bfc49dcda73c2797fb957c92bc651888
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'b0*'
24: U SHORT_BINSTRING 'c0*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
......@@ -203,7 +203,7 @@ txn 0285cbad06d3a0cc " "
user "user1.1"
description "step 1.1"
extension ""
obj 0000000000000008 33 sha1:c37e1d2350c8fc4e18cdbc53b432dba50e5196ba
obj 0000000000000004 33 sha1:c37e1d2350c8fc4e18cdbc53b432dba50e5196ba
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -254,7 +254,7 @@ txn 0285cbad14e81bb3 " "
user "user1.4"
description "step 1.4"
extension ""
obj 0000000000000007 33 sha1:90b0ffa657df9de708913a2cbbd454126fd9de15
obj 0000000000000008 33 sha1:90b0ffa657df9de708913a2cbbd454126fd9de15
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -305,7 +305,7 @@ txn 0285cbad22fc9699 " "
user "user1.7"
description "step 1.7"
extension ""
obj 0000000000000007 33 sha1:0cd3f4b725517a5371429e2ef2f56ea54fe405fb
obj 0000000000000008 33 sha1:0cd3f4b725517a5371429e2ef2f56ea54fe405fb
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -322,7 +322,7 @@ txn 0285cbad27ae14e6 " "
user "user1.8"
description "step 1.8"
extension ""
obj 0000000000000007 33 sha1:13e366fb1d15d36a62099e6b835638407718229f
obj 0000000000000008 33 sha1:13e366fb1d15d36a62099e6b835638407718229f
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -373,7 +373,7 @@ txn 0285cbad35c28fcc " "
user "user1.11"
description "step 1.11"
extension ""
obj 0000000000000007 34 sha1:88ab1add11652101077535c03b04e83fe4ddb88b
obj 0000000000000008 34 sha1:88ab1add11652101077535c03b04e83fe4ddb88b
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -623,14 +623,14 @@ txn 0285cbad80da7499 " "
user "user"
description "cyclic reference"
extension ""
obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
......@@ -641,9 +641,9 @@ obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
txn 0285cbad858bf2e6 " "
user ""
description "predelete 3"
description "predelete 1"
extension ""
obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
obj 0000000000000000 213 sha1:39b8d9a34d973ab8bef66f1e12eb0acde72ce9a3
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -665,13 +665,13 @@ obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
......@@ -689,13 +689,13 @@ obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
170: \x86 TUPLE2
171: Q BINPERSID
172: U SHORT_BINSTRING 'g'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
185: q BINPUT 11
187: h BINGET 6
189: \x86 TUPLE2
190: Q BINPERSID
191: U SHORT_BINSTRING 'f'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x01'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
204: q BINPUT 12
206: h BINGET 6
208: \x86 TUPLE2
......@@ -705,14 +705,14 @@ obj 0000000000000000 213 sha1:e278899979bad10d72962170790ea2a2f5865567
212: . STOP
highest protocol among opcodes = 2
obj 0000000000000009 32 sha1:38aaea7061f311a5ff41e144ea56df2c8f66435c
obj 0000000000000009 32 sha1:9bf07787029e3c7e95d4dd0058537926aed033d1
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'g1*'
24: U SHORT_BINSTRING 'f1*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
......@@ -722,13 +722,13 @@ txn 0285cbad8a3d7133 " "
user "root1\nYour\nRoyal\nMagesty' \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
description "delete 1\nalpha beta gamma'delta\"lambda\n\nqqq ..."
extension ""
obj 0000000000000003 delete
obj 0000000000000001 delete
txn 0285cbadc740db19 " "
user "user2.0"
description "step 2.0"
extension ""
obj 0000000000000001 33 sha1:7b5599bdbf192e2d33e2597b52c8a72a751ddd13
obj 0000000000000009 33 sha1:7b5599bdbf192e2d33e2597b52c8a72a751ddd13
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -762,7 +762,7 @@ txn 0285cbadd0a3d7b3 " "
user "user2.2"
description "step 2.2"
extension ""
obj 0000000000000009 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
obj 0000000000000003 33 sha1:71f1255a9751e0f223f079552e182cf26b27c0a6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -779,7 +779,7 @@ txn 0285cbadd5555600 " "
user "user2.3"
description "step 2.3"
extension ""
obj 0000000000000009 33 sha1:e6236b8f0a4a2201c0c2375a8f360905108eff2d
obj 0000000000000003 33 sha1:e6236b8f0a4a2201c0c2375a8f360905108eff2d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -830,7 +830,7 @@ txn 0285cbade369d0e6 " "
user "user2.6"
description "step 2.6"
extension ""
obj 0000000000000008 33 sha1:2a3221e27ac8fbf15ab75b38a9a65e727d237355
obj 0000000000000004 33 sha1:2a3221e27ac8fbf15ab75b38a9a65e727d237355
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -847,7 +847,7 @@ txn 0285cbade81b4f33 " "
user "user2.7"
description "step 2.7"
extension ""
obj 0000000000000009 33 sha1:408fddc8c7255c5e2ed94c239ac57c211ab94b6d
obj 0000000000000003 33 sha1:408fddc8c7255c5e2ed94c239ac57c211ab94b6d
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -898,7 +898,7 @@ txn 0285cbadf62fca19 " "
user "user2.10"
description "step 2.10"
extension ""
obj 0000000000000007 34 sha1:6696fa0434fadb645687c74c8561f0f55fce1fd6
obj 0000000000000008 34 sha1:6696fa0434fadb645687c74c8561f0f55fce1fd6
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -932,7 +932,7 @@ txn 0285cbadff92c6b3 " "
user "user2.12"
description "step 2.12"
extension ""
obj 0000000000000009 34 sha1:db269b90a0df33aa7d411c672f93fb7d86bbdb87
obj 0000000000000003 34 sha1:db269b90a0df33aa7d411c672f93fb7d86bbdb87
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -966,7 +966,7 @@ txn 0285cbae08f5c34c " "
user "user2.14"
description "step 2.14"
extension ""
obj 0000000000000007 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
obj 0000000000000008 34 sha1:c3eabecf360015b4b7555abc3a0dc0cea77fe7ed
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1000,7 +1000,7 @@ txn 0285cbae1258bfe6 " "
user "user2.16"
description "step 2.16"
extension ""
obj 0000000000000001 34 sha1:e934438dede49d14ee2d1d2afa8fa18774547764
obj 0000000000000009 34 sha1:e934438dede49d14ee2d1d2afa8fa18774547764
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1017,7 +1017,7 @@ txn 0285cbae170a3e33 " "
user "user2.17"
description "step 2.17"
extension ""
obj 0000000000000008 34 sha1:9961f82b3f01204f80efbb3b62a2b98d9d3202fa
obj 0000000000000004 34 sha1:9961f82b3f01204f80efbb3b62a2b98d9d3202fa
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1068,7 +1068,7 @@ txn 0285cbae251eb919 " "
user "user2.20"
description "step 2.20"
extension ""
obj 0000000000000008 34 sha1:14b17f0e944432782cb270205b2e96948d112619
obj 0000000000000004 34 sha1:14b17f0e944432782cb270205b2e96948d112619
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
......@@ -1165,14 +1165,14 @@ txn 0285cbae45f92d33 " "
user "user"
description "cyclic reference"
extension ""
obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
obj 0000000000000002 41 sha1:1e2e3ac81badec749c2082a08d205c06c6bb5119
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
24: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
34: q BINPUT 2
36: h BINGET 1
38: \x86 TUPLE2
......@@ -1183,9 +1183,9 @@ obj 0000000000000006 41 sha1:863d327e4b795efff7dff75bb73c0d20ea3981aa
txn 0285cbae4aaaab80 " "
user ""
description "predelete 6"
description "predelete 2"
extension ""
obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
obj 0000000000000000 213 sha1:418df67fa7f268f2f4e66392e9cdf19b2029b113
0: \x80 PROTO 2
2: c GLOBAL 'persistent.mapping PersistentMapping'
40: q BINPUT 1
......@@ -1207,37 +1207,37 @@ obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
94: \x86 TUPLE2
95: Q BINPERSID
96: U SHORT_BINSTRING 'c'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x07'
99: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
109: q BINPUT 7
111: h BINGET 6
113: \x86 TUPLE2
114: Q BINPERSID
115: U SHORT_BINSTRING 'b'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x08'
118: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x04'
128: q BINPUT 8
130: h BINGET 6
132: \x86 TUPLE2
133: Q BINPERSID
134: U SHORT_BINSTRING 'e'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\n'
137: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x06'
147: q BINPUT 9
149: h BINGET 6
151: \x86 TUPLE2
152: Q BINPERSID
153: U SHORT_BINSTRING 'd'
156: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x02'
156: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\n'
166: q BINPUT 10
168: h BINGET 6
170: \x86 TUPLE2
171: Q BINPERSID
172: U SHORT_BINSTRING 'g'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
175: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x03'
185: q BINPUT 11
187: h BINGET 6
189: \x86 TUPLE2
190: Q BINPERSID
191: U SHORT_BINSTRING 'f'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\x01'
194: U SHORT_BINSTRING '\x00\x00\x00\x00\x00\x00\x00\t'
204: q BINPUT 12
206: h BINGET 6
208: \x86 TUPLE2
......@@ -1247,14 +1247,14 @@ obj 0000000000000000 213 sha1:b44d53e1b6cc465c4ab3ba2a3384a80fbba4eb8a
212: . STOP
highest protocol among opcodes = 2
obj 000000000000000a 32 sha1:35a18f6ce20260014618957689b770b74d7b3c78
obj 000000000000000a 32 sha1:c9a667705323348a209f8f3b22c1977dbcd3f7e9
0: \x80 PROTO 2
2: c GLOBAL '__main__ Object'
19: q BINPUT 1
21: . STOP
highest protocol among opcodes = 2
22: \x80 PROTO 2
24: U SHORT_BINSTRING 'e2*'
24: U SHORT_BINSTRING 'd2*'
29: q BINPUT 2
31: . STOP
highest protocol among opcodes = 2
......@@ -1264,5 +1264,5 @@ txn 0285cbae4f5c29cc " "
user "root2\nYour\nRoyal\nMagesty' \x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
description "delete 2\nalpha beta gamma'delta\"lambda\n\nqqq ..."
extension ""
obj 0000000000000006 delete
obj 0000000000000002 delete
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment