From: Wlodek Wencel Date: Mon, 10 Feb 2020 14:17:36 +0000 (+0100) Subject: [#1021] unit tests for unique address X-Git-Tag: Kea-1.7.5~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9828948d0ab00ae35cd406a4e81d92074826ffb8;p=thirdparty%2Fkea.git [#1021] unit tests for unique address --- diff --git a/src/bin/perfdhcp/test_control.h b/src/bin/perfdhcp/test_control.h index aec5488e0a..f048132069 100644 --- a/src/bin/perfdhcp/test_control.h +++ b/src/bin/perfdhcp/test_control.h @@ -300,6 +300,14 @@ public: /// in packet templates and their contents. void printTemplates() const; + std::deque getAllUniqueAddrReply() { + return unique_reply_address_; + } + + std::deque 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 @@ -619,13 +627,6 @@ protected: } } - std::deque getAllUniqueAddrReply() { - return unique_reply_address_; - } - - std::deque getAllUniqueAddrAdvert() { - return unique_address_; - } /// \brief Process received DHCPv6 packet. /// /// Method performs processing of the received DHCPv6 packet, diff --git a/src/bin/perfdhcp/tests/basic_scen_unittest.cc b/src/bin/perfdhcp/tests/basic_scen_unittest.cc index a5bde10d7d..29aa5390da 100644 --- a/src/bin/perfdhcp/tests/basic_scen_unittest.cc +++ b/src/bin/perfdhcp/tests/basic_scen_unittest.cc @@ -241,6 +241,33 @@ TEST_F(BasicScenTest, Packet4Exchange) { 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; diff --git a/src/bin/perfdhcp/tests/command_options_unittest.cc b/src/bin/perfdhcp/tests/command_options_unittest.cc index 31afddf289..f80b69db16 100644 --- a/src/bin/perfdhcp/tests/command_options_unittest.cc +++ b/src/bin/perfdhcp/tests/command_options_unittest.cc @@ -238,6 +238,7 @@ TEST_F(CommandOptionsTest, Defaults) { 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()); @@ -263,6 +264,12 @@ TEST_F(CommandOptionsTest, HelpVersion) { 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"));