From f9d2b216094e384dd8f651d2171e2448c3ae96bf Mon Sep 17 00:00:00 2001 From: Marcin Czenko Date: Mon, 31 Mar 2025 20:16:15 +0200 Subject: [PATCH] adds more tests to torrentdownloader --- .../bittorrent/testtorrentdownloader.nim | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/codex/bittorrent/testtorrentdownloader.nim b/tests/codex/bittorrent/testtorrentdownloader.nim index 397d4938..ca1c1115 100644 --- a/tests/codex/bittorrent/testtorrentdownloader.nim +++ b/tests/codex/bittorrent/testtorrentdownloader.nim @@ -14,6 +14,7 @@ import pkg/codex/bittorrent/manifest import pkg/codex/bittorrent/torrentdownloader import pkg/codex/utils/iter +import pkg/codex/utils/safeasynciter import pkg/codex/logutils import ../../asynctest @@ -208,6 +209,47 @@ asyncchecksuite "Torrent Downloader": check blockIter.finished await torrentDownloader.stop() + test "get downloaded blocks using async iter": + torrentDownloader.start() + + let blockIter = Iter.new(0 ..< codexManifest.blocksCount) + + for dataFut in torrentDownloader.getAsyncBlockIterator(): + let status = await dataFut.withTimeout(1.seconds) + assert status == true + let (blockIndex, data) = (await dataFut).tryGet() + trace "got data", blockIndex, len = data.len + let expectedBlockIndex = blockIter.next() + check blockIndex == expectedBlockIndex + let treeCid = codexManifest.treeCid + let address = BlockAddress.init(treeCid, expectedBlockIndex) + let blk = (await localStore.getBlock(address)).tryGet() + check blk.data == data + + check blockIter.finished + await torrentDownloader.stop() + + test "get downloaded blocks using async pairs iter": + torrentDownloader.start() + + let blockIter = Iter.new(0 ..< codexManifest.blocksCount) + + for i, dataFut in torrentDownloader.getAsyncBlockIterator(): + let status = await dataFut.withTimeout(1.seconds) + assert status == true + let (blockIndex, data) = (await dataFut).tryGet() + trace "got data", blockIndex, len = data.len + let expectedBlockIndex = blockIter.next() + check i == expectedBlockIndex + check blockIndex == expectedBlockIndex + let treeCid = codexManifest.treeCid + let address = BlockAddress.init(treeCid, expectedBlockIndex) + let blk = (await localStore.getBlock(address)).tryGet() + check blk.data == data + + check blockIter.finished + await torrentDownloader.stop() + test "canceling download": torrentDownloader.start()