Index: chrome/browser/net/http_pipelining_compatibility_client_unittest.cc |
diff --git a/chrome/browser/net/http_pipelining_compatibility_client_unittest.cc b/chrome/browser/net/http_pipelining_compatibility_client_unittest.cc |
deleted file mode 100644 |
index 793c5f1fb939ed8d860cd8116f31f83b5f9e8f42..0000000000000000000000000000000000000000 |
--- a/chrome/browser/net/http_pipelining_compatibility_client_unittest.cc |
+++ /dev/null |
@@ -1,597 +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 "chrome/browser/net/http_pipelining_compatibility_client.h" |
- |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/metrics/histogram.h" |
-#include "base/metrics/histogram_samples.h" |
-#include "base/metrics/statistics_recorder.h" |
-#include "base/run_loop.h" |
-#include "base/stl_util.h" |
-#include "base/strings/stringprintf.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
-#include "net/base/net_errors.h" |
-#include "net/base/test_completion_callback.h" |
-#include "net/test/spawned_test_server/spawned_test_server.h" |
-#include "net/url_request/url_request_context_getter.h" |
-#include "net/url_request/url_request_test_util.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using base::HistogramBase; |
-using base::HistogramSamples; |
- |
-namespace chrome_browser_net { |
- |
-namespace { |
- |
-static const char* const kHistogramNames[] = { |
- "NetConnectivity.Pipeline.CanarySuccess", |
- "NetConnectivity.Pipeline.Depth", |
- "NetConnectivity.Pipeline.AllHTTP11", |
- "NetConnectivity.Pipeline.Success", |
- "NetConnectivity.Pipeline.0.NetworkError", |
- "NetConnectivity.Pipeline.0.ResponseCode", |
- "NetConnectivity.Pipeline.0.Status", |
- "NetConnectivity.Pipeline.1.NetworkError", |
- "NetConnectivity.Pipeline.1.ResponseCode", |
- "NetConnectivity.Pipeline.1.Status", |
- "NetConnectivity.Pipeline.2.NetworkError", |
- "NetConnectivity.Pipeline.2.ResponseCode", |
- "NetConnectivity.Pipeline.2.Status", |
-}; |
- |
-enum HistogramField { |
- FIELD_CANARY, |
- FIELD_DEPTH, |
- FIELD_HTTP_1_1, |
- FIELD_NETWORK_ERROR, |
- FIELD_RESPONSE_CODE, |
- FIELD_STATUS, |
- FIELD_SUCCESS, |
-}; |
- |
-class MockFactory : public internal::PipelineTestRequest::Factory { |
- public: |
- MOCK_METHOD6(NewRequest, internal::PipelineTestRequest*( |
- int, const std::string&, const RequestInfo&, |
- internal::PipelineTestRequest::Delegate*, net::URLRequestContext*, |
- internal::PipelineTestRequest::Type)); |
-}; |
- |
-class MockRequest : public internal::PipelineTestRequest { |
- public: |
- MOCK_METHOD0(Start, void()); |
-}; |
- |
-using content::BrowserThread; |
-using testing::_; |
-using testing::Field; |
-using testing::Invoke; |
-using testing::Return; |
-using testing::StrEq; |
- |
-class HttpPipeliningCompatibilityClientTest : public testing::Test { |
- public: |
- HttpPipeliningCompatibilityClientTest() |
- : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), |
- test_server_(net::SpawnedTestServer::TYPE_HTTP, |
- net::SpawnedTestServer::kLocalhost, |
- base::FilePath(FILE_PATH_LITERAL( |
- "chrome/test/data/http_pipelining"))) { |
- } |
- |
- protected: |
- virtual void SetUp() OVERRIDE { |
- // Start up a histogram recorder. |
- // TODO(rtenneti): Leaks StatisticsRecorder and will update suppressions. |
- base::StatisticsRecorder::Initialize(); |
- ASSERT_TRUE(test_server_.Start()); |
- context_ = new net::TestURLRequestContextGetter( |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |
- context_->AddRef(); |
- |
- for (size_t i = 0; i < arraysize(kHistogramNames); ++i) { |
- const char* name = kHistogramNames[i]; |
- scoped_ptr<HistogramSamples> samples = GetHistogram(name); |
- if (samples.get() && samples->TotalCount() > 0) { |
- original_samples_[name] = samples.release(); |
- } |
- } |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- BrowserThread::ReleaseSoon(BrowserThread::IO, FROM_HERE, context_); |
- base::RunLoop().RunUntilIdle(); |
- STLDeleteValues(&original_samples_); |
- } |
- |
- void RunTest( |
- std::vector<RequestInfo> requests, |
- HttpPipeliningCompatibilityClient::Options options) { |
- HttpPipeliningCompatibilityClient client(NULL); |
- net::TestCompletionCallback callback; |
- client.Start(test_server_.GetURL(std::string()).spec(), |
- requests, |
- options, |
- callback.callback(), |
- context_->GetURLRequestContext()); |
- callback.WaitForResult(); |
- } |
- |
- void ExpectHistogramCount(int expected_count, |
- int expected_value, |
- HistogramField field) { |
- const char* name; |
- |
- switch (field) { |
- case FIELD_CANARY: |
- name = "NetConnectivity.Pipeline.CanarySuccess"; |
- break; |
- |
- case FIELD_DEPTH: |
- name = "NetConnectivity.Pipeline.Depth"; |
- break; |
- |
- case FIELD_HTTP_1_1: |
- name = "NetConnectivity.Pipeline.AllHTTP11"; |
- break; |
- |
- case FIELD_SUCCESS: |
- name = "NetConnectivity.Pipeline.Success"; |
- break; |
- |
- default: |
- FAIL() << "Unexpected field: " << field; |
- } |
- |
- scoped_ptr<HistogramSamples> samples = GetHistogram(name); |
- if (!samples.get()) |
- return; |
- |
- if (ContainsKey(original_samples_, name)) { |
- samples->Subtract((*original_samples_[name])); |
- } |
- |
- EXPECT_EQ(expected_count, samples->TotalCount()) << name; |
- if (expected_count > 0) { |
- EXPECT_EQ(expected_count, samples->GetCount(expected_value)) << name; |
- } |
- } |
- |
- void ExpectRequestHistogramCount(int expected_count, |
- int expected_value, |
- int request_id, |
- HistogramField field) { |
- const char* field_str = ""; |
- switch (field) { |
- case FIELD_STATUS: |
- field_str = "Status"; |
- break; |
- |
- case FIELD_NETWORK_ERROR: |
- field_str = "NetworkError"; |
- break; |
- |
- case FIELD_RESPONSE_CODE: |
- field_str = "ResponseCode"; |
- break; |
- |
- default: |
- FAIL() << "Unexpected field: " << field; |
- } |
- |
- std::string name = base::StringPrintf("NetConnectivity.Pipeline.%d.%s", |
- request_id, field_str); |
- scoped_ptr<HistogramSamples> samples = GetHistogram(name.c_str()); |
- if (!samples.get()) |
- return; |
- |
- if (ContainsKey(original_samples_, name)) { |
- samples->Subtract(*(original_samples_[name])); |
- } |
- |
- EXPECT_EQ(expected_count, samples->TotalCount()) << name; |
- if (expected_count > 0) { |
- EXPECT_EQ(expected_count, samples->GetCount(expected_value)) << name; |
- } |
- } |
- |
- content::TestBrowserThreadBundle thread_bundle_; |
- net::SpawnedTestServer test_server_; |
- net::TestURLRequestContextGetter* context_; |
- |
- private: |
- scoped_ptr<HistogramSamples> GetHistogram(const char* name) { |
- scoped_ptr<HistogramSamples> samples; |
- HistogramBase* cached_histogram = NULL; |
- HistogramBase* current_histogram = |
- base::StatisticsRecorder::FindHistogram(name); |
- if (ContainsKey(histograms_, name)) { |
- cached_histogram = histograms_[name]; |
- } |
- |
- // This is to work around the CACHE_HISTOGRAM_* macros caching the last used |
- // histogram by name. So, even though we throw out the StatisticsRecorder |
- // between tests, the CACHE_HISTOGRAM_* might still write into the old |
- // Histogram if it has the same name as the last run. We keep a cache of the |
- // last used Histogram and then update the cache if it's different than the |
- // current Histogram. |
- if (cached_histogram && current_histogram) { |
- samples = cached_histogram->SnapshotSamples(); |
- if (cached_histogram != current_histogram) { |
- samples->Add(*(current_histogram->SnapshotSamples())); |
- histograms_[name] = current_histogram; |
- } |
- } else if (current_histogram) { |
- samples = current_histogram->SnapshotSamples(); |
- histograms_[name] = current_histogram; |
- } else if (cached_histogram) { |
- samples = cached_histogram->SnapshotSamples(); |
- } |
- return samples.Pass(); |
- } |
- |
- static std::map<std::string, HistogramBase*> histograms_; |
- std::map<std::string, HistogramSamples*> original_samples_; |
-}; |
- |
-// static |
-std::map<std::string, HistogramBase*> |
- HttpPipeliningCompatibilityClientTest::histograms_; |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, Success) { |
- RequestInfo info; |
- info.filename = "files/alphabet.txt"; |
- info.expected_response = "abcdefghijklmnopqrstuvwxyz"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, true, FIELD_SUCCESS); |
- ExpectHistogramCount(0, 0, FIELD_DEPTH); |
- ExpectHistogramCount(0, 0, FIELD_HTTP_1_1); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_SUCCESS, 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 200, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, TooSmall) { |
- RequestInfo info; |
- info.filename = "files/alphabet.txt"; |
- info.expected_response = "abcdefghijklmnopqrstuvwxyz26"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_TOO_SMALL, 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 200, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, TooLarge) { |
- RequestInfo info; |
- info.filename = "files/alphabet.txt"; |
- info.expected_response = "abc"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_TOO_LARGE, 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 200, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, Mismatch) { |
- RequestInfo info; |
- info.filename = "files/alphabet.txt"; |
- info.expected_response = "zyxwvutsrqponmlkjihgfedcba"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_CONTENT_MISMATCH, |
- 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 200, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, Redirect) { |
- RequestInfo info; |
- info.filename = "server-redirect?http://foo.bar/asdf"; |
- info.expected_response = "shouldn't matter"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_REDIRECTED, 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, AuthRequired) { |
- RequestInfo info; |
- info.filename = "auth-basic"; |
- info.expected_response = "shouldn't matter"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_BAD_RESPONSE_CODE, |
- 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 401, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, NoContent) { |
- RequestInfo info; |
- info.filename = "nocontent"; |
- info.expected_response = "shouldn't matter"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_BAD_RESPONSE_CODE, |
- 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 204, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, CloseSocket) { |
- RequestInfo info; |
- info.filename = "close-socket"; |
- info.expected_response = "shouldn't matter"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_NETWORK_ERROR, 0, FIELD_STATUS); |
- ExpectRequestHistogramCount( |
- 1, -net::ERR_EMPTY_RESPONSE, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, OldHttpVersion) { |
- RequestInfo info; |
- info.filename = "http-1.0"; |
- info.expected_response = "abcdefghijklmnopqrstuvwxyz"; |
- std::vector<RequestInfo> requests; |
- requests.push_back(info); |
- |
- RunTest(requests, HttpPipeliningCompatibilityClient::PIPE_TEST_DEFAULTS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_BAD_HTTP_VERSION, |
- 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 200, 0, FIELD_RESPONSE_CODE); |
-} |
- |
-#if defined(OS_CHROMEOS) |
-// http://crbug.com/147903: test fails on ChromeOS |
-#define MAYBE_MultipleRequests DISABLED_MultipleRequests |
-#else |
-#define MAYBE_MultipleRequests MultipleRequests |
-#endif |
-TEST_F(HttpPipeliningCompatibilityClientTest, MAYBE_MultipleRequests) { |
- std::vector<RequestInfo> requests; |
- |
- RequestInfo info1; |
- info1.filename = "files/alphabet.txt"; |
- info1.expected_response = "abcdefghijklmnopqrstuvwxyz"; |
- requests.push_back(info1); |
- |
- RequestInfo info2; |
- info2.filename = "close-socket"; |
- info2.expected_response = "shouldn't matter"; |
- requests.push_back(info2); |
- |
- RequestInfo info3; |
- info3.filename = "auth-basic"; |
- info3.expected_response = "shouldn't matter"; |
- requests.push_back(info3); |
- |
- RunTest(requests, |
- HttpPipeliningCompatibilityClient::PIPE_TEST_COLLECT_SERVER_STATS); |
- |
- ExpectHistogramCount(1, false, FIELD_SUCCESS); |
- |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_SUCCESS, 0, FIELD_STATUS); |
- ExpectRequestHistogramCount(0, 0, 0, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(1, 200, 0, FIELD_RESPONSE_CODE); |
- |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_NETWORK_ERROR, 1, FIELD_STATUS); |
- ExpectRequestHistogramCount( |
- 1, -net::ERR_PIPELINE_EVICTION, 1, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(0, 0, 1, FIELD_RESPONSE_CODE); |
- |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_NETWORK_ERROR, 2, FIELD_STATUS); |
- ExpectRequestHistogramCount( |
- 1, -net::ERR_PIPELINE_EVICTION, 2, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(0, 0, 2, FIELD_RESPONSE_CODE); |
- |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_NETWORK_ERROR, 3, FIELD_STATUS); |
- ExpectRequestHistogramCount( |
- 1, -net::ERR_PIPELINE_EVICTION, 3, FIELD_NETWORK_ERROR); |
- ExpectRequestHistogramCount(0, 0, 3, FIELD_RESPONSE_CODE); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, StatsOk) { |
- EXPECT_EQ(internal::PipelineTestRequest::STATUS_SUCCESS, |
- internal::ProcessStatsResponse( |
- "max_pipeline_depth:3,were_all_requests_http_1_1:0")); |
- ExpectHistogramCount(1, 3, FIELD_DEPTH); |
- ExpectHistogramCount(1, 0, FIELD_HTTP_1_1); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, StatsIndifferentToOrder) { |
- EXPECT_EQ(internal::PipelineTestRequest::STATUS_SUCCESS, |
- internal::ProcessStatsResponse( |
- "were_all_requests_http_1_1:1,max_pipeline_depth:2")); |
- ExpectHistogramCount(1, 2, FIELD_DEPTH); |
- ExpectHistogramCount(1, 1, FIELD_HTTP_1_1); |
-} |
- |
-#if defined(OS_CHROMEOS) |
-// http://crbug.com/147903: test fails on ChromeOS |
-#define MAYBE_StatsBadField DISABLED_StatsBadField |
-#else |
-#define MAYBE_StatsBadField StatsBadField |
-#endif |
-TEST_F(HttpPipeliningCompatibilityClientTest, MAYBE_StatsBadField) { |
- EXPECT_EQ(internal::PipelineTestRequest::STATUS_CORRUPT_STATS, |
- internal::ProcessStatsResponse( |
- "foo:3,were_all_requests_http_1_1:1")); |
- ExpectHistogramCount(0, 0, FIELD_DEPTH); |
- ExpectHistogramCount(0, 0, FIELD_HTTP_1_1); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, StatsTooShort) { |
- EXPECT_EQ(internal::PipelineTestRequest::STATUS_CORRUPT_STATS, |
- internal::ProcessStatsResponse("were_all_requests_http_1_1:1")); |
- ExpectHistogramCount(0, 0, FIELD_DEPTH); |
- ExpectHistogramCount(0, 0, FIELD_HTTP_1_1); |
-} |
- |
-TEST_F(HttpPipeliningCompatibilityClientTest, WaitForCanary) { |
- MockFactory* factory = new MockFactory; |
- HttpPipeliningCompatibilityClient client(factory); |
- |
- MockRequest* request = new MockRequest; |
- base::Closure request_cb = base::Bind( |
- &internal::PipelineTestRequest::Delegate::OnRequestFinished, |
- base::Unretained(&client), 0, |
- internal::PipelineTestRequest::STATUS_SUCCESS); |
- |
- MockRequest* canary = new MockRequest; |
- base::Closure canary_cb = base::Bind( |
- &internal::PipelineTestRequest::Delegate::OnCanaryFinished, |
- base::Unretained(&client), internal::PipelineTestRequest::STATUS_SUCCESS); |
- |
- EXPECT_CALL(*factory, NewRequest( |
- 0, _, Field(&RequestInfo::filename, StrEq("request.txt")), _, _, |
- internal::PipelineTestRequest::TYPE_PIPELINED)) |
- .Times(1) |
- .WillOnce(Return(request)); |
- EXPECT_CALL(*factory, NewRequest( |
- 999, _, Field(&RequestInfo::filename, StrEq("index.html")), _, _, |
- internal::PipelineTestRequest::TYPE_CANARY)) |
- .Times(1) |
- .WillOnce(Return(canary)); |
- |
- EXPECT_CALL(*canary, Start()) |
- .Times(1) |
- .WillOnce(Invoke(&canary_cb, &base::Closure::Run)); |
- EXPECT_CALL(*request, Start()) |
- .Times(1) |
- .WillOnce(Invoke(&request_cb, &base::Closure::Run)); |
- |
- std::vector<RequestInfo> requests; |
- |
- RequestInfo info1; |
- info1.filename = "request.txt"; |
- requests.push_back(info1); |
- |
- net::TestCompletionCallback callback; |
- client.Start("http://base/", requests, |
- HttpPipeliningCompatibilityClient::PIPE_TEST_RUN_CANARY_REQUEST, |
- callback.callback(), context_->GetURLRequestContext()); |
- callback.WaitForResult(); |
- |
- ExpectHistogramCount(1, true, FIELD_CANARY); |
- ExpectHistogramCount(1, true, FIELD_SUCCESS); |
- ExpectRequestHistogramCount( |
- 1, internal::PipelineTestRequest::STATUS_SUCCESS, 0, FIELD_STATUS); |
-} |
- |
-#if defined(OS_CHROMEOS) |
-// http://crbug.com/147903: test fails on ChromeOS |
-#define MAYBE_CanaryFailure DISABLED_CanaryFailure |
-#else |
-#define MAYBE_CanaryFailure CanaryFailure |
-#endif |
-TEST_F(HttpPipeliningCompatibilityClientTest, MAYBE_CanaryFailure) { |
- MockFactory* factory = new MockFactory; |
- HttpPipeliningCompatibilityClient client(factory); |
- |
- MockRequest* request = new MockRequest; |
- |
- MockRequest* canary = new MockRequest; |
- base::Closure canary_cb = base::Bind( |
- &internal::PipelineTestRequest::Delegate::OnCanaryFinished, |
- base::Unretained(&client), |
- internal::PipelineTestRequest::STATUS_REDIRECTED); |
- |
- EXPECT_CALL(*factory, NewRequest( |
- 0, _, Field(&RequestInfo::filename, StrEq("request.txt")), _, _, |
- internal::PipelineTestRequest::TYPE_PIPELINED)) |
- .Times(1) |
- .WillOnce(Return(request)); |
- EXPECT_CALL(*factory, NewRequest( |
- 999, _, Field(&RequestInfo::filename, StrEq("index.html")), _, _, |
- internal::PipelineTestRequest::TYPE_CANARY)) |
- .Times(1) |
- .WillOnce(Return(canary)); |
- |
- EXPECT_CALL(*canary, Start()) |
- .Times(1) |
- .WillOnce(Invoke(&canary_cb, &base::Closure::Run)); |
- EXPECT_CALL(*request, Start()) |
- .Times(0); |
- |
- std::vector<RequestInfo> requests; |
- |
- RequestInfo info1; |
- info1.filename = "request.txt"; |
- requests.push_back(info1); |
- |
- net::TestCompletionCallback callback; |
- client.Start("http://base/", requests, |
- HttpPipeliningCompatibilityClient::PIPE_TEST_RUN_CANARY_REQUEST, |
- callback.callback(), context_->GetURLRequestContext()); |
- callback.WaitForResult(); |
- |
- ExpectHistogramCount(1, false, FIELD_CANARY); |
- ExpectHistogramCount(0, false, FIELD_SUCCESS); |
- ExpectHistogramCount(0, true, FIELD_SUCCESS); |
-} |
- |
-} // anonymous namespace |
- |
-} // namespace chrome_browser_net |