Bug: Large manifests encoding (#800)
* Adds test for encoding/decoding manifests with large datasets * switches datasetSize to uint64
This commit is contained in:
parent
c7bc28d723
commit
c58d4d7dbe
|
@ -66,7 +66,7 @@ proc encode*(manifest: Manifest): ?!seq[byte] =
|
||||||
var header = initProtoBuffer()
|
var header = initProtoBuffer()
|
||||||
header.write(1, manifest.treeCid.data.buffer)
|
header.write(1, manifest.treeCid.data.buffer)
|
||||||
header.write(2, manifest.blockSize.uint32)
|
header.write(2, manifest.blockSize.uint32)
|
||||||
header.write(3, manifest.datasetSize.uint32)
|
header.write(3, manifest.datasetSize.uint64)
|
||||||
header.write(4, manifest.codec.uint32)
|
header.write(4, manifest.codec.uint32)
|
||||||
header.write(5, manifest.hcodec.uint32)
|
header.write(5, manifest.hcodec.uint32)
|
||||||
header.write(6, manifest.version.uint32)
|
header.write(6, manifest.version.uint32)
|
||||||
|
@ -75,7 +75,7 @@ proc encode*(manifest: Manifest): ?!seq[byte] =
|
||||||
erasureInfo.write(1, manifest.ecK.uint32)
|
erasureInfo.write(1, manifest.ecK.uint32)
|
||||||
erasureInfo.write(2, manifest.ecM.uint32)
|
erasureInfo.write(2, manifest.ecM.uint32)
|
||||||
erasureInfo.write(3, manifest.originalTreeCid.data.buffer)
|
erasureInfo.write(3, manifest.originalTreeCid.data.buffer)
|
||||||
erasureInfo.write(4, manifest.originalDatasetSize.uint32)
|
erasureInfo.write(4, manifest.originalDatasetSize.uint64)
|
||||||
erasureInfo.write(5, manifest.protectedStrategy.uint32)
|
erasureInfo.write(5, manifest.protectedStrategy.uint32)
|
||||||
|
|
||||||
if manifest.verifiable:
|
if manifest.verifiable:
|
||||||
|
@ -106,12 +106,12 @@ proc decode*(_: type Manifest, data: openArray[byte]): ?!Manifest =
|
||||||
pbVerificationInfo: ProtoBuffer
|
pbVerificationInfo: ProtoBuffer
|
||||||
treeCidBuf: seq[byte]
|
treeCidBuf: seq[byte]
|
||||||
originalTreeCid: seq[byte]
|
originalTreeCid: seq[byte]
|
||||||
datasetSize: uint32
|
datasetSize: uint64
|
||||||
codec: uint32
|
codec: uint32
|
||||||
hcodec: uint32
|
hcodec: uint32
|
||||||
version: uint32
|
version: uint32
|
||||||
blockSize: uint32
|
blockSize: uint32
|
||||||
originalDatasetSize: uint32
|
originalDatasetSize: uint64
|
||||||
ecK, ecM: uint32
|
ecK, ecM: uint32
|
||||||
protectedStrategy: uint32
|
protectedStrategy: uint32
|
||||||
verifyRoot: seq[byte]
|
verifyRoot: seq[byte]
|
||||||
|
|
|
@ -57,6 +57,16 @@ checksuite "Manifest":
|
||||||
check:
|
check:
|
||||||
encodeDecode(manifest) == manifest
|
encodeDecode(manifest) == manifest
|
||||||
|
|
||||||
|
test "Should encode/decode large manifest":
|
||||||
|
let large = Manifest.new(
|
||||||
|
treeCid = Cid.example,
|
||||||
|
blockSize = (64 * 1024).NBytes,
|
||||||
|
datasetSize = (5 * 1024).MiBs
|
||||||
|
)
|
||||||
|
|
||||||
|
check:
|
||||||
|
encodeDecode(large) == large
|
||||||
|
|
||||||
test "Should encode/decode to/from protected manifest":
|
test "Should encode/decode to/from protected manifest":
|
||||||
check:
|
check:
|
||||||
encodeDecode(protectedManifest) == protectedManifest
|
encodeDecode(protectedManifest) == protectedManifest
|
||||||
|
|
Loading…
Reference in New Issue