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

Unified Diff: net/proxy/dhcp_proxy_script_adapter_fetcher_win_unittest.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « net/proxy/dhcp_proxy_script_adapter_fetcher_win.cc ('k') | net/proxy/dhcp_proxy_script_fetcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/proxy/dhcp_proxy_script_adapter_fetcher_win_unittest.cc
diff --git a/net/proxy/dhcp_proxy_script_adapter_fetcher_win_unittest.cc b/net/proxy/dhcp_proxy_script_adapter_fetcher_win_unittest.cc
deleted file mode 100644
index af858d6348a3bd9092d8b9b173cb15fdf8df3117..0000000000000000000000000000000000000000
--- a/net/proxy/dhcp_proxy_script_adapter_fetcher_win_unittest.cc
+++ /dev/null
@@ -1,338 +0,0 @@
-// 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.
-
-#include "net/proxy/dhcp_proxy_script_adapter_fetcher_win.h"
-
-#include "base/synchronization/waitable_event.h"
-#include "base/test/test_timeouts.h"
-#include "base/threading/sequenced_worker_pool.h"
-#include "base/timer/elapsed_timer.h"
-#include "base/timer/timer.h"
-#include "net/base/net_errors.h"
-#include "net/base/test_completion_callback.h"
-#include "net/proxy/mock_proxy_script_fetcher.h"
-#include "net/proxy/proxy_script_fetcher_impl.h"
-#include "net/test/spawned_test_server/spawned_test_server.h"
-#include "net/url_request/url_request_test_util.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace net {
-
-namespace {
-
-const char kPacUrl[] = "http://pacserver/script.pac";
-
-// In net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc there are a few
-// tests that exercise DhcpProxyScriptAdapterFetcher end-to-end along with
-// DhcpProxyScriptFetcherWin, i.e. it tests the end-to-end usage of Win32
-// APIs and the network. In this file we test only by stubbing out
-// functionality.
-
-// Version of DhcpProxyScriptAdapterFetcher that mocks out dependencies
-// to allow unit testing.
-class MockDhcpProxyScriptAdapterFetcher
- : public DhcpProxyScriptAdapterFetcher {
- public:
- explicit MockDhcpProxyScriptAdapterFetcher(
- URLRequestContext* context,
- scoped_refptr<base::TaskRunner> task_runner)
- : DhcpProxyScriptAdapterFetcher(context, task_runner),
- dhcp_delay_(base::TimeDelta::FromMilliseconds(1)),
- timeout_(TestTimeouts::action_timeout()),
- configured_url_(kPacUrl),
- fetcher_delay_ms_(1),
- fetcher_result_(OK),
- pac_script_("bingo") {
- }
-
- void Cancel() {
- DhcpProxyScriptAdapterFetcher::Cancel();
- fetcher_ = NULL;
- }
-
- virtual ProxyScriptFetcher* ImplCreateScriptFetcher() override {
- // We don't maintain ownership of the fetcher, it is transferred to
- // the caller.
- fetcher_ = new MockProxyScriptFetcher();
- if (fetcher_delay_ms_ != -1) {
- fetcher_timer_.Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(fetcher_delay_ms_),
- this, &MockDhcpProxyScriptAdapterFetcher::OnFetcherTimer);
- }
- return fetcher_;
- }
-
- class DelayingDhcpQuery : public DhcpQuery {
- public:
- explicit DelayingDhcpQuery()
- : DhcpQuery(),
- test_finished_event_(true, false) {
- }
-
- std::string ImplGetPacURLFromDhcp(
- const std::string& adapter_name) override {
- base::ElapsedTimer timer;
- test_finished_event_.TimedWait(dhcp_delay_);
- return configured_url_;
- }
-
- base::WaitableEvent test_finished_event_;
- base::TimeDelta dhcp_delay_;
- std::string configured_url_;
- };
-
- virtual DhcpQuery* ImplCreateDhcpQuery() override {
- dhcp_query_ = new DelayingDhcpQuery();
- dhcp_query_->dhcp_delay_ = dhcp_delay_;
- dhcp_query_->configured_url_ = configured_url_;
- return dhcp_query_.get();
- }
-
- // Use a shorter timeout so tests can finish more quickly.
- virtual base::TimeDelta ImplGetTimeout() const override {
- return timeout_;
- }
-
- void OnFetcherTimer() {
- // Note that there is an assumption by this mock implementation that
- // DhcpProxyScriptAdapterFetcher::Fetch will call ImplCreateScriptFetcher
- // and call Fetch on the fetcher before the message loop is re-entered.
- // This holds true today, but if you hit this DCHECK the problem can
- // possibly be resolved by having a separate subclass of
- // MockProxyScriptFetcher that adds the delay internally (instead of
- // the simple approach currently used in ImplCreateScriptFetcher above).
- DCHECK(fetcher_ && fetcher_->has_pending_request());
- fetcher_->NotifyFetchCompletion(fetcher_result_, pac_script_);
- fetcher_ = NULL;
- }
-
- bool IsWaitingForFetcher() const {
- return state() == STATE_WAIT_URL;
- }
-
- bool WasCancelled() const {
- return state() == STATE_CANCEL;
- }
-
- void FinishTest() {
- DCHECK(dhcp_query_.get());
- dhcp_query_->test_finished_event_.Signal();
- }
-
- base::TimeDelta dhcp_delay_;
- base::TimeDelta timeout_;
- std::string configured_url_;
- int fetcher_delay_ms_;
- int fetcher_result_;
- std::string pac_script_;
- MockProxyScriptFetcher* fetcher_;
- base::OneShotTimer<MockDhcpProxyScriptAdapterFetcher> fetcher_timer_;
- scoped_refptr<DelayingDhcpQuery> dhcp_query_;
-};
-
-class FetcherClient {
- public:
- FetcherClient()
- : url_request_context_(new TestURLRequestContext()),
- worker_pool_(
- new base::SequencedWorkerPool(4, "DhcpAdapterFetcherTest")),
- fetcher_(new MockDhcpProxyScriptAdapterFetcher(
- url_request_context_.get(),
- worker_pool_->GetTaskRunnerWithShutdownBehavior(
- base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN))) {
- }
-
- ~FetcherClient() {
- worker_pool_->Shutdown();
- }
-
- void WaitForResult(int expected_error) {
- EXPECT_EQ(expected_error, callback_.WaitForResult());
- }
-
- void RunTest() {
- fetcher_->Fetch("adapter name", callback_.callback());
- }
-
- void FinishTestAllowCleanup() {
- fetcher_->FinishTest();
- base::MessageLoop::current()->RunUntilIdle();
- }
-
- TestCompletionCallback callback_;
- scoped_ptr<URLRequestContext> url_request_context_;
- scoped_refptr<base::SequencedWorkerPool> worker_pool_;
- scoped_ptr<MockDhcpProxyScriptAdapterFetcher> fetcher_;
- base::string16 pac_text_;
-};
-
-TEST(DhcpProxyScriptAdapterFetcher, NormalCaseURLNotInDhcp) {
- FetcherClient client;
- client.fetcher_->configured_url_ = "";
- client.RunTest();
- client.WaitForResult(ERR_PAC_NOT_IN_DHCP);
- ASSERT_TRUE(client.fetcher_->DidFinish());
- EXPECT_EQ(ERR_PAC_NOT_IN_DHCP, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L""), client.fetcher_->GetPacScript());
-}
-
-TEST(DhcpProxyScriptAdapterFetcher, NormalCaseURLInDhcp) {
- FetcherClient client;
- client.RunTest();
- client.WaitForResult(OK);
- ASSERT_TRUE(client.fetcher_->DidFinish());
- EXPECT_EQ(OK, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L"bingo"), client.fetcher_->GetPacScript());
- EXPECT_EQ(GURL(kPacUrl), client.fetcher_->GetPacURL());
-}
-
-TEST(DhcpProxyScriptAdapterFetcher, TimeoutDuringDhcp) {
- // Does a Fetch() with a long enough delay on accessing DHCP that the
- // fetcher should time out. This is to test a case manual testing found,
- // where under certain circumstances (e.g. adapter enabled for DHCP and
- // needs to retrieve its configuration from DHCP, but no DHCP server
- // present on the network) accessing DHCP can take on the order of tens
- // of seconds.
- FetcherClient client;
- client.fetcher_->dhcp_delay_ = TestTimeouts::action_max_timeout();
- client.fetcher_->timeout_ = base::TimeDelta::FromMilliseconds(25);
-
- base::ElapsedTimer timer;
- client.RunTest();
- // An error different from this would be received if the timeout didn't
- // kick in.
- client.WaitForResult(ERR_TIMED_OUT);
-
- ASSERT_TRUE(client.fetcher_->DidFinish());
- EXPECT_EQ(ERR_TIMED_OUT, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L""), client.fetcher_->GetPacScript());
- EXPECT_EQ(GURL(), client.fetcher_->GetPacURL());
- client.FinishTestAllowCleanup();
-}
-
-TEST(DhcpProxyScriptAdapterFetcher, CancelWhileDhcp) {
- FetcherClient client;
- client.RunTest();
- client.fetcher_->Cancel();
- base::MessageLoop::current()->RunUntilIdle();
- ASSERT_FALSE(client.fetcher_->DidFinish());
- ASSERT_TRUE(client.fetcher_->WasCancelled());
- EXPECT_EQ(ERR_ABORTED, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L""), client.fetcher_->GetPacScript());
- EXPECT_EQ(GURL(), client.fetcher_->GetPacURL());
- client.FinishTestAllowCleanup();
-}
-
-TEST(DhcpProxyScriptAdapterFetcher, CancelWhileFetcher) {
- FetcherClient client;
- // This causes the mock fetcher not to pretend the
- // fetcher finishes after a timeout.
- client.fetcher_->fetcher_delay_ms_ = -1;
- client.RunTest();
- int max_loops = 4;
- while (!client.fetcher_->IsWaitingForFetcher() && max_loops--) {
- base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10));
- base::MessageLoop::current()->RunUntilIdle();
- }
- client.fetcher_->Cancel();
- base::MessageLoop::current()->RunUntilIdle();
- ASSERT_FALSE(client.fetcher_->DidFinish());
- ASSERT_TRUE(client.fetcher_->WasCancelled());
- EXPECT_EQ(ERR_ABORTED, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L""), client.fetcher_->GetPacScript());
- // GetPacURL() still returns the URL fetched in this case.
- EXPECT_EQ(GURL(kPacUrl), client.fetcher_->GetPacURL());
- client.FinishTestAllowCleanup();
-}
-
-TEST(DhcpProxyScriptAdapterFetcher, CancelAtCompletion) {
- FetcherClient client;
- client.RunTest();
- client.WaitForResult(OK);
- client.fetcher_->Cancel();
- // Canceling after you're done should have no effect, so these
- // are identical expectations to the NormalCaseURLInDhcp test.
- ASSERT_TRUE(client.fetcher_->DidFinish());
- EXPECT_EQ(OK, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L"bingo"), client.fetcher_->GetPacScript());
- EXPECT_EQ(GURL(kPacUrl), client.fetcher_->GetPacURL());
- client.FinishTestAllowCleanup();
-}
-
-// Does a real fetch on a mock DHCP configuration.
-class MockDhcpRealFetchProxyScriptAdapterFetcher
- : public MockDhcpProxyScriptAdapterFetcher {
- public:
- explicit MockDhcpRealFetchProxyScriptAdapterFetcher(
- URLRequestContext* context,
- scoped_refptr<base::TaskRunner> task_runner)
- : MockDhcpProxyScriptAdapterFetcher(context, task_runner),
- url_request_context_(context) {
- }
-
- // Returns a real proxy script fetcher.
- ProxyScriptFetcher* ImplCreateScriptFetcher() override {
- ProxyScriptFetcher* fetcher =
- new ProxyScriptFetcherImpl(url_request_context_);
- return fetcher;
- }
-
- URLRequestContext* url_request_context_;
-};
-
-TEST(DhcpProxyScriptAdapterFetcher, MockDhcpRealFetch) {
- SpawnedTestServer test_server(
- SpawnedTestServer::TYPE_HTTP,
- SpawnedTestServer::kLocalhost,
- base::FilePath(
- FILE_PATH_LITERAL("net/data/proxy_script_fetcher_unittest")));
- ASSERT_TRUE(test_server.Start());
-
- GURL configured_url = test_server.GetURL("files/downloadable.pac");
-
- FetcherClient client;
- TestURLRequestContext url_request_context;
- scoped_refptr<base::TaskRunner> runner =
- client.worker_pool_->GetTaskRunnerWithShutdownBehavior(
- base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
- client.fetcher_.reset(
- new MockDhcpRealFetchProxyScriptAdapterFetcher(
- &url_request_context, runner));
- client.fetcher_->configured_url_ = configured_url.spec();
- client.RunTest();
- client.WaitForResult(OK);
- ASSERT_TRUE(client.fetcher_->DidFinish());
- EXPECT_EQ(OK, client.fetcher_->GetResult());
- EXPECT_EQ(base::string16(L"-downloadable.pac-\n"),
- client.fetcher_->GetPacScript());
- EXPECT_EQ(configured_url,
- client.fetcher_->GetPacURL());
-}
-
-#define BASE_URL "http://corpserver/proxy.pac"
-
-TEST(DhcpProxyScriptAdapterFetcher, SanitizeDhcpApiString) {
- const size_t kBaseUrlLen = strlen(BASE_URL);
-
- // Default case.
- EXPECT_EQ(BASE_URL,
- DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString(
- BASE_URL, kBaseUrlLen));
-
- // Trailing \n and no null-termination.
- EXPECT_EQ(BASE_URL,
- DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString(
- BASE_URL "\nblablabla", kBaseUrlLen + 1));
-
- // Embedded NULLs.
- EXPECT_EQ(BASE_URL,
- DhcpProxyScriptAdapterFetcher::SanitizeDhcpApiString(
- BASE_URL "\0foo\0blat", kBaseUrlLen + 9));
-}
-
-#undef BASE_URL
-
-} // namespace
-
-} // namespace net
« no previous file with comments | « net/proxy/dhcp_proxy_script_adapter_fetcher_win.cc ('k') | net/proxy/dhcp_proxy_script_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698