113 metaData.
root = VALUES[2];
117 metaData.
name =
"Note hash tree";
123 transaction->commit();
126 uint64_t numIterationsPerThread = 1000;
127 uint32_t numThreads = 16;
130 auto func = [&]() ->
void {
131 for (uint64_t iteration = 0; iteration < numIterationsPerThread; iteration++) {
135 EXPECT_TRUE(success);
136 EXPECT_EQ(readBack, metaData);
140 for (uint64_t count = 0; count < numThreads; count++) {
143 for (uint64_t count = 0; count < numThreads; count++) {
144 threads[count]->join();
216 value1.arr[0] = value2.arr[7] = 0x11;
217 value1.arr[1] = value2.arr[6] = 0x22;
218 value1.arr[2] = value2.arr[5] = 0x33;
219 value1.arr[3] = value2.arr[4] = 0x44;
220 value1.arr[4] = value2.arr[3] = 0x55;
221 value1.arr[5] = value2.arr[2] = 0x66;
222 value1.arr[6] = value2.arr[1] = 0x77;
223 value1.arr[7] = value2.arr[0] = 0x88;
305 struct BlockAndIndex {
312 BlockAndIndex{ .blockNumber = 2, .index = 60 },
313 BlockAndIndex{ .blockNumber = 3, .index = 82 },
314 BlockAndIndex{ .blockNumber = 4, .index = 114 },
315 BlockAndIndex{ .blockNumber = 5, .index = 130 } };
316 LMDBTreeStore store(_directory,
"DB1", _mapSize, _maxReaders);
320 for (
auto block : blocks) {
324 transaction->commit();
332 EXPECT_EQ(readBack, 1);
335 EXPECT_EQ(readBack, 2);
338 EXPECT_EQ(readBack, 3);
341 EXPECT_EQ(readBack, 4);
344 EXPECT_EQ(readBack, 5);
354 transaction->commit();
362 EXPECT_EQ(readBack, 1);
365 EXPECT_EQ(readBack, 2);
368 EXPECT_EQ(readBack, 3);
371 EXPECT_EQ(readBack, 4);
384 transaction->commit();
392 EXPECT_EQ(readBack, 1);
395 EXPECT_EQ(readBack, 2);
414 transaction->commit();
422 EXPECT_EQ(readBack, 1);
425 EXPECT_EQ(readBack, 2);
439 struct BlockAndIndex {
445 BlockAndIndex{ .blockNumber = 2, .index = 60 },
446 BlockAndIndex{ .blockNumber = 3, .index = 60 },
447 BlockAndIndex{ .blockNumber = 4, .index = 60 },
448 BlockAndIndex{ .blockNumber = 5, .index = 130 } };
449 LMDBTreeStore store(_directory,
"DB1", _mapSize, _maxReaders);
453 for (
auto block : blocks) {
457 transaction->commit();
468 transaction->abort();
476 EXPECT_EQ(readBack, 1);
480 EXPECT_EQ(readBack, 2);
483 EXPECT_EQ(readBack, 5);
492 EXPECT_THROW(store.
delete_block_index(blocks[1].index + 1, blocks[1].blockNumber, *transaction),
494 transaction->abort();
502 EXPECT_EQ(readBack, 1);
506 EXPECT_EQ(readBack, 2);
509 EXPECT_EQ(readBack, 5);
518 EXPECT_THROW(store.
delete_block_index(blocks[1].index + 1, 2, *transaction), std::runtime_error);
519 EXPECT_THROW(store.
delete_block_index(blocks[1].index + 1, 5, *transaction), std::runtime_error);
520 transaction->abort();
528 EXPECT_EQ(readBack, 1);
531 EXPECT_EQ(readBack, 2);
534 EXPECT_EQ(readBack, 5);
545 transaction->commit();
553 EXPECT_EQ(readBack, 1);
556 EXPECT_EQ(readBack, 2);
559 EXPECT_EQ(readBack, 5);
571 transaction->commit();
579 EXPECT_EQ(readBack, 1);
582 EXPECT_EQ(readBack, 5);
585 EXPECT_EQ(readBack, 5);