Replace test_fixup_256 with a regression test for the Node256 fixupMaxVersion false-Commit bug #90
@@ -223,6 +223,9 @@ def test_merge_child_node48():
|
||||
|
||||
|
||||
def test_fixup_256():
|
||||
# All children are written at the same version, so this test passes even
|
||||
|
|
||||
# if fixupMaxVersion only considers some of them. See
|
||||
# test_fixup_256_heterogeneous_versions for that case.
|
||||
with DebugConflictSet() as cs:
|
||||
cs.addWrites(0, write(bytes([1])))
|
||||
for i in range(256):
|
||||
@@ -231,6 +234,20 @@ def test_fixup_256():
|
||||
cs.check(read(0, bytes([1]), bytes([2])))
|
||||
|
||||
|
||||
def test_fixup_256_heterogeneous_versions():
|
||||
# Regression test for issue #89: recomputing the maxVersion of a Node256
|
||||
# must consider all of its children, not just those with an index < 16.
|
||||
# Here the highest-version child ("\x10\x50") has an index >= 16, and the
|
||||
# range write ends at the Node256, which erases that child from the range
|
||||
# and recomputes the Node256's maxVersion.
|
||||
with DebugConflictSet() as cs:
|
||||
for i in range(256):
|
||||
cs.addWrites(1, write(bytes([0x10, i])))
|
||||
cs.addWrites(10, write(bytes([0x10, 0x50])))
|
||||
cs.addWrites(11, write(bytes([0x05]), bytes([0x10])))
|
||||
assert cs.check(read(5, bytes([0x10, 0x50]))) == [Result.CONFLICT]
|
||||
|
||||
|
||||
def test_large_removal_buffer():
|
||||
with DebugConflictSet() as cs:
|
||||
for i in range(1000):
|
||||
|
||||
Reference in new issue
Block a user
Just remove this test