// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include LOG_SETUP("documentdbconfig_test"); #include #include using namespace document; using namespace proton; using namespace search; using namespace search::index; using namespace vespa::config::search; using std::shared_ptr; using std::make_shared; using vespa::config::search::core::RankingConstantsConfig; typedef shared_ptr DDBCSP; namespace { DDBCSP getConfig(int64_t generation, const Schema::SP &schema, shared_ptr repo, const RankProfilesConfig &rankProfiles) { return make_shared( generation, make_shared(rankProfiles), make_shared(), make_shared(), make_shared(), make_shared(), make_shared(), make_shared(), make_shared(), repo, make_shared(), schema, make_shared(), "client", "test"); } } TEST("Test that makeReplayConfig drops unneeded configs") { RankProfilesConfigBuilder rp; using DDBC = DocumentDBConfig; shared_ptr repo(make_shared()); Schema::SP schema(make_shared()); 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); } TEST_MAIN() { TEST_RUN_ALL(); }