}
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 {
// 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
config_elem_(Element::fromJSON("["
"{"
" \"type\": \"test_type\","
- " \"cache\": \"off\","
" \"params\": {}"
"}]"))
{
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);
+}
+
}