Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Unified Diff: chrome/browser/net/dns_master_unittest.cc

Issue 15076: Clean up dns prefetch code, and also port it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: use scoper for init & free Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/net/dns_master_unittest.cc
diff --git a/chrome/browser/net/dns_master_unittest.cc b/chrome/browser/net/dns_master_unittest.cc
index b9eb34f0c33ce6f9a88cfacc979e2ea973e89c10..aea38f5e701f9f4c601c30d9b150b6078094d7e8 100644
--- a/chrome/browser/net/dns_master_unittest.cc
+++ b/chrome/browser/net/dns_master_unittest.cc
@@ -2,104 +2,92 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Multi-threaded tests of DnsMaster and DnsPrefetch slave functionality.
-
#include <time.h>
-#include <ws2tcpip.h>
-#include <Wspiapi.h> // Needed for win2k compatibility
#include <algorithm>
-#include <map>
#include <sstream>
#include <string>
+#include "base/message_loop.h"
#include "base/platform_thread.h"
-#include "base/spin_wait.h"
+#include "base/scoped_ptr.h"
+#include "base/timer.h"
#include "chrome/browser/net/dns_global.h"
#include "chrome/browser/net/dns_host_info.h"
-#include "chrome/browser/net/dns_slave.h"
+#include "chrome/common/net/dns.h"
+#include "net/base/address_list.h"
+#include "net/base/host_resolver.h"
+#include "net/base/host_resolver_unittest.h"
#include "net/base/winsock_init.h"
#include "testing/gtest/include/gtest/gtest.h"
-
using base::Time;
using base::TimeDelta;
-namespace {
+namespace chrome_browser_net {
-class DnsMasterTest : public testing::Test {
-};
+class WaitForResolutionHelper;
-typedef chrome_browser_net::DnsMaster DnsMaster;
-typedef chrome_browser_net::DnsPrefetcherInit DnsPrefetcherInit;
-typedef chrome_browser_net::DnsHostInfo DnsHostInfo;
-typedef chrome_browser_net::NameList NameList;
+typedef base::RepeatingTimer<WaitForResolutionHelper> HelperTimer;
+class WaitForResolutionHelper {
+ public:
+ WaitForResolutionHelper(DnsMaster* master, const NameList& hosts,
+ HelperTimer* timer)
+ : master_(master),
+ hosts_(hosts),
+ timer_(timer) {
+ }
-//------------------------------------------------------------------------------
-// Provide network function stubs to run tests offline (and avoid the variance
-// of real DNS lookups.
-//------------------------------------------------------------------------------
+ void Run() {
+ for (NameList::const_iterator i = hosts_.begin(); i != hosts_.end(); ++i)
+ if (master_->GetResolutionDuration(*i) == DnsHostInfo::kNullDuration)
+ return; // We don't have resolution for that host.
-static void __stdcall fake_free_addr_info(struct addrinfo* ai) {
- // Kill off the dummy results.
- EXPECT_TRUE(NULL != ai);
- delete ai;
-}
+ // When all hostnames have been resolved, exit the loop.
+ timer_->Stop();
+ MessageLoop::current()->Quit();
+ delete timer_;
+ delete this;
+ }
-static int __stdcall fake_get_addr_info(const char* nodename,
- const char* servname,
- const struct addrinfo* hints,
- struct addrinfo** result) {
- static Lock lock;
- int duration;
- bool was_found;
- std::string hostname(nodename);
- // Dummy up *some* return results to pass along.
- *result = new addrinfo;
- EXPECT_TRUE(NULL != *result);
- {
- AutoLock autolock(lock);
-
- static bool initialized = false;
- typedef std::map<std::string, int> Latency;
- static Latency latency;
- static std::map<std::string, bool> found;
- if (!initialized) {
- initialized = true;
- // List all known hostnames
- latency["www.google.com"] = 50;
- latency["gmail.google.com.com"] = 70;
- latency["mail.google.com"] = 44;
- latency["gmail.com"] = 63;
-
- for (Latency::iterator it = latency.begin(); latency.end() != it; it++) {
- found[it->first] = true;
- }
- } // End static initialization
-
- was_found = found[hostname];
-
- if (latency.end() != latency.find(hostname)) {
- duration = latency[hostname];
- } else {
- duration = 500;
- }
- // Change latency to simulate cache warming (next latency will be short).
- latency[hostname] = 1;
- } // Release lock.
+ private:
+ DnsMaster* master_;
+ const NameList hosts_;
+ HelperTimer* timer_;
+};
- PlatformThread::Sleep(duration);
+class DnsMasterTest : public testing::Test {
+ public:
+ DnsMasterTest()
+ : mapper_(new net::RuleBasedHostMapper()),
+ scoped_mapper_(mapper_.get()) {
+ }
- return was_found ? 0 : WSAHOST_NOT_FOUND;
-}
+ protected:
+ virtual void SetUp() {
+#if defined(OS_WIN)
+ net::EnsureWinsockInit();
+#endif
+ mapper_->AddRuleWithLatency("www.google.com", "127.0.0.1", 50);
+ mapper_->AddRuleWithLatency("gmail.google.com.com", "127.0.0.1", 70);
+ mapper_->AddRuleWithLatency("mail.google.com", "127.0.0.1", 44);
+ mapper_->AddRuleWithLatency("gmail.com", "127.0.0.1", 63);
+ }
-static void SetupNetworkInfrastructure() {
- bool kUseFakeNetwork = true;
- if (kUseFakeNetwork)
- chrome_browser_net::SetAddrinfoCallbacks(fake_get_addr_info,
- fake_free_addr_info);
-}
+ void WaitForResolution(DnsMaster* master, const NameList& hosts) {
+ HelperTimer* timer = new HelperTimer();
+ timer->Start(TimeDelta::FromMilliseconds(100),
+ new WaitForResolutionHelper(master, hosts, timer),
+ &WaitForResolutionHelper::Run);
+ MessageLoop::current()->Run();
+ }
+
+ private:
+ MessageLoop loop;
+ scoped_refptr<net::RuleBasedHostMapper> mapper_;
+ net::ScopedHostMapper scoped_mapper_;
+};
//------------------------------------------------------------------------------
// Provide a function to create unique (nonexistant) domains at *every* call.
@@ -120,68 +108,63 @@ static std::string GetNonexistantDomain() {
// Use a blocking function to contrast results we get via async services.
//------------------------------------------------------------------------------
TimeDelta BlockingDnsLookup(const std::string& hostname) {
- char* port = "80"; // I may need to get the real port
- struct addrinfo* result = NULL;
Time start = Time::Now();
- // Use the same underlying methods as dns_prefetch_slave does
- chrome_browser_net::get_getaddrinfo()(hostname.c_str(), port,
- NULL, &result);
-
- TimeDelta duration = Time::Now() - start;
+ net::HostResolver resolver;
+ net::AddressList addresses;
+ resolver.Resolve(hostname, 80, &addresses, NULL);
- if (result) {
- chrome_browser_net::get_freeaddrinfo()(result);
- result = NULL;
- }
-
- return duration;
+ return Time::Now() - start;
}
//------------------------------------------------------------------------------
// First test to be sure the OS is caching lookups, which is the whole premise
// of DNS prefetching.
-TEST(DnsMasterTest, OsCachesLookupsTest) {
- SetupNetworkInfrastructure();
- net::EnsureWinsockInit();
-
- // To avoid flaky nature of a timed test, we'll run an outer loop until we get
- // 90% of the inner loop tests to pass.
- // Originally we just did one set of 5 tests and demand 100%, but that proved
- // flakey. With this set-looping approach, we always pass in one set (when it
- // used to pass). If we don't get that first set to pass, then we allow an
- // average of one failure per two major sets. If the test runs too long, then
- // there probably is a real problem, and the test harness will terminate us
- // with a failure.
- int pass_count(0);
- int fail_count(0);
- do {
- for (int i = 0; i < 5; i++) {
- std::string badname;
- badname = GetNonexistantDomain();
- TimeDelta duration = BlockingDnsLookup(badname);
- TimeDelta cached_duration = BlockingDnsLookup(badname);
- if (duration > cached_duration)
- pass_count++;
- else
- fail_count++;
- }
- } while (fail_count * 9 > pass_count);
+TEST_F(DnsMasterTest, OsCachesLookupsTest) {
+ const Time start = Time::Now();
+ int all_lookups = 0;
+ int lookups_with_improvement = 0;
+ // This test can be really flaky on Linux. It should run in much shorter time,
+ // but sometimes it won't and we don't like bogus failures.
+ while (Time::Now() - start < TimeDelta::FromMinutes(1)) {
+ std::string badname;
+ badname = GetNonexistantDomain();
+
+ TimeDelta duration = BlockingDnsLookup(badname);
+
+ // Produce more than one result and remove the largest one
+ // to reduce flakiness.
+ std::vector<TimeDelta> cached_results;
+ for (int j = 0; j < 3; j++)
+ cached_results.push_back(BlockingDnsLookup(badname));
+ std::sort(cached_results.begin(), cached_results.end());
+ cached_results.pop_back();
+
+ TimeDelta cached_sum = TimeDelta::FromSeconds(0);
+ for (std::vector<TimeDelta>::const_iterator j = cached_results.begin();
+ j != cached_results.end(); ++j)
+ cached_sum += *j;
+ TimeDelta cached_duration = cached_sum / cached_results.size();
+
+ all_lookups++;
+ if (cached_duration < duration)
+ lookups_with_improvement++;
+ if (all_lookups >= 10)
+ if (lookups_with_improvement * 100 > all_lookups * 75)
+ // Okay, we see the improvement for more than 75% of all lookups.
+ return;
+ }
+ FAIL() << "No substantial improvement in lookup time.";
}
-TEST(DnsMasterTest, StartupShutdownTest) {
- DnsMaster testing_master(TimeDelta::FromMilliseconds(5000));
-
- // With no threads, we should have no problem doing a shutdown.
- EXPECT_TRUE(testing_master.ShutdownSlaves());
+TEST_F(DnsMasterTest, StartupShutdownTest) {
+ DnsMaster testing_master;
+ testing_master.Shutdown();
}
-TEST(DnsMasterTest, BenefitLookupTest) {
- SetupNetworkInfrastructure();
- net::EnsureWinsockInit();
- DnsPrefetcherInit dns_init(NULL); // Creates global service .
- DnsMaster testing_master(TimeDelta::FromMilliseconds(5000));
+TEST_F(DnsMasterTest, BenefitLookupTest) {
+ DnsMaster testing_master;
std::string goog("www.google.com"),
goog2("gmail.google.com.com"),
@@ -211,23 +194,9 @@ TEST(DnsMasterTest, BenefitLookupTest) {
names.insert(names.end(), goog3);
names.insert(names.end(), goog4);
- // First only cause a minimal set of threads to start up.
- // Currently we actually start 4 threads when we get called with an array
testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
- // Wait for some resoultion for each google.
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog).InMilliseconds());
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog2).InMilliseconds());
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog3).InMilliseconds());
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog4).InMilliseconds());
-
- EXPECT_EQ(std::min(names.size(),
- 4u /* chrome_browser_net::DnsMaster::kSlaveCountMin */ ),
- testing_master.running_slave_count());
+ WaitForResolution(&testing_master, names);
EXPECT_TRUE(testing_master.WasFound(goog));
EXPECT_TRUE(testing_master.WasFound(goog2));
@@ -250,67 +219,62 @@ TEST(DnsMasterTest, BenefitLookupTest) {
EXPECT_FALSE(testing_master.AccruePrefetchBenefits(GURL(), &goog3_info));
EXPECT_FALSE(testing_master.AccruePrefetchBenefits(GURL(), &goog4_info));
- // Ensure a clean shutdown.
- EXPECT_TRUE(testing_master.ShutdownSlaves());
+ testing_master.Shutdown();
}
-TEST(DnsMasterTest, DISABLED_SingleSlaveLookupTest) {
- SetupNetworkInfrastructure();
- net::EnsureWinsockInit();
- DnsPrefetcherInit dns_init(NULL); // Creates global service.
- DnsMaster testing_master(TimeDelta::FromMilliseconds(5000));
+TEST_F(DnsMasterTest, ShutdownWhenResolutionIsPendingTest) {
+ scoped_refptr<net::WaitingHostMapper> mapper = new net::WaitingHostMapper();
+ net::ScopedHostMapper scoped_mapper(mapper.get());
- std::string goog("www.google.com"),
- goog2("gmail.google.com.com"),
- goog3("mail.google.com"),
- goog4("gmail.com");
- std::string bad1(GetNonexistantDomain()),
- bad2(GetNonexistantDomain());
+ DnsMaster testing_master;
- // Warm up local OS cache.
- BlockingDnsLookup(goog);
+ std::string localhost("127.0.0.1");
+ NameList names;
+ names.insert(names.end(), localhost);
+
+ testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
+
+ MessageLoop::current()->PostDelayedTask(FROM_HERE,
+ new MessageLoop::QuitTask(), 500);
+ MessageLoop::current()->Run();
+
+ EXPECT_FALSE(testing_master.WasFound(localhost));
+
+ testing_master.Shutdown();
+
+ // Clean up after ourselves.
+ mapper->Signal();
+ MessageLoop::current()->RunAllPending();
+}
+
+TEST_F(DnsMasterTest, SingleLookupTest) {
+ DnsMaster testing_master;
+
+ std::string goog("www.google.com");
NameList names;
names.insert(names.end(), goog);
- names.insert(names.end(), bad1);
- names.insert(names.end(), bad2);
- // First only cause a single thread to start up
- testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
+ // Try to flood the master with many concurrent requests.
+ for (int i = 0; i < 10; i++)
+ testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
- // Wait for some resoultion for google.
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog).InMilliseconds());
+ WaitForResolution(&testing_master, names);
EXPECT_TRUE(testing_master.WasFound(goog));
- EXPECT_FALSE(testing_master.WasFound(bad1));
- EXPECT_FALSE(testing_master.WasFound(bad2));
- // Verify the reason it is not found is that it is still being proceessed.
- // Negative time mean no resolution yet.
- EXPECT_GT(0, testing_master.GetResolutionDuration(bad2).InMilliseconds());
-
- // Spin long enough that we *do* find the resolution of bad2.
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(bad2).InMilliseconds());
-
- // Verify both fictitious names are resolved by now.
- // Typical random name takes about 20-30 ms
- EXPECT_LT(0, testing_master.GetResolutionDuration(bad1).InMilliseconds());
- EXPECT_LT(0, testing_master.GetResolutionDuration(bad2).InMilliseconds());
- EXPECT_FALSE(testing_master.WasFound(bad1));
- EXPECT_FALSE(testing_master.WasFound(bad2));
- EXPECT_EQ(1U, testing_master.running_slave_count());
+ MessageLoop::current()->RunAllPending();
- // With just one thread (doing nothing now), ensure a clean shutdown.
- EXPECT_TRUE(testing_master.ShutdownSlaves());
+ EXPECT_GT(testing_master.peak_pending_lookups(), names.size() / 2);
+ EXPECT_LE(testing_master.peak_pending_lookups(), names.size());
+ EXPECT_LE(testing_master.peak_pending_lookups(),
+ DnsMaster::kMaxConcurrentLookups);
+
+ testing_master.Shutdown();
}
-TEST(DnsMasterTest, DISABLED_MultiThreadedLookupTest) {
- SetupNetworkInfrastructure();
- net::EnsureWinsockInit();
- DnsMaster testing_master(TimeDelta::FromSeconds(30));
- DnsPrefetcherInit dns_init(NULL);
+TEST_F(DnsMasterTest, ConcurrentLookupTest) {
+ DnsMaster testing_master;
std::string goog("www.google.com"),
goog2("gmail.google.com.com"),
@@ -334,12 +298,11 @@ TEST(DnsMasterTest, DISABLED_MultiThreadedLookupTest) {
BlockingDnsLookup(goog3);
BlockingDnsLookup(goog4);
- // Get all 8 threads running by calling many times before queue is handled.
- for (int i = 0; i < 10; i++) {
+ // Try to flood the master with many concurrent requests.
+ for (int i = 0; i < 10; i++)
testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
- }
- Sleep(10); // Allow time for async DNS to get answers.
+ WaitForResolution(&testing_master, names);
EXPECT_TRUE(testing_master.WasFound(goog));
EXPECT_TRUE(testing_master.WasFound(goog3));
@@ -348,99 +311,39 @@ TEST(DnsMasterTest, DISABLED_MultiThreadedLookupTest) {
EXPECT_FALSE(testing_master.WasFound(bad1));
EXPECT_FALSE(testing_master.WasFound(bad2));
- EXPECT_EQ(8U, testing_master.running_slave_count());
-
- EXPECT_TRUE(testing_master.ShutdownSlaves());
-}
-
-TEST(DnsMasterTest, DISABLED_MultiThreadedSpeedupTest) {
- SetupNetworkInfrastructure();
- net::EnsureWinsockInit();
- DnsMaster testing_master(TimeDelta::FromSeconds(30));
- DnsPrefetcherInit dns_init(NULL);
-
- std::string goog("www.google.com"),
- goog2("gmail.google.com.com"),
- goog3("mail.google.com"),
- goog4("gmail.com");
- std::string bad1(GetNonexistantDomain()),
- bad2(GetNonexistantDomain()),
- bad3(GetNonexistantDomain()),
- bad4(GetNonexistantDomain());
-
- NameList names;
- names.insert(names.end(), goog);
- names.insert(names.end(), bad1);
- names.insert(names.end(), bad2);
- names.insert(names.end(), goog3);
- names.insert(names.end(), goog2);
- names.insert(names.end(), bad3);
- names.insert(names.end(), bad4);
- names.insert(names.end(), goog4);
-
- // First cause a lookup using a single thread.
- testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
-
- // Wait for some resoultion for google.
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog).InMilliseconds());
+ MessageLoop::current()->RunAllPending();
- EXPECT_TRUE(testing_master.WasFound(goog));
EXPECT_FALSE(testing_master.WasFound(bad1));
EXPECT_FALSE(testing_master.WasFound(bad2));
- // ...and due to delay in geting resolution of bad names, the single slave
- // thread won't have time to finish the list.
- EXPECT_FALSE(testing_master.WasFound(goog3));
- EXPECT_FALSE(testing_master.WasFound(goog2));
- EXPECT_FALSE(testing_master.WasFound(goog4));
-
- EXPECT_EQ(1U, testing_master.running_slave_count());
- // Get all 8 threads running by calling many times before queue is handled.
- names.clear();
- for (int i = 0; i < 10; i++)
- testing_master.Resolve(GetNonexistantDomain(),
- DnsHostInfo::PAGE_SCAN_MOTIVATED);
-
- // Wait long enough for all the goog's to be resolved.
- // They should all take about the same time, and run in parallel.
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog2).InMilliseconds());
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog3).InMilliseconds());
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(goog4).InMilliseconds());
+ EXPECT_GT(testing_master.peak_pending_lookups(), names.size() / 2);
+ EXPECT_LE(testing_master.peak_pending_lookups(), names.size());
+ EXPECT_LE(testing_master.peak_pending_lookups(),
+ DnsMaster::kMaxConcurrentLookups);
- EXPECT_TRUE(testing_master.WasFound(goog3));
- EXPECT_TRUE(testing_master.WasFound(goog2));
- EXPECT_TRUE(testing_master.WasFound(goog4));
-
- EXPECT_FALSE(testing_master.WasFound(bad1));
- EXPECT_FALSE(testing_master.WasFound(bad2)); // Perhaps not even decided.
+ testing_master.Shutdown();
+}
- // Queue durations should be distinct from when 1 slave was working.
- EXPECT_GT(testing_master.GetQueueDuration(goog3).InMilliseconds(),
- testing_master.GetQueueDuration(goog).InMilliseconds());
- EXPECT_GT(testing_master.GetQueueDuration(goog4).InMilliseconds(),
- testing_master.GetQueueDuration(goog).InMilliseconds());
+TEST_F(DnsMasterTest, MassiveConcurrentLookupTest) {
+ DnsMaster testing_master;
- // Give bad names a chance to be determined as unresolved.
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(bad1).InMilliseconds());
- SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(0 <=
- testing_master.GetResolutionDuration(bad2).InMilliseconds());
+ NameList names;
+ for (int i = 0; i < 100; i++)
+ names.push_back(GetNonexistantDomain());
+ // Try to flood the master with many concurrent requests.
+ for (int i = 0; i < 10; i++)
+ testing_master.ResolveList(names, DnsHostInfo::PAGE_SCAN_MOTIVATED);
- // Well known names should resolve faster than bad names.
- EXPECT_GE(testing_master.GetResolutionDuration(bad1).InMilliseconds(),
- testing_master.GetResolutionDuration(goog).InMilliseconds());
+ WaitForResolution(&testing_master, names);
- EXPECT_GE(testing_master.GetResolutionDuration(bad2).InMilliseconds(),
- testing_master.GetResolutionDuration(goog4).InMilliseconds());
+ MessageLoop::current()->RunAllPending();
- EXPECT_EQ(8U, testing_master.running_slave_count());
+ EXPECT_LE(testing_master.peak_pending_lookups(), names.size());
+ EXPECT_LE(testing_master.peak_pending_lookups(),
+ DnsMaster::kMaxConcurrentLookups);
- EXPECT_TRUE(testing_master.ShutdownSlaves());
+ testing_master.Shutdown();
}
//------------------------------------------------------------------------------
@@ -524,20 +427,22 @@ int GetLatencyFromSerialization(const std::string& motivation,
//------------------------------------------------------------------------------
// Make sure nil referral lists really have no entries, and no latency listed.
-TEST(DnsMasterTest, ReferrerSerializationNilTest) {
- DnsMaster master(TimeDelta::FromSeconds(30));
+TEST_F(DnsMasterTest, ReferrerSerializationNilTest) {
+ DnsMaster master;
ListValue referral_list;
master.SerializeReferrers(&referral_list);
- EXPECT_EQ(0, referral_list.GetSize());
+ EXPECT_EQ(0U, referral_list.GetSize());
EXPECT_EQ(kLatencyNotFound, GetLatencyFromSerialization("a.com", "b.com",
referral_list));
+
+ master.Shutdown();
}
// Make sure that when a serialization list includes a value, that it can be
// deserialized into the database, and can be extracted back out via
// serialization without being changed.
-TEST(DnsMasterTest, ReferrerSerializationSingleReferrerTest) {
- DnsMaster master(TimeDelta::FromSeconds(30));
+TEST_F(DnsMasterTest, ReferrerSerializationSingleReferrerTest) {
+ DnsMaster master;
std::string motivation_hostname = "www.google.com";
std::string subresource_hostname = "icons.google.com";
const int kLatency = 3;
@@ -550,15 +455,17 @@ TEST(DnsMasterTest, ReferrerSerializationSingleReferrerTest) {
ListValue recovered_referral_list;
master.SerializeReferrers(&recovered_referral_list);
- EXPECT_EQ(1, recovered_referral_list.GetSize());
+ EXPECT_EQ(1U, recovered_referral_list.GetSize());
EXPECT_EQ(kLatency, GetLatencyFromSerialization(motivation_hostname,
subresource_hostname,
recovered_referral_list));
+
+ master.Shutdown();
}
// Make sure the Trim() functionality works as expected.
-TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
- DnsMaster master(TimeDelta::FromSeconds(30));
+TEST_F(DnsMasterTest, ReferrerSerializationTrimTest) {
+ DnsMaster master;
std::string motivation_hostname = "www.google.com";
std::string icon_subresource_hostname = "icons.google.com";
std::string img_subresource_hostname = "img.google.com";
@@ -573,7 +480,7 @@ TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
ListValue recovered_referral_list;
master.SerializeReferrers(&recovered_referral_list);
- EXPECT_EQ(1, recovered_referral_list.GetSize());
+ EXPECT_EQ(1U, recovered_referral_list.GetSize());
EXPECT_EQ(10, GetLatencyFromSerialization(motivation_hostname,
icon_subresource_hostname,
recovered_referral_list));
@@ -585,7 +492,7 @@ TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
// until they both are 0, an then a trim will delete the whole entry.
master.TrimReferrers();
master.SerializeReferrers(&recovered_referral_list);
- EXPECT_EQ(1, recovered_referral_list.GetSize());
+ EXPECT_EQ(1U, recovered_referral_list.GetSize());
EXPECT_EQ(5, GetLatencyFromSerialization(motivation_hostname,
icon_subresource_hostname,
recovered_referral_list));
@@ -595,7 +502,7 @@ TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
master.TrimReferrers();
master.SerializeReferrers(&recovered_referral_list);
- EXPECT_EQ(1, recovered_referral_list.GetSize());
+ EXPECT_EQ(1U, recovered_referral_list.GetSize());
EXPECT_EQ(2, GetLatencyFromSerialization(motivation_hostname,
icon_subresource_hostname,
recovered_referral_list));
@@ -605,7 +512,7 @@ TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
master.TrimReferrers();
master.SerializeReferrers(&recovered_referral_list);
- EXPECT_EQ(1, recovered_referral_list.GetSize());
+ EXPECT_EQ(1U, recovered_referral_list.GetSize());
EXPECT_EQ(1, GetLatencyFromSerialization(motivation_hostname,
icon_subresource_hostname,
recovered_referral_list));
@@ -615,7 +522,7 @@ TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
master.TrimReferrers();
master.SerializeReferrers(&recovered_referral_list);
- EXPECT_EQ(0, recovered_referral_list.GetSize());
+ EXPECT_EQ(0U, recovered_referral_list.GetSize());
EXPECT_EQ(kLatencyNotFound,
GetLatencyFromSerialization(motivation_hostname,
icon_subresource_hostname,
@@ -624,8 +531,8 @@ TEST(DnsMasterTest, ReferrerSerializationTrimTest) {
GetLatencyFromSerialization(motivation_hostname,
img_subresource_hostname,
recovered_referral_list));
-}
+ master.Shutdown();
+}
-} // namespace
-
+} // namespace chrome_browser_net

Powered by Google App Engine
This is Rietveld 408576698