diff options
Diffstat (limited to 'searchlib/src/tests/memoryindex')
-rw-r--r-- | searchlib/src/tests/memoryindex/datastore/CMakeLists.txt | 1 | ||||
-rw-r--r-- | searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp | 154 |
2 files changed, 58 insertions, 97 deletions
diff --git a/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt b/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt index 45507f3b0ae..5f3d84695a6 100644 --- a/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt +++ b/searchlib/src/tests/memoryindex/datastore/CMakeLists.txt @@ -4,6 +4,7 @@ vespa_add_executable(searchlib_feature_store_test_app TEST feature_store_test.cpp DEPENDS searchlib + gtest ) vespa_add_test(NAME searchlib_feature_store_test_app COMMAND searchlib_feature_store_test_app) vespa_add_executable(searchlib_word_store_test_app TEST diff --git a/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp b/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp index aca83d67a8a..c6368bee6eb 100644 --- a/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp +++ b/searchlib/src/tests/memoryindex/datastore/feature_store_test.cpp @@ -1,8 +1,10 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/searchlib/memoryindex/feature_store.h> +#include <vespa/vespalib/gtest/gtest.h> + #include <vespa/log/log.h> LOG_SETUP("feature_store_test"); -#include <vespa/vespalib/testkit/testapp.h> -#include <vespa/searchlib/memoryindex/feature_store.h> using namespace search::btree; using namespace search::datastore; @@ -11,62 +13,55 @@ using namespace search::index; using search::index::schema::CollectionType; using search::index::schema::DataType; -namespace search -{ - +namespace search::memoryindex { -namespace memoryindex -{ +class FeatureStoreTest : public ::testing::Test { +public: + Schema schema; + FeatureStore fs; + Schema make_schema() const; + FeatureStoreTest(); +}; -class Test : public vespalib::TestApp +Schema +FeatureStoreTest::make_schema() const { -private: - Schema _schema; - - const Schema & getSchema() const { return _schema; } - bool assertFeatures(const DocIdAndFeatures &exp, const DocIdAndFeatures &act); - void requireThatFeaturesCanBeAddedAndRetrieved(); - void requireThatNextWordsAreWorking(); - void requireThatAddFeaturesTriggersChangeOfBuffer(); - -public: - Test(); - int Main() override; -}; + Schema result; + result.addIndexField(Schema::IndexField("f0", DataType::STRING)); + result.addIndexField(Schema::IndexField("f1", DataType::STRING, CollectionType::WEIGHTEDSET)); + return result; +} +FeatureStoreTest::FeatureStoreTest() + : schema(make_schema()), + fs(schema) +{ +} -bool -Test::assertFeatures(const DocIdAndFeatures &exp, - const DocIdAndFeatures &act) +void +assertFeatures(const DocIdAndFeatures& exp, + const DocIdAndFeatures& act) { // docid is not encoded as part of features - if (!EXPECT_EQUAL(exp.elements().size(), - act.elements().size())) - return false; + ASSERT_EQ(exp.elements().size(), + act.elements().size()); for (size_t i = 0; i < exp.elements().size(); ++i) { - if (!EXPECT_EQUAL(exp.elements()[i].getElementId(), - act.elements()[i].getElementId())) - return false; - if (!EXPECT_EQUAL(exp.elements()[i].getNumOccs(), - act.elements()[i].getNumOccs())) - return false; - if (!EXPECT_EQUAL(exp.elements()[i].getWeight(), act.elements()[i].getWeight())) - return false; - if (!EXPECT_EQUAL(exp.elements()[i].getElementLen(), - act.elements()[i].getElementLen())) - return false; + EXPECT_EQ(exp.elements()[i].getElementId(), + act.elements()[i].getElementId()); + EXPECT_EQ(exp.elements()[i].getNumOccs(), + act.elements()[i].getNumOccs()); + EXPECT_EQ(exp.elements()[i].getWeight(), act.elements()[i].getWeight()); + EXPECT_EQ(exp.elements()[i].getElementLen(), + act.elements()[i].getElementLen()); } - if (!EXPECT_EQUAL(exp.word_positions().size(), act.word_positions().size())) - return false; + ASSERT_EQ(exp.word_positions().size(), act.word_positions().size()); for (size_t i = 0; i < exp.word_positions().size(); ++i) { - if (!EXPECT_EQUAL(exp.word_positions()[i].getWordPos(), - act.word_positions()[i].getWordPos())) return false; + EXPECT_EQ(exp.word_positions()[i].getWordPos(), + act.word_positions()[i].getWordPos()); } - return true; } - DocIdAndFeatures getFeatures(uint32_t numOccs, int32_t weight, @@ -84,11 +79,8 @@ getFeatures(uint32_t numOccs, return f; } - -void -Test::requireThatFeaturesCanBeAddedAndRetrieved() +TEST_F(FeatureStoreTest, features_can_be_added_and_retrieved) { - FeatureStore fs(getSchema()); DocIdAndFeatures act; EntryRef r1; EntryRef r2; @@ -98,9 +90,9 @@ Test::requireThatFeaturesCanBeAddedAndRetrieved() r = fs.addFeatures(0, f); r1 = r.first; EXPECT_TRUE(r.second > 0); - EXPECT_EQUAL(FeatureStore::RefType::align(1u), - FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(FeatureStore::RefType::align(1u), + FeatureStore::RefType(r1).offset()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, @@ -108,7 +100,7 @@ Test::requireThatFeaturesCanBeAddedAndRetrieved() FeatureStore::RefType(r1).bufferId()); fs.getFeatures(0, r1, act); // weight not encoded for single value - EXPECT_TRUE(assertFeatures(getFeatures(2, 1, 8), act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(getFeatures(2, 1, 8), act)); } { DocIdAndFeatures f = getFeatures(4, 8, 16); @@ -117,22 +109,19 @@ Test::requireThatFeaturesCanBeAddedAndRetrieved() EXPECT_TRUE(r.second > 0); EXPECT_TRUE(FeatureStore::RefType(r2).offset() > FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, FeatureStore::RefType(r2).offset(), FeatureStore::RefType(r2).bufferId()); fs.getFeatures(1, r2, act); - EXPECT_TRUE(assertFeatures(f, act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(f, act)); } } - -void -Test::requireThatNextWordsAreWorking() +TEST_F(FeatureStoreTest, next_words_are_working) { - FeatureStore fs(getSchema()); DocIdAndFeatures act; EntryRef r1; EntryRef r2; @@ -142,9 +131,9 @@ Test::requireThatNextWordsAreWorking() r = fs.addFeatures(0, f); r1 = r.first; EXPECT_TRUE(r.second > 0); - EXPECT_EQUAL(FeatureStore::RefType::align(1u), - FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(FeatureStore::RefType::align(1u), + FeatureStore::RefType(r1).offset()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, @@ -152,7 +141,7 @@ Test::requireThatNextWordsAreWorking() FeatureStore::RefType(r1).bufferId()); fs.getFeatures(0, r1, act); // weight not encoded for single value - EXPECT_TRUE(assertFeatures(getFeatures(2, 1, 8), act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(getFeatures(2, 1, 8), act)); } { DocIdAndFeatures f = getFeatures(4, 8, 16); @@ -161,22 +150,19 @@ Test::requireThatNextWordsAreWorking() EXPECT_TRUE(r.second > 0); EXPECT_TRUE(FeatureStore::RefType(r2).offset() > FeatureStore::RefType(r1).offset()); - EXPECT_EQUAL(0u, FeatureStore::RefType(r1).bufferId()); + EXPECT_EQ(0u, FeatureStore::RefType(r1).bufferId()); LOG(info, "bits(%" PRIu64 "), ref.offset(%zu), ref.bufferId(%u)", r.second, FeatureStore::RefType(r2).offset(), FeatureStore::RefType(r2).bufferId()); fs.getFeatures(1, r2, act); - EXPECT_TRUE(assertFeatures(f, act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(f, act)); } } - -void -Test::requireThatAddFeaturesTriggersChangeOfBuffer() +TEST_F(FeatureStoreTest, add_features_triggers_change_of_buffer) { - FeatureStore fs(getSchema()); size_t cnt = 1; DocIdAndFeatures act; uint32_t lastId = 0; @@ -185,7 +171,7 @@ Test::requireThatAddFeaturesTriggersChangeOfBuffer() DocIdAndFeatures f = getFeatures(numOccs, 1, numOccs + 1); std::pair<EntryRef, uint64_t> r = fs.addFeatures(0, f); fs.getFeatures(0, r.first, act); - EXPECT_TRUE(assertFeatures(f, act)); + ASSERT_NO_FATAL_FAILURE(assertFeatures(f, act)); uint32_t bufferId = FeatureStore::RefType(r.first).bufferId(); if (bufferId > lastId) { LOG(info, @@ -197,36 +183,10 @@ Test::requireThatAddFeaturesTriggersChangeOfBuffer() break; } } - EXPECT_EQUAL(1u, lastId); + EXPECT_EQ(1u, lastId); LOG(info, "Added %zu feature sets in 1 buffer", cnt); } - -Test::Test() - : _schema() -{ - _schema.addIndexField(Schema::IndexField("f0", DataType::STRING)); - _schema.addIndexField(Schema::IndexField("f1", DataType::STRING, CollectionType::WEIGHTEDSET)); } - -int -Test::Main() -{ - TEST_INIT("feature_store_test"); - - requireThatFeaturesCanBeAddedAndRetrieved(); - requireThatNextWordsAreWorking(); - requireThatAddFeaturesTriggersChangeOfBuffer(); - - TEST_DONE(); -} - - -} - - -} - - -TEST_APPHOOK(search::memoryindex::Test); +GTEST_MAIN_RUN_ALL_TESTS() |