From: Michal 'vorner' Vaner Date: Mon, 25 Jun 2012 18:37:12 +0000 (+0200) Subject: [2044] Create the cache when requested X-Git-Tag: trac2351_base~196^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6d84b65cd4206e960b441fa47dff7c6b1b3ced6d;p=thirdparty%2Fkea.git [2044] Create the cache when requested But it is not yet filled up --- diff --git a/src/lib/datasrc/client_list.cc b/src/lib/datasrc/client_list.cc index d1d47f82cc..dd39c3b5b0 100644 --- a/src/lib/datasrc/client_list.cc +++ b/src/lib/datasrc/client_list.cc @@ -38,8 +38,7 @@ ConfigurableClientList::DataSourceInfo::DataSourceInfo( } void -ConfigurableClientList::configure(const Element& config, bool) { - // TODO: Implement the cache +ConfigurableClientList::configure(const Element& config, bool allowCache) { // TODO: Implement recycling from the old configuration. size_t i(0); // Outside of the try to be able to access it in the catch try { @@ -61,9 +60,12 @@ ConfigurableClientList::configure(const Element& config, bool) { // Ask the factory to create the data source for us const DataSourcePair ds(this->getDataSourceClient(type, paramConf)); + const bool wantCache(allowCache && + dconf->contains("cache-enable") && + dconf->get("cache-enable")->boolValue()); // And put it into the vector new_data_sources.push_back(DataSourceInfo(ds.first, ds.second, - false)); + wantCache)); } // If everything is OK up until now, we have the new configuration // ready. So just put it there and let the old one die when we exit diff --git a/src/lib/datasrc/tests/client_list_unittest.cc b/src/lib/datasrc/tests/client_list_unittest.cc index 608ccc7706..3d55c49e00 100644 --- a/src/lib/datasrc/tests/client_list_unittest.cc +++ b/src/lib/datasrc/tests/client_list_unittest.cc @@ -166,7 +166,6 @@ public: config_elem_(Element::fromJSON("[" "{" " \"type\": \"test_type\"," - " \"cache\": \"off\"," " \"params\": {}" "}]")) { @@ -472,4 +471,48 @@ TEST_F(ListTest, dataSrcError) { checkDS(0, "test_type", "{}", false); } +// Check we can get the cache +TEST_F(ListTest, configureCacheEmpty) { + ConstElementPtr elem(Element::fromJSON("[" + "{" + " \"type\": \"type1\"," + " \"cache-enable\": true," + " \"cache-zones\": []," + " \"params\": {}" + "}," + "{" + " \"type\": \"type2\"," + " \"cache-enable\": false," + " \"cache-zones\": []," + " \"params\": {}" + "}]" + )); + list_->configure(*elem, true); + EXPECT_EQ(2, list_->getDataSources().size()); + checkDS(0, "type1", "{}", true); + checkDS(1, "type2", "{}", false); +} + +// But no cache if we disallow it globally +TEST_F(ListTest, configureCacheDisabled) { + ConstElementPtr elem(Element::fromJSON("[" + "{" + " \"type\": \"type1\"," + " \"cache-enable\": true," + " \"cache-zones\": []," + " \"params\": {}" + "}," + "{" + " \"type\": \"type2\"," + " \"cache-enable\": false," + " \"cache-zones\": []," + " \"params\": {}" + "}]" + )); + list_->configure(*elem, false); + EXPECT_EQ(2, list_->getDataSources().size()); + checkDS(0, "type1", "{}", false); + checkDS(1, "type2", "{}", false); +} + }