#include <auth/statistics_items.h>
#include <auth/datasrc_config.h>
+#include <config/tests/fake_session.h>
+#include <config/ccsession.h>
+
#include <util/unittests/mock_socketsession.h>
#include <dns/tests/unittest_util.h>
#include <testutils/dnsmessage_test.h>
void
updateInMemory(AuthSrv& server, const char* origin, const char* filename,
- bool with_static = true)
+ bool with_static = true, bool mapped = false)
{
string spec_txt = "{"
"\"IN\": [{"
" \"type\": \"MasterFiles\","
" \"params\": {"
" \"" + string(origin) + "\": \"" + string(filename) + "\""
- " },"
+ " }," +
+ string(mapped ? "\"cache-type\": \"mapped\"," : "") +
" \"cache-enable\": true"
"}]";
if (with_static) {
sendCommand(server, "loadzone", args, 0);
}
+// Test that the auth server subscribes to the segment readers group when
+// there's a remotely mapped segment.
+TEST_F(AuthSrvTest, postReconfigure) {
+ FakeSession session(ElementPtr(new ListElement),
+ ElementPtr(new ListElement),
+ ElementPtr(new ListElement));
+ const string specfile(string(TEST_OWN_DATA_DIR) + "/spec.spec");
+ session.getMessages()->add(isc::config::createAnswer());
+ isc::config::ModuleCCSession mccs(specfile, session, NULL, NULL, false,
+ false);
+ server.setConfigSession(&mccs);
+ // First, no lists are there, so no reason to subscribe
+ server.listsReconfigured();
+ EXPECT_FALSE(session.haveSubscription("SegmentReader", "*"));
+ // Enable remote segment
+ updateInMemory(server, "example.", CONFIG_INMEMORY_EXAMPLE, false, true);
+ {
+ DataSrcClientsMgr &mgr(server.getDataSrcClientsMgr());
+ DataSrcClientsMgr::Holder holder(mgr);
+ EXPECT_EQ(SEGMENT_WAITING, holder.findClientList(RRClass::IN())->
+ getStatus()[0].getSegmentState());
+ }
+ server.listsReconfigured();
+ EXPECT_TRUE(session.haveSubscription("SegmentReader", "*"));
+}
+
}