From e920fa57cf9c503e560055864e4de37912b239e1 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 29 May 2023 14:30:08 -0400 Subject: Adjusted the way that Wrapping records works to clean up interfaces --- tests/dynamic_extension_tests.cpp | 36 +++++++++++------------- tests/internal_level_tests.cpp | 10 +++---- tests/mutable_buffer_tests.cpp | 58 +++++++++++++++++---------------------- tests/testing.h | 8 ++---- tests/wirs_tests.cpp | 30 ++++++++++---------- 5 files changed, 63 insertions(+), 79 deletions(-) (limited to 'tests') diff --git a/tests/dynamic_extension_tests.cpp b/tests/dynamic_extension_tests.cpp index b74ab38..9fdd5f9 100644 --- a/tests/dynamic_extension_tests.cpp +++ b/tests/dynamic_extension_tests.cpp @@ -20,7 +20,7 @@ #include using namespace de; -typedef DynamicExtension>, WIRSQuery>> DE; +typedef DynamicExtension, WIRSQuery> DE; START_TEST(t_create) { @@ -147,7 +147,9 @@ START_TEST(t_range_sample_memlevels) delete ext_wirs; } END_TEST +*/ +/* START_TEST(t_range_sample_weighted) { auto ext_wirs = new DE(100, 2, 1); @@ -186,23 +188,24 @@ START_TEST(t_range_sample_weighted) weight = 8; } - WRec r = {keys[i], (uint32_t) i, weight, 0}; + WRec r = {keys[i], (uint32_t) i, weight}; ext_wirs->insert(r); } size_t k = 1000; uint64_t lower_key = 0; uint64_t upper_key = 5; - WRec* buffer = new WRec[k](); - char *buffer1 = (char *) std::aligned_alloc(SECTOR_SIZE, PAGE_SIZE); - char *buffer2 = (char *) std::aligned_alloc(SECTOR_SIZE, PAGE_SIZE); - size_t cnt[3] = {0}; for (size_t i=0; i<1000; i++) { - ext_wirs->range_sample(buffer, lower_key, upper_key, k); + wirs_query_parms p; + p.lower_bound = lower_key; + p.upper_bound = upper_key; + p.sample_size = k; + + auto result = ext_wirs->query(&p); for (size_t j=0; jinsert(r), 1); if (gsl_rng_uniform(rng) < 0.05 && !to_delete.empty()) { @@ -251,8 +251,7 @@ START_TEST(t_tombstone_merging_01) for (size_t i=0; iinsert(dr); + ext_wirs->erase(dr); deletes++; to_delete.erase(del_vec[i]); deleted.insert(del_vec[i]); @@ -300,8 +299,7 @@ DE *create_test_tree(size_t reccnt, size_t memlevel_cnt) { std::sample(to_delete.begin(), to_delete.end(), std::back_inserter(del_vec), 3, std::mt19937{std::random_device{}()}); for (size_t i=0; iinsert(del_vec[i]); + ext_wirs->erase(del_vec[i]); deletes++; to_delete.erase(del_vec[i]); deleted.insert(del_vec[i]); @@ -349,9 +347,7 @@ START_TEST(t_sorted_array) for (size_t i=0; iinsert(dr ); + ext_wirs->erase(dr); deletes++; to_delete.erase(del_vec[i]); deleted.insert(del_vec[i]); @@ -368,7 +364,7 @@ START_TEST(t_sorted_array) uint64_t prev_key = 0; for (size_t i=0; iget_record_count(); i++) { - auto k = flat->get_record_at(i)->key; + auto k = flat->get_record_at(i)->rec.key; ck_assert_int_ge(k, prev_key); prev_key = k; } diff --git a/tests/internal_level_tests.cpp b/tests/internal_level_tests.cpp index 42c9044..1bbc458 100644 --- a/tests/internal_level_tests.cpp +++ b/tests/internal_level_tests.cpp @@ -21,12 +21,12 @@ using namespace de; -typedef InternalLevel, WIRS>, WIRSQuery>> ILevel; +typedef InternalLevel, WIRSQuery> ILevel; START_TEST(t_memlevel_merge) { - auto tbl1 = create_test_mbuffer(100); - auto tbl2 = create_test_mbuffer(100); + auto tbl1 = create_test_mbuffer(100); + auto tbl2 = create_test_mbuffer(100); auto base_level = new ILevel(1, 1); base_level->append_buffer(tbl1); @@ -50,8 +50,8 @@ START_TEST(t_memlevel_merge) ILevel *create_test_memlevel(size_t reccnt) { - auto tbl1 = create_test_mbuffer(reccnt/2); - auto tbl2 = create_test_mbuffer(reccnt/2); + auto tbl1 = create_test_mbuffer(reccnt/2); + auto tbl2 = create_test_mbuffer(reccnt/2); auto base_level = new ILevel(1, 2); base_level->append_buffer(tbl1); diff --git a/tests/mutable_buffer_tests.cpp b/tests/mutable_buffer_tests.cpp index fc8b511..bb8e2c2 100644 --- a/tests/mutable_buffer_tests.cpp +++ b/tests/mutable_buffer_tests.cpp @@ -25,7 +25,7 @@ using namespace de; START_TEST(t_create) { - auto buffer = new MutableBuffer(100, true, 50); + auto buffer = new MutableBuffer(100, true, 50); ck_assert_ptr_nonnull(buffer); ck_assert_int_eq(buffer->get_capacity(), 100); @@ -42,12 +42,12 @@ END_TEST START_TEST(t_insert) { - auto buffer = new MutableBuffer(100, true, 50); + auto buffer = new MutableBuffer(100, true, 50); uint64_t key = 0; uint32_t val = 5; - WrappedWRec rec = {0, 5, 1}; + WRec rec = {0, 5, 1}; for (size_t i=0; i<99; i++) { ck_assert_int_eq(buffer->append(rec), 1); @@ -77,11 +77,11 @@ END_TEST START_TEST(t_insert_tombstones) { - auto buffer = new MutableBuffer(100, true, 50); + auto buffer = new MutableBuffer(100, true, 50); size_t ts_cnt = 0; - WrappedRec rec = {0, 5}; + Rec rec = {0, 5}; for (size_t i=0; i<99; i++) { bool ts = false; @@ -90,9 +90,7 @@ START_TEST(t_insert_tombstones) ts=true; } - rec.set_tombstone(ts); - - ck_assert_int_eq(buffer->append(rec), 1); + ck_assert_int_eq(buffer->append(rec, ts), 1); ck_assert_int_eq(buffer->check_tombstone(rec), ts); rec.key++; @@ -104,11 +102,9 @@ START_TEST(t_insert_tombstones) } // inserting one more tombstone should not be possible - rec.set_tombstone(); - ck_assert_int_eq(buffer->append(rec), 0); + ck_assert_int_eq(buffer->append(rec, true), 0); - rec.set_tombstone(false); ck_assert_int_eq(buffer->append(rec), 1); rec.key++; @@ -124,10 +120,10 @@ END_TEST START_TEST(t_truncate) { - auto buffer = new MutableBuffer(100, true, 100); + auto buffer = new MutableBuffer(100, true, 100); size_t ts_cnt = 0; - WrappedRec rec = {0, 5}; + Rec rec = {0, 5}; for (size_t i=0; i<100; i++) { bool ts = false; @@ -136,9 +132,7 @@ START_TEST(t_truncate) ts=true; } - rec.set_tombstone(ts); - - ck_assert_int_eq(buffer->append(rec), 1); + ck_assert_int_eq(buffer->append(rec, ts), 1); ck_assert_int_eq(buffer->check_tombstone(rec), ts); rec.key++; @@ -149,7 +143,6 @@ START_TEST(t_truncate) } ck_assert_int_eq(buffer->is_full(), 1); - rec.set_tombstone(false); ck_assert_int_eq(buffer->append(rec), 0); ck_assert_int_eq(buffer->truncate(), 1); @@ -165,11 +158,11 @@ START_TEST(t_truncate) END_TEST -START_TEST(t_sorted_output) +START_TEST(t_get_data) { size_t cnt = 100; - auto buffer = new MutableBuffer(cnt, true, cnt/2); + auto buffer = new MutableBuffer(cnt, true, cnt/2); std::vector keys(cnt); @@ -184,23 +177,22 @@ START_TEST(t_sorted_output) uint32_t val = 12345; for (size_t i=0; iappend(WrappedRec {keys[i], val}); + buffer->append(Rec {keys[i], val}); } - WrappedRec r1 = {keys[cnt-2], val}; - r1.set_tombstone(); - buffer->append(r1); + Rec r1 = {keys[cnt-2], val}; + buffer->append(r1, true); - WrappedRec r2 = {keys[cnt-1], val}; - r2.set_tombstone(); - buffer->append(r2); + Rec r2 = {keys[cnt-1], val}; + buffer->append(r2, true); auto *sorted_records = buffer->get_data(); std::sort(keys.begin(), keys.end()); + std::sort(sorted_records, sorted_records + buffer->get_record_count(), std::less>()); for (size_t i=0; i> *values, size_t start, size_t stop, MutableBuffer *buffer) +void insert_records(std::vector> *values, size_t start, size_t stop, MutableBuffer *buffer) { for (size_t i=start; iappend({(*values)[i].first, (*values)[i].second}); @@ -220,11 +212,11 @@ void insert_records(std::vector> *values, size_t s START_TEST(t_multithreaded_insert) { size_t cnt = 10000; - auto buffer = new MutableBuffer(cnt, true, cnt/2); + auto buffer = new MutableBuffer(cnt, true, cnt/2); - std::vector records(cnt); + std::vector records(cnt); for (size_t i=0; i WRec; typedef de::Record Rec; -typedef de::WrappedRecord WrappedWRec; -typedef de::WrappedRecord WrappedRec; static bool initialize_test_file(std::string fname, size_t page_cnt) { @@ -149,18 +147,16 @@ static de::MutableBuffer *create_double_seq_mbuffer(size_t cnt, bool ts=false R rec; rec.key = i; rec.value = i; - if (ts) rec.set_tombstone(); - buffer->append(rec); + buffer->append(rec, ts); } for (size_t i = 0; i < cnt / 2; i++) { R rec; rec.key = i; rec.value = i + 1; - if (ts) rec.set_tombstone(); - buffer->append(rec); + buffer->append(rec, ts); } return buffer; diff --git a/tests/wirs_tests.cpp b/tests/wirs_tests.cpp index 3a80a9e..ba4b754 100644 --- a/tests/wirs_tests.cpp +++ b/tests/wirs_tests.cpp @@ -17,39 +17,39 @@ using namespace de; -typedef WIRS Shard; +typedef WIRS Shard; START_TEST(t_mbuffer_init) { - auto mem_table = new MutableBuffer(1024, true, 1024); + auto buffer = new MutableBuffer(1024, true, 1024); for (uint64_t i = 512; i > 0; i--) { uint32_t v = i; - mem_table->append({i,v, 1}); + buffer->append({i,v, 1}); } for (uint64_t i = 1; i <= 256; ++i) { uint32_t v = i; - mem_table->append({i, v, 1, 1}); + buffer->append({i, v, 1}, true); } for (uint64_t i = 257; i <= 512; ++i) { uint32_t v = i + 1; - mem_table->append({i, v, 1}); + buffer->append({i, v, 1}); } - Shard* shard = new Shard(mem_table); + Shard* shard = new Shard(buffer); ck_assert_uint_eq(shard->get_record_count(), 512); - delete mem_table; + delete buffer; delete shard; } START_TEST(t_wirs_init) { size_t n = 512; - auto mbuffer1 = create_test_mbuffer(n); - auto mbuffer2 = create_test_mbuffer(n); - auto mbuffer3 = create_test_mbuffer(n); + auto mbuffer1 = create_test_mbuffer(n); + auto mbuffer2 = create_test_mbuffer(n); + auto mbuffer3 = create_test_mbuffer(n); auto shard1 = new Shard(mbuffer1); auto shard2 = new Shard(mbuffer2); @@ -73,11 +73,11 @@ START_TEST(t_wirs_init) auto cur_rec = shard4->get_record_at(i); - if (shard1_idx < n && *cur_rec == *rec1) { + if (shard1_idx < n && cur_rec->rec == rec1->rec) { ++shard1_idx; - } else if (shard2_idx < n && *cur_rec == *rec2) { + } else if (shard2_idx < n && cur_rec->rec == rec2->rec) { ++shard2_idx; - } else if (shard3_idx < n && *cur_rec == *rec3) { + } else if (shard3_idx < n && cur_rec->rec == rec3->rec) { ++shard3_idx; } else { assert(false); @@ -123,8 +123,8 @@ START_TEST(t_get_lower_bound_index) START_TEST(t_full_cancelation) { size_t n = 100; - auto buffer = create_double_seq_mbuffer(n, false); - auto buffer_ts = create_double_seq_mbuffer(n, true); + auto buffer = create_double_seq_mbuffer(n, false); + auto buffer_ts = create_double_seq_mbuffer(n, true); Shard* shard = new Shard(buffer); Shard* shard_ts = new Shard(buffer_ts); -- cgit v1.2.3