From: Jelte Jansen Date: Wed, 14 Mar 2012 16:11:40 +0000 (+0100) Subject: [1779] improve TTL tests X-Git-Tag: trac2351_base~226^2~116^2~126^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=113f736e002db510897feb1e6e55600d622f9d26;p=thirdparty%2Fkea.git [1779] improve TTL tests take potential second boundary into account also fixed a few long lines --- diff --git a/src/lib/cache/tests/negative_cache_unittest.cc b/src/lib/cache/tests/negative_cache_unittest.cc index 56d777dfa5..27f713da61 100644 --- a/src/lib/cache/tests/negative_cache_unittest.cc +++ b/src/lib/cache/tests/negative_cache_unittest.cc @@ -52,14 +52,17 @@ TEST_F(NegativeCacheTest, testNXDOMAIN){ msg_nxdomain.makeResponse(); Name non_exist_qname("nonexist.example.com."); - EXPECT_TRUE(cache->lookup(non_exist_qname, RRType::A(), RRClass::IN(), msg_nxdomain)); + EXPECT_TRUE(cache->lookup(non_exist_qname, RRType::A(), RRClass::IN(), + msg_nxdomain)); RRsetIterator iter = msg_nxdomain.beginSection(Message::SECTION_AUTHORITY); RRsetPtr rrset_ptr = *iter; // The TTL should equal to the TTL of SOA record const RRTTL& nxdomain_ttl1 = rrset_ptr->getTTL(); - EXPECT_EQ(nxdomain_ttl1.getValue(), 86400); + // May have already crossed seconds boundary + EXPECT_GE(nxdomain_ttl1.getValue(), 86399); + EXPECT_LE(nxdomain_ttl1.getValue(), 86400); // SOA response for example.com Message msg_example_com_soa(Message::PARSE); @@ -68,16 +71,19 @@ TEST_F(NegativeCacheTest, testNXDOMAIN){ msg_example_com_soa.makeResponse(); Name soa_qname("example.com."); - EXPECT_TRUE(cache->lookup(soa_qname, RRType::SOA(), RRClass::IN(), msg_example_com_soa)); + EXPECT_TRUE(cache->lookup(soa_qname, RRType::SOA(), RRClass::IN(), + msg_example_com_soa)); iter = msg_example_com_soa.beginSection(Message::SECTION_ANSWER); rrset_ptr = *iter; // The TTL should equal to the TTL of SOA record in answer section const RRTTL& soa_ttl = rrset_ptr->getTTL(); - EXPECT_EQ(soa_ttl.getValue(), 172800); + // May have already crossed seconds boundary + EXPECT_GE(soa_ttl.getValue(), 172799); + EXPECT_LE(soa_ttl.getValue(), 172800); - sleep(1); + sleep(2); // Query nonexist.example.com again Message msg_nxdomain2(Message::PARSE); @@ -90,7 +96,8 @@ TEST_F(NegativeCacheTest, testNXDOMAIN){ // The TTL should equal to the TTL of negative response SOA record const RRTTL& nxdomain_ttl2 = rrset_ptr->getTTL(); - EXPECT_TRUE(86398 <= nxdomain_ttl2.getValue() && nxdomain_ttl2.getValue() <= 86399); + EXPECT_GE(nxdomain_ttl2.getValue(), 86397); + EXPECT_LE(nxdomain_ttl2.getValue(), 86398); // No RRset in ANSWER section EXPECT_TRUE(msg_nxdomain2.getRRCount(Message::SECTION_ANSWER) == 0); // Check that only one SOA record exist in AUTHORITY section @@ -103,13 +110,15 @@ TEST_F(NegativeCacheTest, testNXDOMAIN){ Message msg_example_com_soa2(Message::PARSE); messageFromFile(msg_example_com_soa2, "message_example_com_soa.wire"); msg_example_com_soa2.makeResponse(); - EXPECT_TRUE(cache->lookup(soa_qname, RRType::SOA(), RRClass::IN(), msg_example_com_soa2)); + EXPECT_TRUE(cache->lookup(soa_qname, RRType::SOA(), RRClass::IN(), + msg_example_com_soa2)); iter = msg_example_com_soa2.beginSection(Message::SECTION_ANSWER); rrset_ptr = *iter; const RRTTL& soa_ttl2 = rrset_ptr->getTTL(); // The TTL should equal to the TTL of SOA record in answer section - EXPECT_TRUE(172798 <= soa_ttl2.getValue() && soa_ttl2.getValue() <= 172799); + EXPECT_GE(soa_ttl2.getValue(), 172797); + EXPECT_LE(soa_ttl2.getValue(), 172798); } TEST_F(NegativeCacheTest, testNXDOMAINWithoutSOA){ @@ -166,15 +175,16 @@ TEST_F(NegativeCacheTest, testNoerrorNodata){ msg_nodata.makeResponse(); Name example_dot_com("example.com."); - EXPECT_TRUE(cache->lookup(example_dot_com, RRType::MX(), RRClass::IN(), msg_nodata)); + EXPECT_TRUE(cache->lookup(example_dot_com, RRType::MX(), RRClass::IN(), + msg_nodata)); RRsetIterator iter = msg_nodata.beginSection(Message::SECTION_AUTHORITY); RRsetPtr rrset_ptr = *iter; // The TTL should equal to the TTL of SOA record const RRTTL& nodata_ttl1 = rrset_ptr->getTTL(); - EXPECT_EQ(nodata_ttl1.getValue(), 86400); - + EXPECT_GE(nodata_ttl1.getValue(), 86399); + EXPECT_LE(nodata_ttl1.getValue(), 86400); // Normal SOA response for example.com Message msg_example_com_soa(Message::PARSE); @@ -183,21 +193,23 @@ TEST_F(NegativeCacheTest, testNoerrorNodata){ msg_example_com_soa.makeResponse(); Name soa_qname("example.com."); - EXPECT_TRUE(cache->lookup(soa_qname, RRType::SOA(), RRClass::IN(), msg_example_com_soa)); + EXPECT_TRUE(cache->lookup(soa_qname, RRType::SOA(), RRClass::IN(), + msg_example_com_soa)); iter = msg_example_com_soa.beginSection(Message::SECTION_ANSWER); rrset_ptr = *iter; // The TTL should equal to the TTL of SOA record in answer section const RRTTL& soa_ttl = rrset_ptr->getTTL(); - EXPECT_EQ(soa_ttl.getValue(), 172800); + EXPECT_GE(soa_ttl.getValue(), 172799); + EXPECT_LE(soa_ttl.getValue(), 172800); // Query MX record of example.com again Message msg_nodata2(Message::PARSE); messageFromFile(msg_nodata2, "message_nodata_with_soa.wire"); msg_nodata2.makeResponse(); - sleep(1); + sleep(2); EXPECT_TRUE(cache->lookup(example_dot_com, RRType::MX(), RRClass::IN(), msg_nodata2)); @@ -209,9 +221,11 @@ TEST_F(NegativeCacheTest, testNoerrorNodata){ iter = msg_nodata2.beginSection(Message::SECTION_AUTHORITY); rrset_ptr = *iter; - // The TTL should equal to the TTL of negative response SOA record and counted down + // The TTL should equal to the TTL of negative response SOA record + // and counted down const RRTTL& nodata_ttl2 = rrset_ptr->getTTL(); - EXPECT_TRUE(86398 <= nodata_ttl2.getValue() && nodata_ttl2.getValue() <= 86399); + EXPECT_GE(nodata_ttl2.getValue(), 86397); + EXPECT_LE(nodata_ttl2.getValue(), 86398); } TEST_F(NegativeCacheTest, testReferralResponse){