summaryrefslogtreecommitdiffstats
path: root/tests/vptree_tests.cpp
diff options
context:
space:
mode:
authorDouglas Rumbaugh <dbr4@psu.edu>2024-02-08 16:38:44 -0500
committerDouglas Rumbaugh <dbr4@psu.edu>2024-02-08 16:39:08 -0500
commit711769574e647839677739192698e400529efe75 (patch)
tree6262e9aa99123cfdc6c9930020662a4dc9c136eb /tests/vptree_tests.cpp
parent923e27797f6fd3a2b04f1a7a8d990a49374f4c61 (diff)
downloaddynamic-extension-711769574e647839677739192698e400529efe75.tar.gz
Updated VPTree to new shard/query interfaces
Diffstat (limited to 'tests/vptree_tests.cpp')
-rw-r--r--tests/vptree_tests.cpp94
1 files changed, 51 insertions, 43 deletions
diff --git a/tests/vptree_tests.cpp b/tests/vptree_tests.cpp
index fb568dd..ff99ba6 100644
--- a/tests/vptree_tests.cpp
+++ b/tests/vptree_tests.cpp
@@ -9,27 +9,28 @@
*
*/
+
+#include "include/testing.h"
#include "shard/VPTree.h"
-#include "testing.h"
-#include "vptree.hpp"
+#include "query/knn.h"
#include <check.h>
using namespace de;
-
-typedef VPTree<PRec> Shard;
+typedef PRec R;
+typedef VPTree<R> Shard;
START_TEST(t_mbuffer_init)
{
size_t n= 24;
- auto buffer = new MutableBuffer<PRec>(n, n);
+ auto buffer = new MutableBuffer<PRec>(n/2, n);
for (int64_t i=0; i<n; i++) {
- buffer->append({i, i});
+ buffer->append({(uint64_t) i, (uint64_t) i});
}
- Shard* shard = new Shard(buffer);
+ Shard* shard = new Shard(buffer->get_buffer_view());
ck_assert_uint_eq(shard->get_record_count(), n);
delete buffer;
@@ -40,16 +41,16 @@ START_TEST(t_mbuffer_init)
START_TEST(t_wss_init)
{
size_t n = 512;
- auto mbuffer1 = create_2d_mbuffer(n);
- auto mbuffer2 = create_2d_mbuffer(n);
- auto mbuffer3 = create_2d_mbuffer(n);
+ auto mbuffer1 = create_test_mbuffer<R>(n);
+ auto mbuffer2 = create_test_mbuffer<R>(n);
+ auto mbuffer3 = create_test_mbuffer<R>(n);
- auto shard1 = new Shard(mbuffer1);
- auto shard2 = new Shard(mbuffer2);
- auto shard3 = new Shard(mbuffer3);
+ auto shard1 = new Shard(mbuffer1->get_buffer_view());
+ auto shard2 = new Shard(mbuffer2->get_buffer_view());
+ auto shard3 = new Shard(mbuffer3->get_buffer_view());
- Shard* shards[3] = {shard1, shard2, shard3};
- auto shard4 = new Shard(shards, 3);
+ std::vector<Shard *> shards = {shard1, shard2, shard3};
+ auto shard4 = new Shard(shards);
ck_assert_int_eq(shard4->get_record_count(), n * 3);
ck_assert_int_eq(shard4->get_tombstone_count(), 0);
@@ -69,19 +70,23 @@ START_TEST(t_point_lookup)
{
size_t n = 16;
- auto buffer = create_2d_sequential_mbuffer(n);
- auto wss = Shard(buffer);
+ auto buffer = create_sequential_mbuffer<R>(0, n);
+ auto wss = Shard(buffer->get_buffer_view());
- for (size_t i=0; i<n; i++) {
- PRec r;
- auto rec = (buffer->get_data() + i);
- r.data[0] = rec->rec.data[0];
- r.data[1] = rec->rec.data[1];
+ {
+ auto bv = buffer->get_buffer_view();
- auto result = wss.point_lookup(r);
- ck_assert_ptr_nonnull(result);
- ck_assert_int_eq(result->rec.data[0], r.data[0]);
- ck_assert_int_eq(result->rec.data[1], r.data[1]);
+ for (size_t i=0; i<n; i++) {
+ PRec r;
+ auto rec = (bv.get(i));
+ r.data[0] = rec->rec.data[0];
+ r.data[1] = rec->rec.data[1];
+
+ auto result = wss.point_lookup(r);
+ ck_assert_ptr_nonnull(result);
+ ck_assert_int_eq(result->rec.data[0], r.data[0]);
+ ck_assert_int_eq(result->rec.data[1], r.data[1]);
+ }
}
delete buffer;
@@ -93,8 +98,8 @@ START_TEST(t_point_lookup_miss)
{
size_t n = 10000;
- auto buffer = create_2d_sequential_mbuffer(n);
- auto wss = Shard(buffer);
+ auto buffer = create_sequential_mbuffer<R>(0, n);
+ auto wss = Shard(buffer->get_buffer_view());
for (size_t i=n + 100; i<2*n; i++) {
PRec r;
@@ -112,24 +117,27 @@ START_TEST(t_point_lookup_miss)
START_TEST(t_buffer_query)
{
size_t n = 10000;
- auto buffer = create_2d_sequential_mbuffer(n);
+ auto buffer = create_sequential_mbuffer<R>(0, n);
PRec target;
target.data[0] = 120;
target.data[1] = 120;
- KNNQueryParms<PRec> p;
+ knn::Parms<PRec> p;
p.k = 10;
p.point = target;
- auto state = KNNQuery<PRec>::get_buffer_query_state(buffer, &p);
- auto result = KNNQuery<PRec>::buffer_query(buffer, state, &p);
- KNNQuery<PRec>::delete_buffer_query_state(state);
+ {
+ auto bv = buffer->get_buffer_view();
+ auto state = knn::Query<PRec, Shard>::get_buffer_query_state(&bv, &p);
+ auto result = knn::Query<PRec, Shard>::buffer_query(state, &p);
+ knn::Query<PRec, Shard>::delete_buffer_query_state(state);
- std::sort(result.begin(), result.end());
- size_t start = 120 - 5;
- for (size_t i=0; i<result.size(); i++) {
- ck_assert_int_eq(result[i].rec.data[0], start++);
+ std::sort(result.begin(), result.end());
+ size_t start = 120 - 5;
+ for (size_t i=0; i<result.size(); i++) {
+ ck_assert_int_eq(result[i].rec.data[0], start++);
+ }
}
delete buffer;
@@ -138,19 +146,19 @@ START_TEST(t_buffer_query)
START_TEST(t_knn_query)
{
size_t n = 1000;
- auto buffer = create_2d_sequential_mbuffer(n);
+ auto buffer = create_sequential_mbuffer<R>(0, n);
- auto vptree = VPTree<PRec>(buffer);
+ auto vptree = VPTree<PRec>(buffer->get_buffer_view());
- KNNQueryParms<PRec> p;
+ knn::Parms<PRec> p;
for (size_t i=0; i<100; i++) {
p.k = rand() % 150;
p.point.data[0] = rand() % (n-p.k);
p.point.data[1] = p.point.data[0];
- auto state = KNNQuery<PRec>::get_query_state(&vptree, &p);
- auto results = KNNQuery<PRec>::query(&vptree, state, &p);
- KNNQuery<PRec>::delete_query_state(state);
+ auto state = knn::Query<PRec, Shard>::get_query_state(&vptree, &p);
+ auto results = knn::Query<PRec, Shard>::query(&vptree, state, &p);
+ knn::Query<PRec, Shard>::delete_query_state(state);
ck_assert_int_eq(results.size(), p.k);