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

Side by Side Diff: components/domain_reliability/uploader_unittest.cc

Issue 2824813002: Remove URLRequestJob::GetResponseCode implementations. (Closed)
Patch Set: Fix more stuff Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/domain_reliability/uploader.h" 5 #include "components/domain_reliability/uploader.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 15 matching lines...) Expand all
26 #include "net/url_request/url_request_test_util.h" 26 #include "net/url_request/url_request_test_util.h"
27 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
28 28
29 namespace domain_reliability { 29 namespace domain_reliability {
30 namespace { 30 namespace {
31 31
32 const char kUploadURL[] = "https://example/upload"; 32 const char kUploadURL[] = "https://example/upload";
33 33
34 struct MockUploadResult { 34 struct MockUploadResult {
35 int net_error; 35 int net_error;
36 int response_code;
37 scoped_refptr<net::HttpResponseHeaders> response_headers; 36 scoped_refptr<net::HttpResponseHeaders> response_headers;
38 }; 37 };
39 38
40 class UploadMockURLRequestJob : public net::URLRequestJob { 39 class UploadMockURLRequestJob : public net::URLRequestJob {
41 public: 40 public:
42 UploadMockURLRequestJob(net::URLRequest* request, 41 UploadMockURLRequestJob(net::URLRequest* request,
43 net::NetworkDelegate* network_delegate, 42 net::NetworkDelegate* network_delegate,
44 MockUploadResult result) 43 MockUploadResult result)
45 : net::URLRequestJob(request, network_delegate), 44 : net::URLRequestJob(request, network_delegate),
46 upload_stream_(nullptr), 45 upload_stream_(nullptr),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 87
89 upload_data_ = std::string(upload_buffer_->data(), upload_buffer_->size()); 88 upload_data_ = std::string(upload_buffer_->data(), upload_buffer_->size());
90 upload_buffer_ = nullptr; 89 upload_buffer_ = nullptr;
91 90
92 if (result_.net_error == net::OK) 91 if (result_.net_error == net::OK)
93 NotifyHeadersComplete(); 92 NotifyHeadersComplete();
94 else if (result_.net_error != net::ERR_IO_PENDING) 93 else if (result_.net_error != net::ERR_IO_PENDING)
95 NotifyStartError(net::URLRequestStatus::FromError(result_.net_error)); 94 NotifyStartError(net::URLRequestStatus::FromError(result_.net_error));
96 } 95 }
97 96
98 int GetResponseCode() const override {
99 return result_.response_code;
100 }
101
102 void GetResponseInfo(net::HttpResponseInfo* info) override { 97 void GetResponseInfo(net::HttpResponseInfo* info) override {
103 info->headers = result_.response_headers; 98 info->headers = result_.response_headers;
104 } 99 }
105 100
106 net::UploadDataStream* upload_stream_; 101 net::UploadDataStream* upload_stream_;
107 scoped_refptr<net::IOBufferWithSize> upload_buffer_; 102 scoped_refptr<net::IOBufferWithSize> upload_buffer_;
108 std::string upload_data_; 103 std::string upload_data_;
109 MockUploadResult result_; 104 MockUploadResult result_;
110 }; 105 };
111 106
(...skipping 16 matching lines...) Expand all
128 DomainReliabilityUploader::GetURLRequestUploadDepth(*request); 123 DomainReliabilityUploader::GetURLRequestUploadDepth(*request);
129 124
130 ++request_count_; 125 ++request_count_;
131 126
132 return new UploadMockURLRequestJob(request, delegate, result); 127 return new UploadMockURLRequestJob(request, delegate, result);
133 } 128 }
134 129
135 void ExpectRequestAndReturnError(int net_error) { 130 void ExpectRequestAndReturnError(int net_error) {
136 MockUploadResult result; 131 MockUploadResult result;
137 result.net_error = net_error; 132 result.net_error = net_error;
138 result.response_code = -1;
139 results_.push_back(result); 133 results_.push_back(result);
140 } 134 }
141 135
142 void ExpectRequestAndReturnResponseCode(int response_code) { 136 void ExpectRequestAndReturnResponseHeaders(const char* headers) {
143 MockUploadResult result; 137 MockUploadResult result;
144 result.net_error = net::OK; 138 result.net_error = net::OK;
145 result.response_code = response_code;
146 results_.push_back(result);
147 }
148
149 void ExpectRequestAndReturnResponseCodeAndHeaders(
150 int response_code,
151 const char* headers) {
152 MockUploadResult result;
153 result.net_error = net::OK;
154 result.response_code = response_code;
155 result.response_headers = new net::HttpResponseHeaders( 139 result.response_headers = new net::HttpResponseHeaders(
156 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers))); 140 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers)));
157 results_.push_back(result); 141 results_.push_back(result);
158 } 142 }
159 143
160 int request_count() const { return request_count_; } 144 int request_count() const { return request_count_; }
161 int last_upload_depth() const { return last_upload_depth_; } 145 int last_upload_depth() const { return last_upload_depth_; }
162 146
163 private: 147 private:
164 mutable std::list<MockUploadResult> results_; 148 mutable std::list<MockUploadResult> results_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 UploadInterceptor* interceptor_; 203 UploadInterceptor* interceptor_;
220 MockTime time_; 204 MockTime time_;
221 std::unique_ptr<DomainReliabilityUploader> uploader_; 205 std::unique_ptr<DomainReliabilityUploader> uploader_;
222 }; 206 };
223 207
224 TEST_F(DomainReliabilityUploaderTest, Null) { 208 TEST_F(DomainReliabilityUploaderTest, Null) {
225 uploader()->Shutdown(); 209 uploader()->Shutdown();
226 } 210 }
227 211
228 TEST_F(DomainReliabilityUploaderTest, SuccessfulUpload) { 212 TEST_F(DomainReliabilityUploaderTest, SuccessfulUpload) {
229 interceptor()->ExpectRequestAndReturnResponseCode(200); 213 interceptor()->ExpectRequestAndReturnResponseHeaders("HTTP/1.1 200\r\n\r\n");
230 214
231 TestUploadCallback c; 215 TestUploadCallback c;
232 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback()); 216 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback());
233 base::RunLoop().RunUntilIdle(); 217 base::RunLoop().RunUntilIdle();
234 EXPECT_EQ(1u, c.called_count()); 218 EXPECT_EQ(1u, c.called_count());
235 EXPECT_TRUE(c.last_result().is_success()); 219 EXPECT_TRUE(c.last_result().is_success());
236 220
237 uploader()->Shutdown(); 221 uploader()->Shutdown();
238 } 222 }
239 223
240 TEST_F(DomainReliabilityUploaderTest, NetworkErrorUpload) { 224 TEST_F(DomainReliabilityUploaderTest, NetworkErrorUpload) {
241 interceptor()->ExpectRequestAndReturnError(net::ERR_CONNECTION_REFUSED); 225 interceptor()->ExpectRequestAndReturnError(net::ERR_CONNECTION_REFUSED);
242 226
243 TestUploadCallback c; 227 TestUploadCallback c;
244 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback()); 228 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback());
245 base::RunLoop().RunUntilIdle(); 229 base::RunLoop().RunUntilIdle();
246 EXPECT_EQ(1u, c.called_count()); 230 EXPECT_EQ(1u, c.called_count());
247 EXPECT_TRUE(c.last_result().is_failure()); 231 EXPECT_TRUE(c.last_result().is_failure());
248 232
249 uploader()->Shutdown(); 233 uploader()->Shutdown();
250 } 234 }
251 235
252 TEST_F(DomainReliabilityUploaderTest, ServerErrorUpload) { 236 TEST_F(DomainReliabilityUploaderTest, ServerErrorUpload) {
253 interceptor()->ExpectRequestAndReturnResponseCode(500); 237 interceptor()->ExpectRequestAndReturnResponseHeaders("HTTP/1.1 500\r\n\r\n");
254 238
255 TestUploadCallback c; 239 TestUploadCallback c;
256 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback()); 240 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback());
257 base::RunLoop().RunUntilIdle(); 241 base::RunLoop().RunUntilIdle();
258 EXPECT_EQ(1u, c.called_count()); 242 EXPECT_EQ(1u, c.called_count());
259 EXPECT_TRUE(c.last_result().is_failure()); 243 EXPECT_TRUE(c.last_result().is_failure());
260 244
261 uploader()->Shutdown(); 245 uploader()->Shutdown();
262 } 246 }
263 247
264 TEST_F(DomainReliabilityUploaderTest, RetryAfterUpload) { 248 TEST_F(DomainReliabilityUploaderTest, RetryAfterUpload) {
265 interceptor()->ExpectRequestAndReturnResponseCodeAndHeaders( 249 interceptor()->ExpectRequestAndReturnResponseHeaders(
266 503,
267 "HTTP/1.1 503 Ugh\nRetry-After: 3600\n\n"); 250 "HTTP/1.1 503 Ugh\nRetry-After: 3600\n\n");
268 251
269 TestUploadCallback c; 252 TestUploadCallback c;
270 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback()); 253 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback());
271 base::RunLoop().RunUntilIdle(); 254 base::RunLoop().RunUntilIdle();
272 EXPECT_EQ(1u, c.called_count()); 255 EXPECT_EQ(1u, c.called_count());
273 EXPECT_TRUE(c.last_result().is_retry_after()); 256 EXPECT_TRUE(c.last_result().is_retry_after());
274 257
275 uploader()->Shutdown(); 258 uploader()->Shutdown();
276 } 259 }
277 260
278 TEST_F(DomainReliabilityUploaderTest, UploadDepth1) { 261 TEST_F(DomainReliabilityUploaderTest, UploadDepth1) {
279 interceptor()->ExpectRequestAndReturnResponseCode(200); 262 interceptor()->ExpectRequestAndReturnResponseHeaders("HTTP/1.1 200\r\n\r\n");
280 263
281 TestUploadCallback c; 264 TestUploadCallback c;
282 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback()); 265 uploader()->UploadReport("{}", 0, GURL(kUploadURL), c.callback());
283 base::RunLoop().RunUntilIdle(); 266 base::RunLoop().RunUntilIdle();
284 EXPECT_EQ(1u, c.called_count()); 267 EXPECT_EQ(1u, c.called_count());
285 268
286 EXPECT_EQ(1, interceptor()->last_upload_depth()); 269 EXPECT_EQ(1, interceptor()->last_upload_depth());
287 270
288 uploader()->Shutdown(); 271 uploader()->Shutdown();
289 } 272 }
290 273
291 TEST_F(DomainReliabilityUploaderTest, UploadDepth2) { 274 TEST_F(DomainReliabilityUploaderTest, UploadDepth2) {
292 interceptor()->ExpectRequestAndReturnResponseCode(200); 275 interceptor()->ExpectRequestAndReturnResponseHeaders("HTTP/1.1 200\r\n\r\n");
293 276
294 TestUploadCallback c; 277 TestUploadCallback c;
295 uploader()->UploadReport("{}", 1, GURL(kUploadURL), c.callback()); 278 uploader()->UploadReport("{}", 1, GURL(kUploadURL), c.callback());
296 base::RunLoop().RunUntilIdle(); 279 base::RunLoop().RunUntilIdle();
297 EXPECT_EQ(1u, c.called_count()); 280 EXPECT_EQ(1u, c.called_count());
298 281
299 EXPECT_EQ(2, interceptor()->last_upload_depth()); 282 EXPECT_EQ(2, interceptor()->last_upload_depth());
300 283
301 uploader()->Shutdown(); 284 uploader()->Shutdown();
302 } 285 }
(...skipping 19 matching lines...) Expand all
322 305
323 TestUploadCallback c; 306 TestUploadCallback c;
324 uploader()->UploadReport("{}", 1, GURL(kUploadURL), c.callback()); 307 uploader()->UploadReport("{}", 1, GURL(kUploadURL), c.callback());
325 base::RunLoop().RunUntilIdle(); 308 base::RunLoop().RunUntilIdle();
326 EXPECT_EQ(1u, c.called_count()); 309 EXPECT_EQ(1u, c.called_count());
327 EXPECT_EQ(0, interceptor()->request_count()); 310 EXPECT_EQ(0, interceptor()->request_count());
328 } 311 }
329 312
330 } // namespace 313 } // namespace
331 } // namespace domain_reliability 314 } // namespace domain_reliability
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698