Adds unit test for decoding of verifiable manifests
This commit is contained in:
parent
efee152e31
commit
b50addf0cb
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue