/// in packet templates and their contents.
void printTemplates() const;
+ std::deque <isc::asiolink::IOAddress> getAllUniqueAddrReply() {
+ return unique_reply_address_;
+ }
+
+ std::deque <isc::asiolink::IOAddress> getAllUniqueAddrAdvert() {
+ return unique_address_;
+ }
+
// We would really like following methods and members to be private but
// they have to be accessible for unit-testing. Another, possibly better,
// solution is to make this class friend of test class but this is not
}
}
- std::deque <isc::asiolink::IOAddress> getAllUniqueAddrReply() {
- return unique_reply_address_;
- }
-
- std::deque <isc::asiolink::IOAddress> getAllUniqueAddrAdvert() {
- return unique_address_;
- }
/// \brief Process received DHCPv6 packet.
///
/// Method performs processing of the received DHCPv6 packet,
EXPECT_GE(bs.tc_.getStatsMgr().getRcvdPacketsNum(ExchangeType::RA), 10);
}
+TEST_F(BasicScenTest, Address4Unique) {
+ // send more than 1 discover+request but with the same address
+ // counter of a unique addresses should be 1
+ CommandOptions opt;
+ processCmdLine(opt, "perfdhcp -a -l fake -r 10 -n 10 -g single 127.0.0.1");
+ NakedBasicScen bs(opt);
+ bs.run();
+ EXPECT_GE(bs.fake_sock_.sent_cnt_, 5); // Discovery + Request
+ EXPECT_GE(bs.tc_.getStatsMgr().getRcvdPacketsNum(ExchangeType::DO), 1);
+ EXPECT_GE(bs.tc_.getStatsMgr().getRcvdPacketsNum(ExchangeType::RA), 1);
+ EXPECT_GE(bs.tc_.getAllUniqueAddrReply().size(), 1);
+ EXPECT_GE(bs.tc_.getAllUniqueAddrAdvert().size(), 1);
+}
+
+TEST_F(BasicScenTest, Address6Unique) {
+ // send more than 1 solicit+request but with the same address
+ // counter of a unique addresses should be 1
+ CommandOptions opt;
+ processCmdLine(opt, "perfdhcp -6 -a -l fake -r 10 -n 10 -g single ::1");
+ NakedBasicScen bs(opt);
+ bs.run();
+ EXPECT_GE(bs.fake_sock_.sent_cnt_, 5);
+ EXPECT_GE(bs.tc_.getStatsMgr().getRcvdPacketsNum(ExchangeType::SA), 1);
+ EXPECT_GE(bs.tc_.getStatsMgr().getRcvdPacketsNum(ExchangeType::RR), 1);
+ EXPECT_GE(bs.tc_.getAllUniqueAddrReply().size(), 1);
+ EXPECT_GE(bs.tc_.getAllUniqueAddrAdvert().size(), 1);
+}
TEST_F(BasicScenTest, Packet4ExchangeMaxDrop10Proc) {
CommandOptions opt;
EXPECT_FALSE(opt.isBroadcast());
EXPECT_FALSE(opt.isRapidCommit());
EXPECT_FALSE(opt.isUseFirst());
+ EXPECT_FALSE(opt.getAddrUniqe());
EXPECT_EQ(0, opt.getTemplateFiles().size());
EXPECT_EQ(0, opt.getTransactionIdOffset().size());
EXPECT_EQ(0, opt.getRandomOffset().size());
EXPECT_FALSE(process(opt, "perfdhcp -l ethx all"));
}
+TEST_F(CommandOptionsTest, CheckAddressUniqueness) {
+ CommandOptions opt;
+ EXPECT_NO_THROW(process(opt, "perfdhcp -6 -a -l ethx all"));
+ EXPECT_TRUE(opt.getAddrUniqe());
+}
+
TEST_F(CommandOptionsTest, UseFirst) {
CommandOptions opt;
EXPECT_NO_THROW(process(opt, "perfdhcp -1 -B -l ethx all"));