diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2017-02-16 09:20:40 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2017-02-16 09:20:40 +0000 |
commit | 6b189b0f39df2ca1a33811f86e7b4ab8e8985e12 (patch) | |
tree | d23abe63b60d8cc99524f498be0b4b957573c972 /searchcore/src/tests/proton/documentdb/documentdbconfig | |
parent | d7aed85e7b24038429593d82b5d4c9d3f5519984 (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.cpp | 114 |
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(); } |