From f39e512ae3848abd1d3c68349c1a8fbe97be91b5 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 3 Jul 2023 15:19:20 -0400 Subject: Fixed query errors --- tests/pgm_tests.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 7 deletions(-) (limited to 'tests') diff --git a/tests/pgm_tests.cpp b/tests/pgm_tests.cpp index d21980a..083b370 100644 --- a/tests/pgm_tests.cpp +++ b/tests/pgm_tests.cpp @@ -195,9 +195,11 @@ START_TEST(t_range_query_merge) auto shard2 = Shard(buffer2); pgm_range_query_parms parms; - parms.lower_bound = 300; + parms.lower_bound = 150; parms.upper_bound = 500; + size_t result_size = parms.upper_bound - parms.lower_bound + 1 - 200; + auto state1 = PGMRangeQuery::get_query_state(&shard1, &parms); auto state2 = PGMRangeQuery::get_query_state(&shard2, &parms); @@ -208,27 +210,65 @@ START_TEST(t_range_query_merge) PGMRangeQuery::delete_query_state(state1); PGMRangeQuery::delete_query_state(state2); - ck_assert_int_eq(results[0].size() + results[1].size(), 101); + ck_assert_int_eq(results[0].size() + results[1].size(), result_size); std::vector> proc_results; - auto key = 400; for (size_t j=0; j()); for (size_t i=0; i::merge(proc_results); std::sort(result.begin(), result.end()); - ck_assert_int_eq(result.size(), 101); - key = 400; + ck_assert_int_eq(result.size(), result_size); + auto key = parms.lower_bound; for (size_t i=0; i(100, 200); + auto buffer2 = create_sequential_mbuffer(400, 1000); + + de::PGM *shards[2]; + + auto shard1 = Shard(buffer1); + auto shard2 = Shard(buffer2); + + shards[0] = &shard1; + shards[1] = &shard2; + + auto merged = Shard(shards, 2); + + for (size_t i=100; i<1000; i++) { + Rec r; + r.key = i; + r.value = i; + + auto idx = merged.get_lower_bound(i); + + assert(idx < merged.get_record_count()); + + auto res = merged.get_record_at(idx); + + if (i >=200 && i <400) { + ck_assert_int_lt(res->rec.key, i); + } else { + ck_assert_int_eq(res->rec.key, i); + } } delete buffer1; @@ -286,6 +326,7 @@ Suite *unit_testing() TCase *lookup = tcase_create("de:PGM:point_lookup Testing"); tcase_add_test(lookup, t_point_lookup); tcase_add_test(lookup, t_point_lookup_miss); + tcase_add_test(lookup, t_lower_bound); suite_add_tcase(unit, lookup); TCase *range_query = tcase_create("de:PGM::range_query Testing"); -- cgit v1.2.3