Adds unit test for decoding of verifiable manifests

This commit is contained in:
benbierens 2024-06-14 10:11:33 +02:00
parent efee152e31
commit b50addf0cb
No known key found for this signature in database
GPG Key ID: 877D2C2E09A22F3A
2 changed files with 25 additions and 4 deletions

View File

@ -209,9 +209,6 @@ proc prepareDecodingData(
let
pos = indexToPos(encoded.steps, idx, step)
if encoded.ecK > pos:
continue
logScope:
cid = blk.cid
idx = idx
@ -220,7 +217,7 @@ proc prepareDecodingData(
empty = blk.isEmpty
cids[idx] = blk.cid
if idx >= encoded.rounded:
if idx >= encoded.rounded and pos >= encoded.ecK:
trace "Retrieved parity block"
shallowCopy(parityData[pos - encoded.ecK], if blk.isEmpty: emptyBlock else: blk.data)
parityPieces.inc

View File

@ -17,6 +17,7 @@ import pkg/taskpools
import ../asynctest
import ./helpers
import ./examples
suite "Erasure encode/decode":
const BlockSize = 1024'nb
@ -232,3 +233,26 @@ suite "Erasure encode/decode":
let encoded = await encode(buffers, parity)
discard (await erasure.decode(encoded)).tryGet()
test "Verifiable manifest":
const
buffers = 20
parity = 10
let
encoded = await encode(buffers, parity)
slotCids = collect(newSeq):
for i in 0..<encoded.numSlots: Cid.example
verifyable = Manifest.new(encoded, Cid.example, slotCids).tryGet()
# Successful:
# decoded = (await erasure.decode(encoded)).tryGet()
# Fails:
decoded = (await erasure.decode(verifyable)).tryGet()
check:
decoded.treeCid == manifest.treeCid
decoded.treeCid == encoded.originalTreeCid
decoded.blocksCount == encoded.originalBlocksCount