From: Marcin Siodelski Date: Fri, 9 Aug 2013 14:17:42 +0000 (+0200) Subject: [3082] Set E flag in Option4ClientFqdn unit tests by default. X-Git-Tag: bind10-1.2.0beta1-release~259^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4fbb85cb991a8f3f412c2c386dcbe154fa5f04f2;p=thirdparty%2Fkea.git [3082] Set E flag in Option4ClientFqdn unit tests by default. --- diff --git a/src/lib/dhcp/tests/option4_client_fqdn_unittest.cc b/src/lib/dhcp/tests/option4_client_fqdn_unittest.cc index c53bda45b5..002cc0e424 100644 --- a/src/lib/dhcp/tests/option4_client_fqdn_unittest.cc +++ b/src/lib/dhcp/tests/option4_client_fqdn_unittest.cc @@ -40,7 +40,7 @@ TEST(Option4ClientFqdnTest, constructEmptyName) { // Create an instance of the source option. boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + option.reset(new Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "", Option4ClientFqdn::PARTIAL)) @@ -49,18 +49,19 @@ TEST(Option4ClientFqdnTest, constructEmptyName) { EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_TRUE(option->getDomainName().empty()); EXPECT_EQ(Option4ClientFqdn::PARTIAL, option->getDomainNameType()); // Constructor should not accept empty fully qualified domain name. - EXPECT_THROW(Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + EXPECT_THROW(Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "", Option4ClientFqdn::FULL), InvalidOption4ClientFqdnDomainName); // This check is similar to previous one, but using domain-name comprising // a single space character. This should be treated as empty domain-name. - EXPECT_THROW(Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + EXPECT_THROW(Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), " ", Option4ClientFqdn::FULL), @@ -68,11 +69,12 @@ TEST(Option4ClientFqdnTest, constructEmptyName) { // Try different constructor. ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_O, + option.reset(new Option4ClientFqdn(FLAG_O | FLAG_E, Option4ClientFqdn::RCODE_SERVER())) ); ASSERT_TRUE(option); EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_O)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_S)); EXPECT_TRUE(option->getDomainName().empty()); @@ -86,7 +88,7 @@ TEST(Option4ClientFqdnTest, copyConstruct) { // Create an instance of the source option. boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + option.reset(new Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "myhost.example.com", Option4ClientFqdn::FULL)) @@ -107,6 +109,7 @@ TEST(Option4ClientFqdnTest, copyConstruct) { // Verify that all parameters have been copied to the target object. EXPECT_TRUE(option_copy->getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option_copy->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_FALSE(option_copy->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_FALSE(option_copy->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_EQ("myhost.example.com.", option_copy->getDomainName()); @@ -117,7 +120,7 @@ TEST(Option4ClientFqdnTest, copyConstruct) { // Create an option with different parameters. ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_O, + option.reset(new Option4ClientFqdn(FLAG_O | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "example", Option4ClientFqdn::PARTIAL)) @@ -133,6 +136,7 @@ TEST(Option4ClientFqdnTest, copyConstruct) { option.reset(); EXPECT_FALSE(option_copy->getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option_copy->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_TRUE(option_copy->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_FALSE(option_copy->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_EQ("example", option_copy->getDomainName()); @@ -142,7 +146,7 @@ TEST(Option4ClientFqdnTest, copyConstruct) { // This test verifies that the option in the on-wire format is parsed correctly. TEST(Option4ClientFqdnTest, constructFromWire) { const uint8_t in_data[] = { - FLAG_S, // flags + FLAG_S | FLAG_E, // flags 0, // RCODE1 0, // RCODE2 6, 109, 121, 104, 111, 115, 116, // myhost. @@ -160,6 +164,7 @@ TEST(Option4ClientFqdnTest, constructFromWire) { ASSERT_TRUE(option); EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_EQ("myhost.example.com.", option->getDomainName()); @@ -185,7 +190,7 @@ TEST(Option4ClientFqdnTest, constructFromWireTruncated) { // domain-name is parsed correctly. TEST(Option4ClientFqdnTest, constructFromWirePartial) { const uint8_t in_data[] = { - FLAG_N, // flags + FLAG_N | FLAG_E, // flags 255, // RCODE1 255, // RCODE2 6, 109, 121, 104, 111, 115, 116 // myhost @@ -201,6 +206,7 @@ TEST(Option4ClientFqdnTest, constructFromWirePartial) { ASSERT_TRUE(option); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_EQ("myhost", option->getDomainName()); @@ -242,12 +248,12 @@ TEST(Option4ClientFqdnTest, assignment) { // assignment test. If these asserts do not fail, we can create options // for the assignment test, do not surround them with asserts and be sure // they will not throw. - ASSERT_NO_THROW(Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + ASSERT_NO_THROW(Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "myhost.example.com", Option4ClientFqdn::FULL)); - ASSERT_NO_THROW(Option4ClientFqdn(Option4ClientFqdn::FLAG_N, + ASSERT_NO_THROW(Option4ClientFqdn(FLAG_N | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "myhost", Option4ClientFqdn::PARTIAL)); @@ -255,26 +261,28 @@ TEST(Option4ClientFqdnTest, assignment) { // Create options with the same parameters as tested above. // Create first option. - Option4ClientFqdn option(Option4ClientFqdn::FLAG_S, + Option4ClientFqdn option(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "myhost.example.com", Option4ClientFqdn::FULL); // Verify that the values have been set correctly. ASSERT_TRUE(option.getFlag(Option4ClientFqdn::FLAG_S)); + ASSERT_TRUE(option.getFlag(Option4ClientFqdn::FLAG_E)); ASSERT_FALSE(option.getFlag(Option4ClientFqdn::FLAG_O)); ASSERT_FALSE(option.getFlag(Option4ClientFqdn::FLAG_N)); ASSERT_EQ("myhost.example.com.", option.getDomainName()); ASSERT_EQ(Option4ClientFqdn::FULL, option.getDomainNameType()); // Create a second option. - Option4ClientFqdn option2(Option4ClientFqdn::FLAG_N, + Option4ClientFqdn option2(FLAG_N | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "myhost", Option4ClientFqdn::PARTIAL); // Verify tha the values have been set correctly. ASSERT_FALSE(option2.getFlag(Option4ClientFqdn::FLAG_S)); + ASSERT_TRUE(option2.getFlag(Option4ClientFqdn::FLAG_E)); ASSERT_FALSE(option2.getFlag(Option4ClientFqdn::FLAG_O)); ASSERT_TRUE(option2.getFlag(Option4ClientFqdn::FLAG_N)); ASSERT_EQ("myhost", option2.getDomainName()); @@ -286,6 +294,7 @@ TEST(Option4ClientFqdnTest, assignment) { // Both options should now have the same values. EXPECT_TRUE(option2.getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option2.getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_FALSE(option2.getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_FALSE(option2.getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_EQ(option.getDomainName(), option2.getDomainName()); @@ -340,11 +349,11 @@ TEST(Option4ClientFqdnTest, constructInvalidName) { // First, check that constructor does not throw when valid domain name // is specified. That way we eliminate the possibility that constructor // always throws exception. - ASSERT_NO_THROW(Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + ASSERT_NO_THROW(Option4ClientFqdn(FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com")); // Specify invalid domain name and expect that exception is thrown. - EXPECT_THROW(Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + EXPECT_THROW(Option4ClientFqdn(FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "my...host.example.com"), InvalidOption4ClientFqdnDomainName); } @@ -354,7 +363,8 @@ TEST(Option4ClientFqdnTest, constructInvalidName) { TEST(Option4ClientFqdnTest, getFlag) { boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + option.reset(new Option4ClientFqdn(FLAG_E, + Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com")) ); ASSERT_TRUE(option); @@ -372,7 +382,8 @@ TEST(Option4ClientFqdnTest, setFlag) { // Create option instance. Check that constructor doesn't throw. boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + option.reset(new Option4ClientFqdn(0, + Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com")) ); ASSERT_TRUE(option); @@ -381,6 +392,11 @@ TEST(Option4ClientFqdnTest, setFlag) { ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_S)); ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); + ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_E)); + + // Set E = 1 + ASSERT_NO_THROW(option->setFlag(Option4ClientFqdn::FLAG_E, true)); + ASSERT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); // Set N = 1 ASSERT_NO_THROW(option->setFlag(Option4ClientFqdn::FLAG_N, true)); @@ -395,6 +411,10 @@ TEST(Option4ClientFqdnTest, setFlag) { ASSERT_THROW(option->setFlag(Option4ClientFqdn::FLAG_S, true), InvalidOption4ClientFqdnFlags); + // Set E = 0 + ASSERT_NO_THROW(option->setFlag(Option4ClientFqdn::FLAG_N, false)); + ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); + // Set N = 0 ASSERT_NO_THROW(option->setFlag(Option4ClientFqdn::FLAG_N, false)); ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); @@ -418,7 +438,7 @@ TEST(Option4ClientFqdnTest, setFlag) { true), InvalidOption4ClientFqdnFlags); - flags = 0x14; + flags = 0x18; ASSERT_THROW(option->setFlag(static_cast(flags), true), InvalidOption4ClientFqdnFlags); @@ -429,8 +449,7 @@ TEST(Option4ClientFqdnTest, setFlag) { TEST(Option4ClientFqdnTest, resetFlags) { boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_S | - Option4ClientFqdn::FLAG_O, + option.reset(new Option4ClientFqdn(FLAG_S | FLAG_O | FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com", Option4ClientFqdn::FULL)) @@ -441,6 +460,7 @@ TEST(Option4ClientFqdnTest, resetFlags) { ASSERT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_S)); ASSERT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_O)); ASSERT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); + ASSERT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); option->resetFlags(); @@ -448,6 +468,7 @@ TEST(Option4ClientFqdnTest, resetFlags) { EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_S)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); + EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_E)); } // This test verifies that current domain-name can be replaced with a new @@ -455,7 +476,7 @@ TEST(Option4ClientFqdnTest, resetFlags) { TEST(Option4ClientFqdnTest, setDomainName) { boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + option.reset(new Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_SERVER(), "myhost.example.com", Option4ClientFqdn::FULL)) @@ -491,7 +512,7 @@ TEST(Option4ClientFqdnTest, setDomainName) { TEST(Option4ClientFqdnTest, resetDomainName) { boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_S, + option.reset(new Option4ClientFqdn(FLAG_S | FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com", Option4ClientFqdn::FULL)) @@ -508,7 +529,7 @@ TEST(Option4ClientFqdnTest, resetDomainName) { // This test verifies on-wire format of the option is correctly created. TEST(Option4ClientFqdnTest, pack) { // Create option instance. Check that constructor doesn't throw. - const uint8_t flags = Option4ClientFqdn::FLAG_S; + const uint8_t flags = FLAG_S | FLAG_E; boost::scoped_ptr option; ASSERT_NO_THROW( option.reset(new Option4ClientFqdn(flags, @@ -524,7 +545,7 @@ TEST(Option4ClientFqdnTest, pack) { // Prepare reference data. const uint8_t ref_data[] = { 81, 23, // header - FLAG_S, // flags + FLAG_S | FLAG_E, // flags 0, // RCODE1 0, // RCODE2 6, 109, 121, 104, 111, 115, 116, // myhost. @@ -543,7 +564,7 @@ TEST(Option4ClientFqdnTest, pack) { // is correctly created. TEST(Option4ClientFqdnTest, packPartial) { // Create option instance. Check that constructor doesn't throw. - const uint8_t flags = Option4ClientFqdn::FLAG_S; + const uint8_t flags = FLAG_S | FLAG_E; boost::scoped_ptr option; ASSERT_NO_THROW( option.reset(new Option4ClientFqdn(flags, @@ -560,7 +581,7 @@ TEST(Option4ClientFqdnTest, packPartial) { // Prepare reference data. const uint8_t ref_data[] = { 81, 10, // header - FLAG_S, // flags + FLAG_S | FLAG_E, // flags 0, // RCODE1 0, // RCODE2 6, 109, 121, 104, 111, 115, 116 // myhost @@ -579,7 +600,7 @@ TEST(Option4ClientFqdnTest, unpack) { // Create option instance. Check that constructor doesn't throw. boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_O, + option.reset(new Option4ClientFqdn(FLAG_O | FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "myhost", Option4ClientFqdn::PARTIAL)) @@ -591,11 +612,12 @@ TEST(Option4ClientFqdnTest, unpack) { EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_S)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_O)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_EQ("myhost", option->getDomainName()); EXPECT_EQ(Option4ClientFqdn::PARTIAL, option->getDomainNameType()); const uint8_t in_data[] = { - FLAG_S, // flags + FLAG_S | FLAG_E, // flags 0, // RCODE1 0, // RCODE2 6, 109, 121, 104, 111, 115, 116, // myhost. @@ -612,6 +634,7 @@ TEST(Option4ClientFqdnTest, unpack) { EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_S)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_EQ("myhost.example.com.", option->getDomainName()); EXPECT_EQ(Option4ClientFqdn::FULL, option->getDomainNameType()); } @@ -622,7 +645,7 @@ TEST(Option4ClientFqdnTest, unpackPartial) { // Create option instance. Check that constructor doesn't throw. boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_O, + option.reset(new Option4ClientFqdn(FLAG_O | FLAG_E, Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com")) ); @@ -633,11 +656,12 @@ TEST(Option4ClientFqdnTest, unpackPartial) { EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_S)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_O)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_EQ("myhost.example.com.", option->getDomainName()); EXPECT_EQ(Option4ClientFqdn::FULL, option->getDomainNameType()); const uint8_t in_data[] = { - FLAG_S, // flags + FLAG_S | FLAG_E, // flags 0, // RCODE1 0, // RCODE2 6, 109, 121, 104, 111, 115, 116 // myhost @@ -650,6 +674,7 @@ TEST(Option4ClientFqdnTest, unpackPartial) { // Check that new values are correct. EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_S)); + EXPECT_TRUE(option->getFlag(Option4ClientFqdn::FLAG_E)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_N)); EXPECT_FALSE(option->getFlag(Option4ClientFqdn::FLAG_O)); EXPECT_EQ("myhost", option->getDomainName()); @@ -661,7 +686,7 @@ TEST(Option4ClientFqdnTest, unpackPartial) { TEST(Option4ClientFqdnTest, unpackTruncated) { boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(Option4ClientFqdn::FLAG_O, + option.reset(new Option4ClientFqdn(FLAG_O | FLAG_E, Option4ClientFqdn::RCODE_CLIENT())) ); ASSERT_TRUE(option); @@ -675,7 +700,7 @@ TEST(Option4ClientFqdnTest, unpackTruncated) { // toText method is correctly formatted. TEST(Option4ClientFqdnTest, toText) { // Create option instance. Check that constructor doesn't throw. - uint8_t flags = Option4ClientFqdn::FLAG_N | Option4ClientFqdn::FLAG_O; + uint8_t flags = FLAG_N | FLAG_O | FLAG_E; boost::scoped_ptr option; ASSERT_NO_THROW( option.reset(new Option4ClientFqdn(flags, @@ -690,7 +715,7 @@ TEST(Option4ClientFqdnTest, toText) { " type=81(CLIENT_FQDN)\n" " flags:\n" " N=1\n" - " E=0\n" + " E=1\n" " O=1\n" " S=0\n" " domain-name='myhost.example.com.' (full)\n"; @@ -725,7 +750,8 @@ TEST(Option4ClientFqdnTest, len) { // Create option instance. Check that constructor doesn't throw. boost::scoped_ptr option; ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + option.reset(new Option4ClientFqdn(FLAG_E, + Option4ClientFqdn::RCODE_CLIENT(), "myhost.example.com")) ); ASSERT_TRUE(option); @@ -738,14 +764,16 @@ TEST(Option4ClientFqdnTest, len) { // Let's check that the size will change when domain name of a different // size is used. ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + option.reset(new Option4ClientFqdn(FLAG_E, + Option4ClientFqdn::RCODE_CLIENT(), "example.com")) ); ASSERT_TRUE(option); EXPECT_EQ(18, option->len()); ASSERT_NO_THROW( - option.reset(new Option4ClientFqdn(0, Option4ClientFqdn::RCODE_CLIENT(), + option.reset(new Option4ClientFqdn(FLAG_E, + Option4ClientFqdn::RCODE_CLIENT(), "myhost", Option4ClientFqdn::PARTIAL)) );