adding basic test for treehash algo

This commit is contained in:
Dmitriy Ryajov 2021-08-27 16:01:43 -06:00
parent ad63969f20
commit 9ffd64ebed
No known key found for this signature in database
GPG Key ID: DA8C680CE7C657A4
2 changed files with 42 additions and 5 deletions

View File

@ -2,9 +2,22 @@ import pkg/libp2p/varint
import pkg/dagger/chunker
import pkg/dagger/blocktype
import pkg/dagger/blockstream
import pkg/questionable
import pkg/questionable/results
export chunker
type
TestStreamProc* = proc(): ?!Block {.raises: [Defect].}
TestStream* = ref object of BlockStreamRef
handler*: TestStreamProc
method nextBlock*(b: TestStream): ?!Block =
b.handler()
proc lenPrefix*(msg: openArray[byte]): seq[byte] =
## Write `msg` with a varint-encoded length prefix
##

View File

@ -12,17 +12,41 @@ import pkg/dagger/blocktype as bt
import pkg/dagger/blockstream
import pkg/dagger/blockset
import ./helpers
suite "Data set":
test "Make from Blocks":
test "Should produce valid tree hash checksum":
let
blockStream = ChunkedBlockStreamRef.new(
newRandomChunker(Rng.instance(), size = 256 * 7, chunkSize = 256))
blocks = @[
!Block.new("Block 1".toBytes),
!Block.new("Block 2".toBytes),
!Block.new("Block 3".toBytes),
!Block.new("Block 4".toBytes),
!Block.new("Block 5".toBytes),
!Block.new("Block 6".toBytes),
!Block.new("Block 7".toBytes),
]
checksum = @[byte(43), 2, 105, 202, 45, 227,
178, 211, 83, 246, 56, 250, 210,
160, 210, 98, 123, 87, 139, 157,
188, 221, 252, 255, 17, 11, 79,
85, 220, 161, 238, 108]
var idx = 0
proc nextBlockHandler(): ?!Block =
let blk = if idx < blocks.len: blocks[idx] else: return
idx.inc()
return success blk
let
blockStream = TestStream(handler: nextBlockHandler)
blockSet = BlockSetRef.new(stream = blockStream)
let res = blockSet.treeHash()
check res.isOK
if h =? res:
echo h.hashBytes()
check h.hashBytes() == checksum
return
echo res.error.msg
check false