summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/documentdb/documentdbconfig
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahoo-inc.com>2017-02-16 09:20:40 +0000
committerGeir Storli <geirst@yahoo-inc.com>2017-02-16 09:20:40 +0000
commit6b189b0f39df2ca1a33811f86e7b4ab8e8985e12 (patch)
treed23abe63b60d8cc99524f498be0b4b957573c972 /searchcore/src/tests/proton/documentdb/documentdbconfig
parentd7aed85e7b24038429593d82b5d4c9d3f5519984 (diff)
Extend test for makeReplayConfig() to include ranking constants and imported fields.
Diffstat (limited to 'searchcore/src/tests/proton/documentdb/documentdbconfig')
-rw-r--r--searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp114
1 files changed, 80 insertions, 34 deletions
diff --git a/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp b/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
index 859e54dec5a..21c211f4a73 100644
--- a/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/documentdbconfig/documentdbconfig_test.cpp
@@ -4,54 +4,100 @@
#include <vespa/searchcore/proton/test/documentdb_config_builder.h>
#include <vespa/vespalib/testkit/testapp.h>
#include <vespa/config-rank-profiles.h>
+#include <vespa/config-imported-fields.h>
+#include <vespa/config-attributes.h>
using namespace document;
using namespace proton;
-using namespace search;
using namespace search::index;
+using namespace search;
using namespace vespa::config::search;
-using std::shared_ptr;
+using proton::matching::RankingConstants;
using std::make_shared;
+using std::shared_ptr;
using vespa::config::search::core::RankingConstantsConfig;
-typedef shared_ptr<DocumentDBConfig> DDBCSP;
+using ConfigSP = shared_ptr<DocumentDBConfig>;
-namespace
-{
+class MyConfigBuilder {
+private:
+ test::DocumentDBConfigBuilder _builder;
-DDBCSP
-getConfig(int64_t generation, const Schema::SP &schema,
- shared_ptr<DocumentTypeRepo> repo,
- const RankProfilesConfig &rankProfiles)
-{
- return test::DocumentDBConfigBuilder(generation, schema, "client", "test").
- repo(repo).rankProfiles(make_shared<RankProfilesConfig>(rankProfiles)).build();
-}
+public:
+ MyConfigBuilder(int64_t generation, const Schema::SP &schema, const DocumentTypeRepo::SP &repo)
+ : _builder(generation, schema, "client", "test")
+ {
+ _builder.repo(repo);
+ }
+ MyConfigBuilder &addRankProfile() {
+ RankProfilesConfigBuilder builder;
+ builder.rankprofile.resize(1);
+ RankProfilesConfigBuilder::Rankprofile &profile = builder.rankprofile.back();
+ profile.name = "my_profile";
+ _builder.rankProfiles(make_shared<RankProfilesConfig>(builder));
+ return *this;
+ }
+ MyConfigBuilder &addRankingConstant() {
+ RankingConstants::Vector constants = {{"my_name", "my_type", "my_path"}};
+ _builder.rankingConstants(make_shared<RankingConstants>(constants));
+ return *this;
+ }
+ MyConfigBuilder &addImportedField() {
+ ImportedFieldsConfigBuilder builder;
+ builder.attribute.resize(1);
+ ImportedFieldsConfigBuilder::Attribute &attribute = builder.attribute.back();
+ attribute.name = "my_name";
+ attribute.referencefield = "my_ref";
+ attribute.targetfield = "my_target";
+ _builder.importedFields(make_shared<ImportedFieldsConfig>(builder));
+ return *this;
+ }
+ MyConfigBuilder &addAttribute() {
+ AttributesConfigBuilder builder;
+ builder.attribute.resize(1);
+ AttributesConfigBuilder::Attribute &attribute = builder.attribute.back();
+ attribute.name = "my_attribute";
+ _builder.attributes(make_shared<AttributesConfig>(builder));
+ return *this;
+ }
+ ConfigSP build() {
+ return _builder.build();
+ }
+};
-}
+struct Fixture {
+ Schema::SP schema;
+ DocumentTypeRepo::SP repo;
+ ConfigSP basicCfg;
+ ConfigSP fullCfg;
+ ConfigSP replayCfg;
+ ConfigSP nullCfg;
+ Fixture()
+ : schema(make_shared<Schema>()),
+ repo(make_shared<DocumentTypeRepo>()),
+ basicCfg(),
+ fullCfg(),
+ replayCfg(),
+ nullCfg()
+ {
+ basicCfg = MyConfigBuilder(4, schema, repo).addAttribute().build();
+ fullCfg = MyConfigBuilder(4, schema, repo).addAttribute().addRankProfile().addRankingConstant().addImportedField().build();
+ replayCfg = DocumentDBConfig::makeReplayConfig(fullCfg);
+ }
+};
-TEST("Test that makeReplayConfig drops unneeded configs")
+TEST_F("require that makeReplayConfig() drops unneeded configs", Fixture)
{
- RankProfilesConfigBuilder rp;
using DDBC = DocumentDBConfig;
- shared_ptr<DocumentTypeRepo> repo(make_shared<DocumentTypeRepo>());
- Schema::SP schema(make_shared<Schema>());
- DDBCSP cfg0 = getConfig(4, schema, repo, rp);
- rp.rankprofile.resize(1);
- RankProfilesConfigBuilder::Rankprofile &rpr = rp.rankprofile.back();
- rpr.name = "dummy";
- DDBCSP cfg1 = getConfig(4, schema, repo, rp);
- EXPECT_FALSE(*cfg0 == *cfg1);
- DDBCSP cfg2 = DocumentDBConfig::makeReplayConfig(cfg1);
- EXPECT_TRUE(*cfg0 == *cfg2);
- EXPECT_TRUE(cfg0->getOriginalConfig().get() == nullptr);
- EXPECT_TRUE(cfg1->getOriginalConfig().get() == nullptr);
- EXPECT_TRUE(cfg2->getOriginalConfig().get() == cfg1.get());
- EXPECT_TRUE(DDBC::preferOriginalConfig(cfg0).get() == cfg0.get());
- EXPECT_TRUE(DDBC::preferOriginalConfig(cfg1).get() == cfg1.get());
- EXPECT_TRUE(DDBC::preferOriginalConfig(cfg2).get() == cfg1.get());
- DDBCSP cfg3;
- EXPECT_TRUE(DDBC::preferOriginalConfig(cfg3).get() == nullptr);
+ EXPECT_FALSE(*f.basicCfg == *f.fullCfg);
+ EXPECT_TRUE(*f.basicCfg == *f.replayCfg);
+ EXPECT_TRUE(f.basicCfg->getOriginalConfig().get() == nullptr);
+ EXPECT_TRUE(f.fullCfg->getOriginalConfig().get() == nullptr);
+ EXPECT_TRUE(f.replayCfg->getOriginalConfig().get() == f.fullCfg.get());
+ EXPECT_TRUE(DDBC::preferOriginalConfig(f.basicCfg).get() == f.basicCfg.get());
+ EXPECT_TRUE(DDBC::preferOriginalConfig(f.fullCfg).get() == f.fullCfg.get());
+ EXPECT_TRUE(DDBC::preferOriginalConfig(f.replayCfg).get() == f.fullCfg.get());
+ EXPECT_TRUE(DDBC::preferOriginalConfig(f.nullCfg).get() == nullptr);
}
TEST_MAIN() { TEST_RUN_ALL(); }