added test to DNS: load cache from file
[pingcheck] / test / test_dns.cpp
index f215e39..6cb1df5 100644 (file)
@@ -66,7 +66,7 @@ struct GlobalFixture
 
         // setup logging so we can see output from out code
         I2n::Logger::enable_stderr_log( true );
-        I2n::Logger::set_log_level( I2n::Logger::LogLevel::Debug );
+        I2n::Logger::set_log_level( I2n::Logger::LogLevel::Info );
         I2n::Logger::GlobalLogger.info() << "Logging enabled for DnsTest";
 
         // IoService
@@ -193,6 +193,7 @@ BOOST_AUTO_TEST_CASE( cache_retrieve_ip1 )
     HostAddressVec ips = Cache->get_ips("host1.test");
     BOOST_CHECK_EQUAL( ips.size(), 1 );
     HostAddress ip = ips.front();
+    BOOST_CHECK( ip.is_valid() );
     BOOST_CHECK_EQUAL( ip.get_ip().to_string(), "192.168.42.1" );
     BOOST_CHECK_EQUAL( ip.get_ttl().get_value(), 61 );
 }
@@ -203,9 +204,11 @@ BOOST_AUTO_TEST_CASE( cache_retrieve_ip2 )
     HostAddressVec ips = Cache->get_ips("host2_3.test");
     BOOST_CHECK_EQUAL( ips.size(), 2 );
     HostAddress ip = ips[0];
+    BOOST_CHECK( ip.is_valid() );
     BOOST_CHECK_EQUAL( ip.get_ip().to_string(), "192.168.42.2" );
     BOOST_CHECK_EQUAL( ip.get_ttl().get_value(), 92 );
     ip = ips[1];
+    BOOST_CHECK( ip.is_valid() );
     BOOST_CHECK_EQUAL( ip.get_ip().to_string(), "192.168.42.3" );
     BOOST_CHECK_EQUAL( ip.get_ttl().get_value(), 93 );
 }
@@ -226,6 +229,7 @@ BOOST_AUTO_TEST_CASE( cache_retrieve_recursive1 )
     HostAddressVec ips = Cache->get_ips_recursive("cname.test");
     BOOST_CHECK_EQUAL( ips.size(), 1 );
     HostAddress ip = ips.front();
+    BOOST_CHECK( ip.is_valid() );
     BOOST_CHECK_EQUAL( ip.get_ip().to_string(), "192.168.42.1" );
     BOOST_CHECK_EQUAL( ip.get_ttl().get_value(), 35 );
 }
@@ -236,6 +240,7 @@ BOOST_AUTO_TEST_CASE( cache_retrieve_recursive2 )
     HostAddressVec ips = Cache->get_ips_recursive("cname3.test");
     BOOST_CHECK_EQUAL( ips.size(), 1 );
     HostAddress ip = ips.front();
+    BOOST_CHECK( ip.is_valid() );
     BOOST_CHECK_EQUAL( ip.get_ip().to_string(), "192.168.42.1" );
     BOOST_CHECK_EQUAL( ip.get_ttl().get_value(), 33 );
 }
@@ -300,6 +305,27 @@ BOOST_AUTO_TEST_CASE( cache_skip_tests )
     BOOST_CHECK_EQUAL( Cache->get_first_outdated_cname("host1.test", 5), "" );
 }
 
+BOOST_AUTO_TEST_CASE( cache_load_test )
+{
+    std::stringstream file_name;
+    file_name << DATA_DIR_STRING << "/" << "dns_cache_example.xml";
+    BOOST_TEST_MESSAGE( "loading cache from file " << file_name.str() );
+    DnsCache loaded_cache( IoService, file_name.str() );
+    HostAddressVec ips = loaded_cache.get_ips("abc.xyz");
+    BOOST_CHECK_EQUAL( ips.size(), 1 );
+    HostAddress ip = ips.front();
+    BOOST_CHECK_EQUAL( ip.get_ip().to_string(), "11.22.33.44" );
+    BOOST_CHECK_EQUAL( ip.get_ttl().get_value(), 567 );
+    BOOST_CHECK_EQUAL( ip.get_ttl().get_updated_value(), 0 );
+
+    Cname cname = loaded_cache.get_cname("cname1.xyz");
+    BOOST_CHECK_EQUAL( cname.Host, "abc.xyz" );
+    BOOST_CHECK_EQUAL( cname.Ttl.get_value(), 27 );
+    BOOST_CHECK_EQUAL( cname.Ttl.get_updated_value(), 0 );
+
+    // not testing Ttl set time since is private
+}
+
 
 BOOST_AUTO_TEST_SUITE_END()    // of TestDnsCache
 
@@ -318,10 +344,12 @@ BOOST_AUTO_TEST_CASE( create_resolver_v4 )
                                                      PingProtocol_ICMP);
     BOOST_CHECK_EQUAL( resolver->get_hostname(), hostname );
     BOOST_CHECK( !resolver->is_resolving() );
+    BOOST_CHECK( !resolver->is_waiting_to_resolve() );
 
     // cancel should have no effect
     resolver->cancel_resolve();
     BOOST_CHECK( !resolver->is_resolving() );
+    BOOST_CHECK( !resolver->is_waiting_to_resolve() );
 
     // should not have any ips since cache did not load anything
     BOOST_CHECK_EQUAL( resolver->get_resolved_ip_count(), 0 );
@@ -346,12 +374,15 @@ BOOST_AUTO_TEST_CASE( do_resolve )
     std::string hostname = "www.intra2net.com";
     ResolverItem resolver = Master->get_resolver_for(hostname,
                                                      PingProtocol_ICMP);
+    BOOST_CHECK( !resolver->is_resolving() );
+    BOOST_CHECK( !resolver->is_waiting_to_resolve() );
 
     // set callback
     callback_type callback = boost::bind( resolve_callback, IoService, resolver,
                                           _1, _2 );
     // start resolving
     resolver->async_resolve(callback);
+    BOOST_CHECK( resolver->is_resolving() );
     IoService->run();
     // this will block until io service is stopped in resolve_callback