From e6d84b9c0de10773285617de5857a081d08dd410 Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Thu, 21 Jan 2021 17:10:20 +0100 Subject: [PATCH] Add initializers for bitswap messages --- ipfs/bitswap/messages.nim | 15 +++++++++++++++ tests/ipfs/testBitswapMessages.nim | 23 +++++++++++++++++++++++ tests/testAll.nim | 1 + 3 files changed, 39 insertions(+) create mode 100644 ipfs/bitswap/messages.nim create mode 100644 tests/ipfs/testBitswapMessages.nim diff --git a/ipfs/bitswap/messages.nim b/ipfs/bitswap/messages.nim new file mode 100644 index 00000000..b8395f54 --- /dev/null +++ b/ipfs/bitswap/messages.nim @@ -0,0 +1,15 @@ +import pkg/libp2p +import ../protobuf/bitswap + +export Cid +export Message + +proc want*(t: type Message, cids: varargs[Cid]): Message = + for cid in cids: + let entry = Entry(`block`: cid.data.buffer) + result.wantlist.entries.add(entry) + +proc send*(t: type Message, blocks: varargs[seq[byte]]): Message = + for data in blocks: + let bloc = Block(data: data) + result.payload.add(bloc) diff --git a/tests/ipfs/testBitswapMessages.nim b/tests/ipfs/testBitswapMessages.nim new file mode 100644 index 00000000..d798af76 --- /dev/null +++ b/tests/ipfs/testBitswapMessages.nim @@ -0,0 +1,23 @@ +import std/unittest +import pkg/libp2p +import pkg/ipfs/protobuf/bitswap +import pkg/ipfs/bitswap/messages +import ../helpers/examples + +suite "bitswap messages": + + test "creates message with want list": + let cid1, cid2 = Cid.example + let message = Message.want(cid1, cid2) + check message == Message(wantlist: WantList(entries: @[ + Entry(`block`: cid1.data.buffer), + Entry(`block`: cid2.data.buffer) + ])) + + test "creates message that sends blocks": + let block1, block2 = seq[byte].example + let message = Message.send(block1, block2) + check message == Message(payload: @[ + Block(data: block1), + Block(data: block2) + ]) diff --git a/tests/testAll.nim b/tests/testAll.nim index 84ae91b2..4ec133cc 100644 --- a/tests/testAll.nim +++ b/tests/testAll.nim @@ -3,6 +3,7 @@ import ./ipfs/testChunking import ./ipfs/testRepo import ./ipfs/testDhtRouting import ./ipfs/testProtobuf +import ./ipfs/testBitswapMessages import ./ipfs/testIpfs {.warning[UnusedImport]: off.}