From 7b32b6756d2e42a05ddb9b94494f0eccf8cca15f Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Mon, 16 Mar 2026 14:27:26 +0100 Subject: added one more test --- .../projectstore/remoteprojectstore.cpp | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/zenremotestore/projectstore') diff --git a/src/zenremotestore/projectstore/remoteprojectstore.cpp b/src/zenremotestore/projectstore/remoteprojectstore.cpp index 6bce132c3..8ba2397ff 100644 --- a/src/zenremotestore/projectstore/remoteprojectstore.cpp +++ b/src/zenremotestore/projectstore/remoteprojectstore.cpp @@ -7285,6 +7285,43 @@ TEST_CASE("buildcontainer.context_progress_reporting") CHECK(!Ctx.ProgressMessages.empty()); } +TEST_CASE("getblocksfromoplog.filtered") +{ + // GetBlocksFromOplog(ContainerObject, IncludeBlockHashes) returns only the requested blocks. + using namespace projectstore_testutils; + + ScopedTemporaryDirectory TempDir; + ScopedTemporaryDirectory ExportDir; + + GcManager Gc; + CidStore CidStore(Gc); + std::unique_ptr ProjectStoreDummy; + Ref Project = MakeTestProject(CidStore, Gc, TempDir.Path(), ProjectStoreDummy); + + TestWorkerPools Pools; + WorkerThreadPool& NetworkPool = Pools.NetworkPool; + WorkerThreadPool& WorkerPool = Pools.WorkerPool; + + std::shared_ptr RemoteStore = SetupExportStore(CidStore, *Project, NetworkPool, WorkerPool, ExportDir.Path()); + + RemoteProjectStore::LoadContainerResult ContainerResult = RemoteStore->LoadContainer(); + REQUIRE(ContainerResult.ErrorCode == 0); + + std::vector AllBlockHashes = GetBlockHashesFromOplog(ContainerResult.ContainerObject); + REQUIRE(!AllBlockHashes.empty()); + + // Filter to the first block only. + std::vector Subset = {AllBlockHashes[0]}; + std::vector Filtered = GetBlocksFromOplog(ContainerResult.ContainerObject, Subset); + CHECK(Filtered.size() == 1); + CHECK(Filtered[0].BlockHash == AllBlockHashes[0]); + CHECK(!Filtered[0].ChunkRawHashes.empty()); + + // Empty include set returns empty result (exercises the no-match branch). + std::vector Empty = GetBlocksFromOplog(ContainerResult.ContainerObject, std::span{}); + CHECK(Empty.empty()); +} + // --------------------------------------------------------------------------- // SaveOplog-focused tests // --------------------------------------------------------------------------- -- cgit v1.2.3