| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/net/http_pipelining_compatibility_client.h" | 5 #include "chrome/browser/net/http_pipelining_compatibility_client.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
| 13 #include "base/metrics/histogram.h" | 13 #include "base/metrics/histogram.h" |
| 14 #include "base/stl_util.h" | 14 #include "base/stl_util.h" |
| 15 #include "base/stringprintf.h" | 15 #include "base/stringprintf.h" |
| 16 #include "chrome/test/base/test_url_request_context_getter.h" | |
| 17 #include "content/test/test_browser_thread.h" | 16 #include "content/test/test_browser_thread.h" |
| 18 #include "net/base/net_errors.h" | 17 #include "net/base/net_errors.h" |
| 19 #include "net/base/test_completion_callback.h" | 18 #include "net/base/test_completion_callback.h" |
| 20 #include "net/url_request/url_request_context_getter.h" | 19 #include "net/url_request/url_request_context_getter.h" |
| 20 #include "net/url_request/url_request_test_util.h" |
| 21 #include "net/test/test_server.h" | 21 #include "net/test/test_server.h" |
| 22 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| 23 | 23 |
| 24 namespace chrome_browser_net { | 24 namespace chrome_browser_net { |
| 25 | 25 |
| 26 namespace { | 26 namespace { |
| 27 | 27 |
| 28 static const char* const kHistogramNames[] = { | 28 static const char* const kHistogramNames[] = { |
| 29 "NetConnectivity.Pipeline.0.NetworkError", | 29 "NetConnectivity.Pipeline.0.NetworkError", |
| 30 "NetConnectivity.Pipeline.0.ResponseCode", | 30 "NetConnectivity.Pipeline.0.ResponseCode", |
| 31 "NetConnectivity.Pipeline.0.Status", | 31 "NetConnectivity.Pipeline.0.Status", |
| 32 "NetConnectivity.Pipeline.1.NetworkError", | 32 "NetConnectivity.Pipeline.1.NetworkError", |
| 33 "NetConnectivity.Pipeline.1.ResponseCode", | 33 "NetConnectivity.Pipeline.1.ResponseCode", |
| 34 "NetConnectivity.Pipeline.1.Status", | 34 "NetConnectivity.Pipeline.1.Status", |
| 35 "NetConnectivity.Pipeline.2.NetworkError", | 35 "NetConnectivity.Pipeline.2.NetworkError", |
| 36 "NetConnectivity.Pipeline.2.ResponseCode", | 36 "NetConnectivity.Pipeline.2.ResponseCode", |
| 37 "NetConnectivity.Pipeline.2.Status", | 37 "NetConnectivity.Pipeline.2.Status", |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 enum HistogramField { | 40 enum HistogramField { |
| 41 FIELD_NETWORK_ERROR, | 41 FIELD_NETWORK_ERROR, |
| 42 FIELD_RESPONSE_CODE, | 42 FIELD_RESPONSE_CODE, |
| 43 FIELD_STATUS, | 43 FIELD_STATUS, |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 using content::BrowserThread; |
| 47 |
| 46 class HttpPipeliningCompatibilityClientTest : public testing::Test { | 48 class HttpPipeliningCompatibilityClientTest : public testing::Test { |
| 47 public: | 49 public: |
| 48 HttpPipeliningCompatibilityClientTest() | 50 HttpPipeliningCompatibilityClientTest() |
| 49 : test_server_( | 51 : test_server_( |
| 50 net::TestServer::TYPE_HTTP, | 52 net::TestServer::TYPE_HTTP, |
| 51 net::TestServer::kLocalhost, | 53 net::TestServer::kLocalhost, |
| 52 FilePath(FILE_PATH_LITERAL("chrome/test/data/http_pipelining"))), | 54 FilePath(FILE_PATH_LITERAL("chrome/test/data/http_pipelining"))), |
| 53 io_thread_(content::BrowserThread::IO, &message_loop_) { | 55 io_thread_(BrowserThread::IO, &message_loop_) { |
| 54 } | 56 } |
| 55 | 57 |
| 56 protected: | 58 protected: |
| 57 virtual void SetUp() OVERRIDE { | 59 virtual void SetUp() OVERRIDE { |
| 58 ASSERT_TRUE(test_server_.Start()); | 60 ASSERT_TRUE(test_server_.Start()); |
| 59 context_ = new TestURLRequestContextGetter; | 61 context_ = new TestURLRequestContextGetter( |
| 62 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |
| 60 context_->AddRef(); | 63 context_->AddRef(); |
| 61 | 64 |
| 62 for (size_t i = 0; i < arraysize(kHistogramNames); ++i) { | 65 for (size_t i = 0; i < arraysize(kHistogramNames); ++i) { |
| 63 const char* name = kHistogramNames[i]; | 66 const char* name = kHistogramNames[i]; |
| 64 base::Histogram::SampleSet sample = GetHistogram(name); | 67 base::Histogram::SampleSet sample = GetHistogram(name); |
| 65 if (sample.TotalCount() > 0) { | 68 if (sample.TotalCount() > 0) { |
| 66 original_samples_[name] = sample; | 69 original_samples_[name] = sample; |
| 67 } | 70 } |
| 68 } | 71 } |
| 69 } | 72 } |
| 70 | 73 |
| 71 virtual void TearDown() OVERRIDE { | 74 virtual void TearDown() OVERRIDE { |
| 72 content::BrowserThread::ReleaseSoon(content::BrowserThread::IO, | 75 BrowserThread::ReleaseSoon(BrowserThread::IO, FROM_HERE, context_); |
| 73 FROM_HERE, context_); | |
| 74 message_loop_.RunAllPending(); | 76 message_loop_.RunAllPending(); |
| 75 } | 77 } |
| 76 | 78 |
| 77 void RunTest( | 79 void RunTest( |
| 78 std::vector<HttpPipeliningCompatibilityClient::RequestInfo> requests) { | 80 std::vector<HttpPipeliningCompatibilityClient::RequestInfo> requests) { |
| 79 HttpPipeliningCompatibilityClient client; | 81 HttpPipeliningCompatibilityClient client; |
| 80 net::TestCompletionCallback callback; | 82 net::TestCompletionCallback callback; |
| 81 client.Start(test_server_.GetURL("").spec(), | 83 client.Start(test_server_.GetURL("").spec(), |
| 82 requests, callback.callback(), | 84 requests, callback.callback(), |
| 83 context_->GetURLRequestContext()); | 85 context_->GetURLRequestContext()); |
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 | 436 |
| 435 base::Histogram::SampleSet response_sample3 = | 437 base::Histogram::SampleSet response_sample3 = |
| 436 GetHistogramValue(2, FIELD_RESPONSE_CODE); | 438 GetHistogramValue(2, FIELD_RESPONSE_CODE); |
| 437 EXPECT_EQ(1, response_sample3.TotalCount()); | 439 EXPECT_EQ(1, response_sample3.TotalCount()); |
| 438 EXPECT_EQ(1, response_sample3.counts(401)); | 440 EXPECT_EQ(1, response_sample3.counts(401)); |
| 439 } | 441 } |
| 440 | 442 |
| 441 } // anonymous namespace | 443 } // anonymous namespace |
| 442 | 444 |
| 443 } // namespace chrome_browser_net | 445 } // namespace chrome_browser_net |
| OLD | NEW |