|
@@ -16,8 +16,7 @@
|
|
|
|
|
|
#include "datasrc_util.h"
|
|
#include "datasrc_util.h"
|
|
|
|
|
|
-#include <util/threads/sync.h>
|
|
|
|
-
|
|
|
|
|
|
+#include <auth/auth_srv.h>
|
|
#include <auth/command.h>
|
|
#include <auth/command.h>
|
|
#include <auth/datasrc_config.h>
|
|
#include <auth/datasrc_config.h>
|
|
|
|
|
|
@@ -56,6 +55,7 @@ using namespace isc::datasrc;
|
|
using namespace isc::config;
|
|
using namespace isc::config;
|
|
using namespace isc::util::unittests;
|
|
using namespace isc::util::unittests;
|
|
using namespace isc::testutils;
|
|
using namespace isc::testutils;
|
|
|
|
+using namespace isc::auth;
|
|
using namespace isc::auth::unittest;
|
|
using namespace isc::auth::unittest;
|
|
|
|
|
|
namespace {
|
|
namespace {
|
|
@@ -174,27 +174,26 @@ TEST_F(AuthCommandTest, shutdownIncorrectPID) {
|
|
// zones, and checks the zones are correctly loaded.
|
|
// zones, and checks the zones are correctly loaded.
|
|
void
|
|
void
|
|
zoneChecks(AuthSrv& server) {
|
|
zoneChecks(AuthSrv& server) {
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server.getDataSrcClientListMutex());
|
|
|
|
- EXPECT_EQ(ZoneFinder::SUCCESS, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
- find(Name("ns.test1.example")).finder_->
|
|
|
|
- find(Name("ns.test1.example"), RRType::A())->code);
|
|
|
|
- EXPECT_EQ(ZoneFinder::NXRRSET, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
- find(Name("ns.test1.example")).finder_->
|
|
|
|
- find(Name("ns.test1.example"), RRType::AAAA())->code);
|
|
|
|
- EXPECT_EQ(ZoneFinder::SUCCESS, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
- find(Name("ns.test2.example")).finder_->
|
|
|
|
- find(Name("ns.test2.example"), RRType::A())->code);
|
|
|
|
- EXPECT_EQ(ZoneFinder::NXRRSET, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
- find(Name("ns.test2.example")).finder_->
|
|
|
|
- find(Name("ns.test2.example"), RRType::AAAA())->code);
|
|
|
|
|
|
+ const RRClass rrclass(RRClass::IN());
|
|
|
|
+
|
|
|
|
+ DataSrcClientsMgr::Holder holder(server.getDataSrcClientsMgr());
|
|
|
|
+ EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
|
|
+ holder.findClientList(rrclass)->find(Name("ns.test1.example"))
|
|
|
|
+ .finder_->find(Name("ns.test1.example"), RRType::A())->code);
|
|
|
|
+ EXPECT_EQ(ZoneFinder::NXRRSET,
|
|
|
|
+ holder.findClientList(rrclass)->find(Name("ns.test1.example")).
|
|
|
|
+ finder_->find(Name("ns.test1.example"), RRType::AAAA())->code);
|
|
|
|
+ EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
|
|
+ holder.findClientList(rrclass)->find(Name("ns.test2.example")).
|
|
|
|
+ finder_->find(Name("ns.test2.example"), RRType::A())->code);
|
|
|
|
+ EXPECT_EQ(ZoneFinder::NXRRSET,
|
|
|
|
+ holder.findClientList(rrclass)->find(Name("ns.test2.example")).
|
|
|
|
+ finder_->find(Name("ns.test2.example"), RRType::AAAA())->code);
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
void
|
|
installDataSrcClientLists(AuthSrv& server, ClientListMapPtr lists) {
|
|
installDataSrcClientLists(AuthSrv& server, ClientListMapPtr lists) {
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server.getDataSrcClientListMutex());
|
|
|
|
- server.swapDataSrcClientLists(lists);
|
|
|
|
|
|
+ server.getDataSrcClientsMgr().setDataSrcClientLists(lists);
|
|
}
|
|
}
|
|
|
|
|
|
void
|
|
void
|
|
@@ -223,22 +222,24 @@ configureZones(AuthSrv& server) {
|
|
|
|
|
|
void
|
|
void
|
|
newZoneChecks(AuthSrv& server) {
|
|
newZoneChecks(AuthSrv& server) {
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server.getDataSrcClientListMutex());
|
|
|
|
- EXPECT_EQ(ZoneFinder::SUCCESS, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ const RRClass rrclass(RRClass::IN());
|
|
|
|
+
|
|
|
|
+ DataSrcClientsMgr::Holder holder(server.getDataSrcClientsMgr());
|
|
|
|
+ EXPECT_EQ(ZoneFinder::SUCCESS, holder.findClientList(rrclass)->
|
|
find(Name("ns.test1.example")).finder_->
|
|
find(Name("ns.test1.example")).finder_->
|
|
find(Name("ns.test1.example"), RRType::A())->code);
|
|
find(Name("ns.test1.example"), RRType::A())->code);
|
|
|
|
+
|
|
// now test1.example should have ns/AAAA
|
|
// now test1.example should have ns/AAAA
|
|
- EXPECT_EQ(ZoneFinder::SUCCESS, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ EXPECT_EQ(ZoneFinder::SUCCESS, holder.findClientList(rrclass)->
|
|
find(Name("ns.test1.example")).finder_->
|
|
find(Name("ns.test1.example")).finder_->
|
|
find(Name("ns.test1.example"), RRType::AAAA())->code);
|
|
find(Name("ns.test1.example"), RRType::AAAA())->code);
|
|
|
|
|
|
// test2.example shouldn't change
|
|
// test2.example shouldn't change
|
|
- EXPECT_EQ(ZoneFinder::SUCCESS, server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ EXPECT_EQ(ZoneFinder::SUCCESS, holder.findClientList(rrclass)->
|
|
find(Name("ns.test2.example")).finder_->
|
|
find(Name("ns.test2.example")).finder_->
|
|
find(Name("ns.test2.example"), RRType::A())->code);
|
|
find(Name("ns.test2.example"), RRType::A())->code);
|
|
EXPECT_EQ(ZoneFinder::NXRRSET,
|
|
EXPECT_EQ(ZoneFinder::NXRRSET,
|
|
- server.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ holder.findClientList(rrclass)->
|
|
find(Name("ns.test2.example")).finder_->
|
|
find(Name("ns.test2.example")).finder_->
|
|
find(Name("ns.test2.example"), RRType::AAAA())->code);
|
|
find(Name("ns.test2.example"), RRType::AAAA())->code);
|
|
}
|
|
}
|
|
@@ -284,11 +285,11 @@ TEST_F(AuthCommandTest,
|
|
installDataSrcClientLists(server_, configureDataSource(config));
|
|
installDataSrcClientLists(server_, configureDataSource(config));
|
|
|
|
|
|
{
|
|
{
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server_.getDataSrcClientListMutex());
|
|
|
|
|
|
+ DataSrcClientsMgr::Holder holder(server_.getDataSrcClientsMgr());
|
|
|
|
+
|
|
// Check that the A record at www.example.org does not exist
|
|
// Check that the A record at www.example.org does not exist
|
|
EXPECT_EQ(ZoneFinder::NXDOMAIN,
|
|
EXPECT_EQ(ZoneFinder::NXDOMAIN,
|
|
- server_.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ holder.findClientList(RRClass::IN())->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("www.example.org"), RRType::A())->code);
|
|
find(Name("www.example.org"), RRType::A())->code);
|
|
|
|
|
|
@@ -309,7 +310,7 @@ TEST_F(AuthCommandTest,
|
|
sql_updater->commit();
|
|
sql_updater->commit();
|
|
|
|
|
|
EXPECT_EQ(ZoneFinder::NXDOMAIN,
|
|
EXPECT_EQ(ZoneFinder::NXDOMAIN,
|
|
- server_.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ holder.findClientList(RRClass::IN())->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("www.example.org"), RRType::A())->code);
|
|
find(Name("www.example.org"), RRType::A())->code);
|
|
}
|
|
}
|
|
@@ -321,11 +322,10 @@ TEST_F(AuthCommandTest,
|
|
checkAnswer(0, "Successful load");
|
|
checkAnswer(0, "Successful load");
|
|
|
|
|
|
{
|
|
{
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server_.getDataSrcClientListMutex());
|
|
|
|
|
|
+ DataSrcClientsMgr::Holder holder(server_.getDataSrcClientsMgr());
|
|
// And now it should be present too.
|
|
// And now it should be present too.
|
|
EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
- server_.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ holder.findClientList(RRClass::IN())->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("www.example.org"), RRType::A())->code);
|
|
find(Name("www.example.org"), RRType::A())->code);
|
|
}
|
|
}
|
|
@@ -336,11 +336,10 @@ TEST_F(AuthCommandTest,
|
|
checkAnswer(1, "example.com");
|
|
checkAnswer(1, "example.com");
|
|
|
|
|
|
{
|
|
{
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server_.getDataSrcClientListMutex());
|
|
|
|
|
|
+ DataSrcClientsMgr::Holder holder(server_.getDataSrcClientsMgr());
|
|
// The previous zone is not hurt in any way
|
|
// The previous zone is not hurt in any way
|
|
EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
- server_.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ holder.findClientList(RRClass::IN())->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org"), RRType::SOA())->code);
|
|
find(Name("example.org"), RRType::SOA())->code);
|
|
}
|
|
}
|
|
@@ -359,11 +358,10 @@ TEST_F(AuthCommandTest,
|
|
Element::fromJSON("{\"origin\": \"example.com\"}"));
|
|
Element::fromJSON("{\"origin\": \"example.com\"}"));
|
|
checkAnswer(1, "Unreadable");
|
|
checkAnswer(1, "Unreadable");
|
|
|
|
|
|
- isc::util::thread::Mutex::Locker locker(
|
|
|
|
- server_.getDataSrcClientListMutex());
|
|
|
|
|
|
+ DataSrcClientsMgr::Holder holder(server_.getDataSrcClientsMgr());
|
|
// The previous zone is not hurt in any way
|
|
// The previous zone is not hurt in any way
|
|
EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
EXPECT_EQ(ZoneFinder::SUCCESS,
|
|
- server_.getDataSrcClientList(RRClass::IN())->
|
|
|
|
|
|
+ holder.findClientList(RRClass::IN())->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org")).finder_->
|
|
find(Name("example.org"), RRType::SOA())->code);
|
|
find(Name("example.org"), RRType::SOA())->code);
|
|
}
|
|
}
|