diff --git a/tests/extract_cache.cpp b/tests/extract_cache.cpp new file mode 100644 index 0000000..0eb072b --- /dev/null +++ b/tests/extract_cache.cpp @@ -0,0 +1,40 @@ +#include +#include +#include +#include + +static constexpr uint32_t BLOCK_SIZE = 96 * 1024; + +int main(int argc, char* argv[]) { + if (argc != 4) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + std::ifstream in(argv[1], std::ios::binary); + std::ofstream out(argv[2], std::ios::binary); + int max_blocks = std::stoi(argv[3]); + + std::vector slot(BLOCK_SIZE); + int blocks_written = 0; + + while (in && blocks_written < max_blocks) { + // Read 96KB slot + in.read(reinterpret_cast(slot.data()), BLOCK_SIZE); + if (!in) break; + + // Read size from first 4 bytes + uint32_t size = *reinterpret_cast(slot.data()); + + // Skip empty slots + if (size == 0 || size > BLOCK_SIZE - 4) continue; + + // Write: size + data + out.write(reinterpret_cast(&size), sizeof(size)); + out.write(reinterpret_cast(slot.data() + 4), size); + blocks_written++; + } + + std::cout << "Extracted " << blocks_written << " blocks\n"; + return 0; +} diff --git a/tests/src/pool_block_tests.cpp b/tests/src/pool_block_tests.cpp index 6cb7250..fbf2de9 100644 --- a/tests/src/pool_block_tests.cpp +++ b/tests/src/pool_block_tests.cpp @@ -151,14 +151,11 @@ TEST(pool_block, verify) uint32_t m_expectedSharesNextBlock; bool m_shuffle; hash m_templateBlobsHash; - } tests[6] = { - { "default", "sidechain_dump.dat", 3456189, 11704382, 53, false, H("c84a85eebf17ab266e8a81b347dd7490043ede3a055c0dbe85e9cd378905845a") }, - { "default", "sidechain_dump.dat", 3456189, 11704382, 53, true, H("c84a85eebf17ab266e8a81b347dd7490043ede3a055c0dbe85e9cd378905845a") }, - { "mini", "sidechain_dump_mini.dat", 3456189, 11207082, 578, false, H("08debd1378bae899017eb58362f4c638d78e5218558025142dcbc2651c76b27e") }, - { "mini", "sidechain_dump_mini.dat", 3456189, 11207082, 578, true, H("08debd1378bae899017eb58362f4c638d78e5218558025142dcbc2651c76b27e") }, - { "nano", "sidechain_dump_nano.dat", 3456189, 188542, 115, false, H("dd667c41eb15ffb0eb662065545dc0dfbbcac8393348a4fc0a7367040319b0d5") }, - { "nano", "sidechain_dump_nano.dat", 3456189, 188542, 115, true, H("dd667c41eb15ffb0eb662065545dc0dfbbcac8393348a4fc0a7367040319b0d5") }, - }; + } tests[] = { + // Salvium mainnet - 200 blocks from live cache + { "salvium_main", "sidechain_dump.dat", 356800, 200, 200, false, H("0000000000000000000000000000000000000000000000000000000000000000") }, + { "salvium_main", "sidechain_dump.dat", 356800, 200, 200, true, H("0000000000000000000000000000000000000000000000000000000000000000") }, + }; for (const STest& t : tests) { diff --git a/tests/src/sidechain_dump.dat b/tests/src/sidechain_dump.dat new file mode 100644 index 0000000..652f381 Binary files /dev/null and b/tests/src/sidechain_dump.dat differ