MCPcopy Create free account
hub / github.com/cruppstahl/upscaledb / insertRandomTest

Method insertRandomTest

unittests/btree_default.cpp:738–786  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

736 }
737
738 void insertRandomTest(bool fixed_records, size_t record_size) {
739 DuplicateTable dt(ldb(), fixed_records && record_size <= 8,
740 record_size <= 8 ? record_size : UPS_RECORD_SIZE_UNLIMITED);
741
742 const int num_records = 100;
743
744 // create an empty table
745 dt.create(context.get(), 0, 0);
746 REQUIRE(dt.record_count() == 0);
747 REQUIRE(dt.record_capacity() == 0);
748
749 // the model stores the records that we inserted
750 std::vector<std::vector<uint8_t> > model;
751
752 // fill it
753 ups_record_t record = {0};
754 uint8_t buf[1024] = {0};
755 record.data = &buf[0];
756 record.size = (uint32_t)record_size;
757 for (int i = 0; i < num_records; i++) {
758 *(size_t *)&buf[0] = i;
759 if (i == 0) {
760 dt.set_record(context.get(), i, &record, UPS_DUPLICATE_INSERT_FIRST, 0);
761 model.push_back(std::vector<uint8_t>(&buf[0], &buf[record_size]));
762 }
763 else {
764 size_t position = rand() % i;
765 dt.set_record(context.get(), position, &record,
766 UPS_DUPLICATE_INSERT_BEFORE, 0);
767 model.insert(model.begin() + position,
768 std::vector<uint8_t>(&buf[0], &buf[record_size]));
769 }
770 }
771
772 REQUIRE(dt.record_count() == num_records);
773
774 ByteArray arena(1024);
775 record.data = arena.data();
776
777 for (int i = 0; i < num_records; i++) {
778 dt.record(context.get(), &arena, &record, 0, i);
779 REQUIRE(record.size == record_size);
780 if (record_size > 0)
781 REQUIRE(0 == ::memcmp(record.data, &(model[i][0]), record_size));
782 }
783
784 // clean up
785 dt.erase_record(context.get(), 0, true);
786 }
787
788 void insertEraseAscendingTest(bool fixed_records, size_t record_size) {
789 DuplicateTable dt(ldb(), fixed_records && record_size <= 8,

Callers 1

btree_default.cppFile · 0.80

Calls 11

ldbFunction · 0.85
record_capacityMethod · 0.80
createMethod · 0.45
getMethod · 0.45
record_countMethod · 0.45
set_recordMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
dataMethod · 0.45
recordMethod · 0.45
erase_recordMethod · 0.45

Tested by

no test coverage detected