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

Side by Side Diff: net/tools/quic/end_to_end_test.cc

Issue 1028923002: Make some changes to the QuicInMemory server to clarify the interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests 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 unified diff | Download patch
« no previous file with comments | « net/quic/quic_end_to_end_unittest.cc ('k') | net/tools/quic/quic_in_memory_cache.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 client_config_.SetInitialStreamFlowControlWindowToSend( 205 client_config_.SetInitialStreamFlowControlWindowToSend(
206 2 * kInitialStreamFlowControlWindowForTest); 206 2 * kInitialStreamFlowControlWindowForTest);
207 client_config_.SetInitialSessionFlowControlWindowToSend( 207 client_config_.SetInitialSessionFlowControlWindowToSend(
208 2 * kInitialSessionFlowControlWindowForTest); 208 2 * kInitialSessionFlowControlWindowForTest);
209 server_config_.SetInitialStreamFlowControlWindowToSend( 209 server_config_.SetInitialStreamFlowControlWindowToSend(
210 3 * kInitialStreamFlowControlWindowForTest); 210 3 * kInitialStreamFlowControlWindowForTest);
211 server_config_.SetInitialSessionFlowControlWindowToSend( 211 server_config_.SetInitialSessionFlowControlWindowToSend(
212 3 * kInitialSessionFlowControlWindowForTest); 212 3 * kInitialSessionFlowControlWindowForTest);
213 213
214 QuicInMemoryCachePeer::ResetForTests(); 214 QuicInMemoryCachePeer::ResetForTests();
215 AddToCache("GET", "https://www.google.com/foo", 215 AddToCache("/foo", 200, "OK", kFooResponseBody);
216 "HTTP/1.1", "200", "OK", kFooResponseBody); 216 AddToCache("/bar", 200, "OK", kBarResponseBody);
217 AddToCache("GET", "https://www.google.com/bar",
218 "HTTP/1.1", "200", "OK", kBarResponseBody);
219 } 217 }
220 218
221 ~EndToEndTest() override { 219 ~EndToEndTest() override {
222 // TODO(rtenneti): port RecycleUnusedPort if needed. 220 // TODO(rtenneti): port RecycleUnusedPort if needed.
223 // RecycleUnusedPort(server_address_.port()); 221 // RecycleUnusedPort(server_address_.port());
224 QuicInMemoryCachePeer::ResetForTests(); 222 QuicInMemoryCachePeer::ResetForTests();
225 } 223 }
226 224
227 QuicTestClient* CreateQuicClient(QuicPacketWriterWrapper* writer) { 225 QuicTestClient* CreateQuicClient(QuicPacketWriterWrapper* writer) {
228 QuicTestClient* client = new QuicTestClient( 226 QuicTestClient* client = new QuicTestClient(
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 334
337 void StopServer() { 335 void StopServer() {
338 if (!server_started_) 336 if (!server_started_)
339 return; 337 return;
340 if (server_thread_.get()) { 338 if (server_thread_.get()) {
341 server_thread_->Quit(); 339 server_thread_->Quit();
342 server_thread_->Join(); 340 server_thread_->Join();
343 } 341 }
344 } 342 }
345 343
346 void AddToCache(StringPiece method, 344 void AddToCache(StringPiece path,
347 StringPiece path, 345 int response_code,
348 StringPiece version,
349 StringPiece response_code,
350 StringPiece response_detail, 346 StringPiece response_detail,
351 StringPiece body) { 347 StringPiece body) {
352 QuicInMemoryCache::GetInstance()->AddSimpleResponse( 348 QuicInMemoryCache::GetInstance()->AddSimpleResponse(
353 method, path, version, response_code, response_detail, body); 349 "www.google.com", path, response_code, response_detail, body);
354 } 350 }
355 351
356 void SetPacketLossPercentage(int32 loss) { 352 void SetPacketLossPercentage(int32 loss) {
357 // TODO(rtenneti): enable when we can do random packet loss tests in 353 // TODO(rtenneti): enable when we can do random packet loss tests in
358 // chrome's tree. 354 // chrome's tree.
359 if (loss != 0 && loss != 100) 355 if (loss != 0 && loss != 100)
360 return; 356 return;
361 client_writer_->set_fake_packet_loss_percentage(loss); 357 client_writer_->set_fake_packet_loss_percentage(loss);
362 server_writer_->set_fake_packet_loss_percentage(loss); 358 server_writer_->set_fake_packet_loss_percentage(loss);
363 } 359 }
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); 491 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
496 492
497 client2->SendData("eep", true); 493 client2->SendData("eep", true);
498 client2->WaitForResponse(); 494 client2->WaitForResponse();
499 EXPECT_EQ(kFooResponseBody, client2->response_body()); 495 EXPECT_EQ(kFooResponseBody, client2->response_body());
500 EXPECT_EQ(200u, client2->response_headers()->parsed_response_code()); 496 EXPECT_EQ(200u, client2->response_headers()->parsed_response_code());
501 } 497 }
502 498
503 TEST_P(EndToEndTest, RequestOverMultiplePackets) { 499 TEST_P(EndToEndTest, RequestOverMultiplePackets) {
504 // Send a large enough request to guarantee fragmentation. 500 // Send a large enough request to guarantee fragmentation.
505 string huge_request = 501 string huge_request = "/some/path?query=" + string(kMaxPacketSize, '.');
506 "https://www.google.com/some/path?query=" + string(kMaxPacketSize, '.'); 502 AddToCache(huge_request, 200, "OK", kBarResponseBody);
507 AddToCache("GET", huge_request, "HTTP/1.1", "200", "OK", kBarResponseBody);
508 503
509 ASSERT_TRUE(Initialize()); 504 ASSERT_TRUE(Initialize());
510 505
511 EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest(huge_request)); 506 EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest(huge_request));
512 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); 507 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
513 } 508 }
514 509
515 TEST_P(EndToEndTest, MultiplePacketsRandomOrder) { 510 TEST_P(EndToEndTest, MultiplePacketsRandomOrder) {
516 // Send a large enough request to guarantee fragmentation. 511 // Send a large enough request to guarantee fragmentation.
517 string huge_request = 512 string huge_request = "/some/path?query=" + string(kMaxPacketSize, '.');
518 "https://www.google.com/some/path?query=" + string(kMaxPacketSize, '.'); 513 AddToCache(huge_request, 200, "OK", kBarResponseBody);
519 AddToCache("GET", huge_request, "HTTP/1.1", "200", "OK", kBarResponseBody);
520 514
521 ASSERT_TRUE(Initialize()); 515 ASSERT_TRUE(Initialize());
522 SetPacketSendDelay(QuicTime::Delta::FromMilliseconds(2)); 516 SetPacketSendDelay(QuicTime::Delta::FromMilliseconds(2));
523 SetReorderPercentage(50); 517 SetReorderPercentage(50);
524 518
525 EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest(huge_request)); 519 EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest(huge_request));
526 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); 520 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
527 } 521 }
528 522
529 TEST_P(EndToEndTest, PostMissingBytes) { 523 TEST_P(EndToEndTest, PostMissingBytes) {
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); 1055 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code());
1062 } 1056 }
1063 1057
1064 TEST_P(EndToEndTest, MaxStreamsUberTest) { 1058 TEST_P(EndToEndTest, MaxStreamsUberTest) {
1065 SetPacketLossPercentage(1); 1059 SetPacketLossPercentage(1);
1066 ASSERT_TRUE(Initialize()); 1060 ASSERT_TRUE(Initialize());
1067 string large_body; 1061 string large_body;
1068 GenerateBody(&large_body, 10240); 1062 GenerateBody(&large_body, 10240);
1069 int max_streams = 100; 1063 int max_streams = 100;
1070 1064
1071 AddToCache("GET", "/large_response", "HTTP/1.1", "200", "OK", large_body);; 1065 AddToCache("/large_response", 200, "OK", large_body);;
1072 1066
1073 client_->client()->WaitForCryptoHandshakeConfirmed(); 1067 client_->client()->WaitForCryptoHandshakeConfirmed();
1074 SetPacketLossPercentage(10); 1068 SetPacketLossPercentage(10);
1075 1069
1076 for (int i = 0; i < max_streams; ++i) { 1070 for (int i = 0; i < max_streams; ++i) {
1077 EXPECT_LT(0, client_->SendRequest("/large_response")); 1071 EXPECT_LT(0, client_->SendRequest("/large_response"));
1078 } 1072 }
1079 1073
1080 // WaitForEvents waits 50ms and returns true if there are outstanding 1074 // WaitForEvents waits 50ms and returns true if there are outstanding
1081 // requests. 1075 // requests.
1082 while (client_->client()->WaitForEvents() == true) { 1076 while (client_->client()->WaitForEvents() == true) {
1083 } 1077 }
1084 } 1078 }
1085 1079
1086 TEST_P(EndToEndTest, StreamCancelErrorTest) { 1080 TEST_P(EndToEndTest, StreamCancelErrorTest) {
1087 ASSERT_TRUE(Initialize()); 1081 ASSERT_TRUE(Initialize());
1088 string small_body; 1082 string small_body;
1089 GenerateBody(&small_body, 256); 1083 GenerateBody(&small_body, 256);
1090 1084
1091 AddToCache("GET", "/small_response", "HTTP/1.1", "200", "OK", small_body); 1085 AddToCache("/small_response", 200, "OK", small_body);
1092 1086
1093 client_->client()->WaitForCryptoHandshakeConfirmed(); 1087 client_->client()->WaitForCryptoHandshakeConfirmed();
1094 1088
1095 QuicSession* session = client_->client()->session(); 1089 QuicSession* session = client_->client()->session();
1096 // Lose the request. 1090 // Lose the request.
1097 SetPacketLossPercentage(100); 1091 SetPacketLossPercentage(100);
1098 EXPECT_LT(0, client_->SendRequest("/small_response")); 1092 EXPECT_LT(0, client_->SendRequest("/small_response"));
1099 client_->client()->WaitForEvents(); 1093 client_->client()->WaitForEvents();
1100 // Transmit the cancel, and ensure the connection is torn down properly. 1094 // Transmit the cancel, and ensure the connection is torn down properly.
1101 SetPacketLossPercentage(0); 1095 SetPacketLossPercentage(0);
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 // Waits for up to 50 ms. 1393 // Waits for up to 50 ms.
1400 client_->client()->WaitForEvents(); 1394 client_->client()->WaitForEvents();
1401 } 1395 }
1402 server_thread_->Resume(); 1396 server_thread_->Resume();
1403 } 1397 }
1404 1398
1405 } // namespace 1399 } // namespace
1406 } // namespace test 1400 } // namespace test
1407 } // namespace tools 1401 } // namespace tools
1408 } // namespace net 1402 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_end_to_end_unittest.cc ('k') | net/tools/quic/quic_in_memory_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698