diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-09 18:27:01 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-09 18:27:01 +0000 |
commit | a33347c423e8d765771a66db5341f2faedf35b63 (patch) | |
tree | 8905a51b356dd52cf70a1de99a351bf29bba152d /net/base | |
parent | 218f923ec6f6ddb6685695899815da2bdfe04895 (diff) | |
download | chromium_src-a33347c423e8d765771a66db5341f2faedf35b63.zip chromium_src-a33347c423e8d765771a66db5341f2faedf35b63.tar.gz chromium_src-a33347c423e8d765771a66db5341f2faedf35b63.tar.bz2 |
Adds HostResolverImplTest.FailedAsynchronousLookup
Improves code coverage.
TEST=./net_unittests --gtest_filter=HostResolverImplTest.FailedAsynchronousLookup
Review URL: http://codereview.chromium.org/9122013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@116879 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base')
-rw-r--r-- | net/base/host_resolver_impl_unittest.cc | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/net/base/host_resolver_impl_unittest.cc b/net/base/host_resolver_impl_unittest.cc index 23c3325..af9adc8 100644 --- a/net/base/host_resolver_impl_unittest.cc +++ b/net/base/host_resolver_impl_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -402,6 +402,45 @@ TEST_F(HostResolverImplTest, AsynchronousLookup) { EXPECT_TRUE(htonl(0xc0a8012a) == sa_in->sin_addr.s_addr); } +TEST_F(HostResolverImplTest, FailedAsynchronousLookup) { + AddressList addrlist; + const int kPortnum = 80; + + scoped_refptr<RuleBasedHostResolverProc> resolver_proc( + new RuleBasedHostResolverProc(NULL)); + resolver_proc->AddSimulatedFailure("just.testing"); + + scoped_ptr<HostResolver> host_resolver( + CreateHostResolverImpl(resolver_proc)); + + HostResolver::RequestInfo info(HostPortPair("just.testing", kPortnum)); + CapturingBoundNetLog log(CapturingNetLog::kUnbounded); + int err = host_resolver->Resolve(info, &addrlist, callback_, NULL, + log.bound()); + EXPECT_EQ(ERR_IO_PENDING, err); + + CapturingNetLog::EntryList entries; + log.GetEntries(&entries); + + EXPECT_EQ(1u, entries.size()); + EXPECT_TRUE(LogContainsBeginEvent( + entries, 0, NetLog::TYPE_HOST_RESOLVER_IMPL)); + + MessageLoop::current()->Run(); + + ASSERT_TRUE(callback_called_); + ASSERT_EQ(ERR_NAME_NOT_RESOLVED, callback_result_); + + log.GetEntries(&entries); + + EXPECT_EQ(2u, entries.size()); + EXPECT_TRUE(LogContainsEndEvent( + entries, 1, NetLog::TYPE_HOST_RESOLVER_IMPL)); + + // Also test that the error is not cached! + err = host_resolver->ResolveFromCache(info, &addrlist, log.bound()); + EXPECT_EQ(ERR_DNS_CACHE_MISS, err); +} // Using WaitingHostResolverProc you can simulate very long lookups. class WaitingHostResolverProc : public HostResolverProc { |