|
@@ -77,9 +77,9 @@ protected:
|
|
|
struct Callback : public AddressRequestCallback {
|
|
|
Callback() : unreachable_count_(0) {}
|
|
|
size_t unreachable_count_;
|
|
|
- vector<IOAddress> successes_;
|
|
|
+ vector<NameserverAddress> successes_;
|
|
|
virtual void unreachable() { unreachable_count_ ++; }
|
|
|
- virtual void success(const IOAddress& address) {
|
|
|
+ virtual void success(const NameserverAddress& address) {
|
|
|
successes_.push_back(address);
|
|
|
}
|
|
|
};
|
|
@@ -163,8 +163,9 @@ protected:
|
|
|
EXPECT_EQ(success_count, callback_->successes_.size());
|
|
|
for (size_t i = 0; i < callback_->successes_.size(); ++ i) {
|
|
|
EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
- callback_->successes_[i]) || IOAddress("2001:db8::1").equal(
|
|
|
- callback_->successes_[i]));
|
|
|
+ callback_->successes_[i].getAddress()) ||
|
|
|
+ IOAddress("2001:db8::1").equal(
|
|
|
+ callback_->successes_[i].getAddress()));
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -230,7 +231,8 @@ TEST_F(ZoneEntryTest, ChangedNS) {
|
|
|
EXPECT_NO_THROW(resolver_->answer(1, ns_name_, RRType::A(),
|
|
|
rdata::in::A("192.0.2.1")));
|
|
|
ASSERT_EQ(1, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[0]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[0].getAddress()));
|
|
|
EXPECT_NO_THROW(resolver_->answer(2, ns_name_, RRType::AAAA(),
|
|
|
rdata::in::AAAA("2001:db8::1")));
|
|
|
EXPECT_EQ(1, callback_->successes_.size());
|
|
@@ -252,7 +254,8 @@ TEST_F(ZoneEntryTest, ChangedNS) {
|
|
|
EXPECT_NO_THROW(resolver_->answer(4, different_name, RRType::A(),
|
|
|
rdata::in::A("192.0.2.2")));
|
|
|
ASSERT_EQ(2, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.2").equal(callback_->successes_[1]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.2").equal(
|
|
|
+ callback_->successes_[1].getAddress()));
|
|
|
|
|
|
// And now, switch back, as it timed out again
|
|
|
zone->addCallback(callback_, ANY_OK);
|
|
@@ -264,7 +267,8 @@ TEST_F(ZoneEntryTest, ChangedNS) {
|
|
|
EXPECT_EQ(7, resolver_->requests.size());
|
|
|
EXPECT_EQ(Fetchable::READY, zone->getState());
|
|
|
ASSERT_EQ(3, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[0]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[0].getAddress()));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -299,8 +303,10 @@ TEST_F(ZoneEntryTest, CallbacksAnswered) {
|
|
|
rdata::in::A("192.0.2.1")));
|
|
|
// Two are answered (ANY and V4)
|
|
|
ASSERT_EQ(2, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[0]));
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[1]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[0].getAddress()));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[1].getAddress()));
|
|
|
// None are rejected
|
|
|
EXPECT_EQ(0, callback_->unreachable_count_);
|
|
|
// Answer the IPv6 one as well
|
|
@@ -309,14 +315,16 @@ TEST_F(ZoneEntryTest, CallbacksAnswered) {
|
|
|
// This should answer the third callback
|
|
|
EXPECT_EQ(0, callback_->unreachable_count_);
|
|
|
ASSERT_EQ(3, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("2001:db8::1").equal(callback_->successes_[2]));
|
|
|
+ EXPECT_TRUE(IOAddress("2001:db8::1").equal(
|
|
|
+ callback_->successes_[2].getAddress()));
|
|
|
// It should think it is ready
|
|
|
EXPECT_EQ(Fetchable::READY, zone->getState());
|
|
|
// When we ask something more, it should be answered right away
|
|
|
zone->addCallback(callback_, V4_ONLY);
|
|
|
EXPECT_EQ(3, resolver_->requests.size());
|
|
|
ASSERT_EQ(4, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[3]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[3].getAddress()));
|
|
|
EXPECT_EQ(0, callback_->unreachable_count_);
|
|
|
}
|
|
|
|
|
@@ -355,8 +363,10 @@ TEST_F(ZoneEntryTest, CallbacksAOnly) {
|
|
|
EXPECT_NO_THROW(resolver_->answer(1, ns_name_, RRType::A(),
|
|
|
rdata::in::A("192.0.2.1")));
|
|
|
ASSERT_EQ(2, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[0]));
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[1]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[0].getAddress()));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[1].getAddress()));
|
|
|
EXPECT_EQ(1, callback_->unreachable_count_);
|
|
|
// Everything arriwed, so we are ready
|
|
|
EXPECT_EQ(Fetchable::READY, zone->getState());
|
|
@@ -364,7 +374,8 @@ TEST_F(ZoneEntryTest, CallbacksAOnly) {
|
|
|
zone->addCallback(callback_, V4_ONLY);
|
|
|
EXPECT_EQ(3, resolver_->requests.size());
|
|
|
ASSERT_EQ(3, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[2]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[2].getAddress()));
|
|
|
EXPECT_EQ(1, callback_->unreachable_count_);
|
|
|
|
|
|
zone->addCallback(callback_, V6_ONLY);
|
|
@@ -425,8 +436,10 @@ TEST_F(ZoneEntryTest, CallbackTwoNS) {
|
|
|
// The other callbacks should be answered now
|
|
|
EXPECT_EQ(2, callback_->unreachable_count_);
|
|
|
ASSERT_EQ(2, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("2001:db8::1").equal(callback_->successes_[0]));
|
|
|
- EXPECT_TRUE(IOAddress("2001:db8::1").equal(callback_->successes_[1]));
|
|
|
+ EXPECT_TRUE(IOAddress("2001:db8::1").equal(
|
|
|
+ callback_->successes_[0].getAddress()));
|
|
|
+ EXPECT_TRUE(IOAddress("2001:db8::1").equal(
|
|
|
+ callback_->successes_[1].getAddress()));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -518,7 +531,8 @@ TEST_F(ZoneEntryTest, AddressTimeout) {
|
|
|
rdata::in::A("192.0.2.1"), 0));
|
|
|
// It answers, not rejects
|
|
|
ASSERT_EQ(1, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[0]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[0].getAddress()));
|
|
|
EXPECT_EQ(0, callback_->unreachable_count_);
|
|
|
// As well with IPv6
|
|
|
EXPECT_NO_THROW(resolver_->answer(2, ns_name_, RRType::AAAA(),
|
|
@@ -534,7 +548,8 @@ TEST_F(ZoneEntryTest, AddressTimeout) {
|
|
|
rdata::in::A("192.0.2.1"), 0));
|
|
|
EXPECT_EQ(0, callback_->unreachable_count_);
|
|
|
ASSERT_EQ(2, callback_->successes_.size());
|
|
|
- EXPECT_TRUE(IOAddress("192.0.2.1").equal(callback_->successes_[1]));
|
|
|
+ EXPECT_TRUE(IOAddress("192.0.2.1").equal(
|
|
|
+ callback_->successes_[1].getAddress()));
|
|
|
}
|
|
|
|
|
|
/**
|