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 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
453 EXPECT_EQ(1, network_sample3.counts(-net::ERR_PIPELINE_EVICTION)); | 455 EXPECT_EQ(1, network_sample3.counts(-net::ERR_PIPELINE_EVICTION)); |
454 | 456 |
455 base::Histogram::SampleSet response_sample3 = | 457 base::Histogram::SampleSet response_sample3 = |
456 GetHistogramValue(2, FIELD_RESPONSE_CODE); | 458 GetHistogramValue(2, FIELD_RESPONSE_CODE); |
457 EXPECT_EQ(0, response_sample3.TotalCount()); | 459 EXPECT_EQ(0, response_sample3.TotalCount()); |
458 } | 460 } |
459 | 461 |
460 } // anonymous namespace | 462 } // anonymous namespace |
461 | 463 |
462 } // namespace chrome_browser_net | 464 } // namespace chrome_browser_net |
OLD | NEW |