| 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 "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 SPDYNOSSL, | 34 SPDYNOSSL, |
| 35 SPDYSSL, | 35 SPDYSSL, |
| 36 }; | 36 }; |
| 37 class SpdyNetworkTransactionSpdy21Test | 37 class SpdyNetworkTransactionSpdy21Test |
| 38 : public ::testing::TestWithParam<SpdyNetworkTransactionSpdy21TestTypes> { | 38 : public ::testing::TestWithParam<SpdyNetworkTransactionSpdy21TestTypes> { |
| 39 protected: | 39 protected: |
| 40 | 40 |
| 41 virtual void SetUp() { | 41 virtual void SetUp() { |
| 42 // By default, all tests turn off compression. | 42 // By default, all tests turn off compression. |
| 43 EnableCompression(false); | 43 EnableCompression(false); |
| 44 SpdySession::set_default_protocol(SSLClientSocket::kProtoSPDY2); |
| 44 google_get_request_initialized_ = false; | 45 google_get_request_initialized_ = false; |
| 45 google_post_request_initialized_ = false; | 46 google_post_request_initialized_ = false; |
| 46 google_chunked_post_request_initialized_ = false; | 47 google_chunked_post_request_initialized_ = false; |
| 47 } | 48 } |
| 48 | 49 |
| 49 virtual void TearDown() { | 50 virtual void TearDown() { |
| 50 // Empty the current queue. | 51 // Empty the current queue. |
| 51 MessageLoop::current()->RunAllPending(); | 52 MessageLoop::current()->RunAllPending(); |
| 52 } | 53 } |
| 53 | 54 |
| (...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 932 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); | 933 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 933 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(3, false)); | 934 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(3, false)); |
| 934 scoped_ptr<spdy::SpdyFrame> fbody2(ConstructSpdyBodyFrame(3, true)); | 935 scoped_ptr<spdy::SpdyFrame> fbody2(ConstructSpdyBodyFrame(3, true)); |
| 935 | 936 |
| 936 scoped_ptr<spdy::SpdyFrame> req3(ConstructSpdyGet(NULL, 0, false, 5, LOWEST)); | 937 scoped_ptr<spdy::SpdyFrame> req3(ConstructSpdyGet(NULL, 0, false, 5, LOWEST)); |
| 937 scoped_ptr<spdy::SpdyFrame> resp3(ConstructSpdyGetSynReply(NULL, 0, 5)); | 938 scoped_ptr<spdy::SpdyFrame> resp3(ConstructSpdyGetSynReply(NULL, 0, 5)); |
| 938 scoped_ptr<spdy::SpdyFrame> body3(ConstructSpdyBodyFrame(5, false)); | 939 scoped_ptr<spdy::SpdyFrame> body3(ConstructSpdyBodyFrame(5, false)); |
| 939 scoped_ptr<spdy::SpdyFrame> fbody3(ConstructSpdyBodyFrame(5, true)); | 940 scoped_ptr<spdy::SpdyFrame> fbody3(ConstructSpdyBodyFrame(5, true)); |
| 940 | 941 |
| 941 spdy::SpdySettings settings; | 942 spdy::SpdySettings settings; |
| 942 spdy::SettingsFlagsAndId id(0); | 943 spdy::SettingsFlagsAndId id(0, spdy::SETTINGS_MAX_CONCURRENT_STREAMS); |
| 943 id.set_id(spdy::SETTINGS_MAX_CONCURRENT_STREAMS); | |
| 944 const size_t max_concurrent_streams = 1; | 944 const size_t max_concurrent_streams = 1; |
| 945 | 945 |
| 946 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); | 946 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); |
| 947 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); | 947 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); |
| 948 | 948 |
| 949 MockWrite writes[] = { | 949 MockWrite writes[] = { |
| 950 CreateMockWrite(*req), | 950 CreateMockWrite(*req), |
| 951 CreateMockWrite(*req2), | 951 CreateMockWrite(*req2), |
| 952 CreateMockWrite(*req3), | 952 CreateMockWrite(*req3), |
| 953 }; | 953 }; |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 scoped_ptr<spdy::SpdyFrame> resp4(ConstructSpdyGetSynReply(NULL, 0, 5)); | 1071 scoped_ptr<spdy::SpdyFrame> resp4(ConstructSpdyGetSynReply(NULL, 0, 5)); |
| 1072 scoped_ptr<spdy::SpdyFrame> fbody4(ConstructSpdyBodyFrame(5, true)); | 1072 scoped_ptr<spdy::SpdyFrame> fbody4(ConstructSpdyBodyFrame(5, true)); |
| 1073 | 1073 |
| 1074 scoped_ptr<spdy::SpdyFrame> req3(ConstructSpdyGet(NULL, 0, false, 7, LOWEST)); | 1074 scoped_ptr<spdy::SpdyFrame> req3(ConstructSpdyGet(NULL, 0, false, 7, LOWEST)); |
| 1075 scoped_ptr<spdy::SpdyFrame> resp3(ConstructSpdyGetSynReply(NULL, 0, 7)); | 1075 scoped_ptr<spdy::SpdyFrame> resp3(ConstructSpdyGetSynReply(NULL, 0, 7)); |
| 1076 scoped_ptr<spdy::SpdyFrame> body3(ConstructSpdyBodyFrame(7, false)); | 1076 scoped_ptr<spdy::SpdyFrame> body3(ConstructSpdyBodyFrame(7, false)); |
| 1077 scoped_ptr<spdy::SpdyFrame> fbody3(ConstructSpdyBodyFrame(7, true)); | 1077 scoped_ptr<spdy::SpdyFrame> fbody3(ConstructSpdyBodyFrame(7, true)); |
| 1078 | 1078 |
| 1079 | 1079 |
| 1080 spdy::SpdySettings settings; | 1080 spdy::SpdySettings settings; |
| 1081 spdy::SettingsFlagsAndId id(0); | 1081 spdy::SettingsFlagsAndId id(0, spdy::SETTINGS_MAX_CONCURRENT_STREAMS); |
| 1082 id.set_id(spdy::SETTINGS_MAX_CONCURRENT_STREAMS); | |
| 1083 const size_t max_concurrent_streams = 1; | 1082 const size_t max_concurrent_streams = 1; |
| 1084 | 1083 |
| 1085 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); | 1084 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); |
| 1086 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); | 1085 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); |
| 1087 | 1086 |
| 1088 MockWrite writes[] = { CreateMockWrite(*req), | 1087 MockWrite writes[] = { CreateMockWrite(*req), |
| 1089 CreateMockWrite(*req2), | 1088 CreateMockWrite(*req2), |
| 1090 CreateMockWrite(*req4), | 1089 CreateMockWrite(*req4), |
| 1091 CreateMockWrite(*req3), | 1090 CreateMockWrite(*req3), |
| 1092 }; | 1091 }; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1216 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 1215 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 1217 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, false)); | 1216 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, false)); |
| 1218 scoped_ptr<spdy::SpdyFrame> fbody(ConstructSpdyBodyFrame(1, true)); | 1217 scoped_ptr<spdy::SpdyFrame> fbody(ConstructSpdyBodyFrame(1, true)); |
| 1219 | 1218 |
| 1220 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); | 1219 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); |
| 1221 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); | 1220 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 1222 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(3, false)); | 1221 scoped_ptr<spdy::SpdyFrame> body2(ConstructSpdyBodyFrame(3, false)); |
| 1223 scoped_ptr<spdy::SpdyFrame> fbody2(ConstructSpdyBodyFrame(3, true)); | 1222 scoped_ptr<spdy::SpdyFrame> fbody2(ConstructSpdyBodyFrame(3, true)); |
| 1224 | 1223 |
| 1225 spdy::SpdySettings settings; | 1224 spdy::SpdySettings settings; |
| 1226 spdy::SettingsFlagsAndId id(0); | 1225 spdy::SettingsFlagsAndId id(0, spdy::SETTINGS_MAX_CONCURRENT_STREAMS); |
| 1227 id.set_id(spdy::SETTINGS_MAX_CONCURRENT_STREAMS); | |
| 1228 const size_t max_concurrent_streams = 1; | 1226 const size_t max_concurrent_streams = 1; |
| 1229 | 1227 |
| 1230 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); | 1228 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); |
| 1231 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); | 1229 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); |
| 1232 | 1230 |
| 1233 MockWrite writes[] = { CreateMockWrite(*req), | 1231 MockWrite writes[] = { CreateMockWrite(*req), |
| 1234 CreateMockWrite(*req2), | 1232 CreateMockWrite(*req2), |
| 1235 }; | 1233 }; |
| 1236 MockRead reads[] = { | 1234 MockRead reads[] = { |
| 1237 CreateMockRead(*settings_frame, 1), | 1235 CreateMockRead(*settings_frame, 1), |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 // Construct the request. | 1351 // Construct the request. |
| 1354 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 1352 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 1355 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 1353 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 1356 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, false)); | 1354 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, false)); |
| 1357 scoped_ptr<spdy::SpdyFrame> fin_body(ConstructSpdyBodyFrame(1, true)); | 1355 scoped_ptr<spdy::SpdyFrame> fin_body(ConstructSpdyBodyFrame(1, true)); |
| 1358 | 1356 |
| 1359 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); | 1357 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); |
| 1360 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); | 1358 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 1361 | 1359 |
| 1362 spdy::SpdySettings settings; | 1360 spdy::SpdySettings settings; |
| 1363 spdy::SettingsFlagsAndId id(0); | 1361 spdy::SettingsFlagsAndId id(0, spdy::SETTINGS_MAX_CONCURRENT_STREAMS); |
| 1364 id.set_id(spdy::SETTINGS_MAX_CONCURRENT_STREAMS); | |
| 1365 const size_t max_concurrent_streams = 1; | 1362 const size_t max_concurrent_streams = 1; |
| 1366 | 1363 |
| 1367 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); | 1364 settings.push_back(spdy::SpdySetting(id, max_concurrent_streams)); |
| 1368 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); | 1365 scoped_ptr<spdy::SpdyFrame> settings_frame(ConstructSpdySettings(settings)); |
| 1369 | 1366 |
| 1370 MockWrite writes[] = { CreateMockWrite(*req), | 1367 MockWrite writes[] = { CreateMockWrite(*req), |
| 1371 CreateMockWrite(*req2), | 1368 CreateMockWrite(*req2), |
| 1372 }; | 1369 }; |
| 1373 MockRead reads[] = { | 1370 MockRead reads[] = { |
| 1374 CreateMockRead(*settings_frame, 1), | 1371 CreateMockRead(*settings_frame, 1), |
| (...skipping 3063 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4438 ConstructSpdyPacket(kSynReplyInfo, | 4435 ConstructSpdyPacket(kSynReplyInfo, |
| 4439 kExtraHeaders, | 4436 kExtraHeaders, |
| 4440 arraysize(kExtraHeaders) / 2, | 4437 arraysize(kExtraHeaders) / 2, |
| 4441 NULL, | 4438 NULL, |
| 4442 0)); | 4439 0)); |
| 4443 | 4440 |
| 4444 unsigned int kSampleId1 = 0x1; | 4441 unsigned int kSampleId1 = 0x1; |
| 4445 unsigned int kSampleValue1 = 0x0a0a0a0a; | 4442 unsigned int kSampleValue1 = 0x0a0a0a0a; |
| 4446 unsigned int kSampleId2 = 0x2; | 4443 unsigned int kSampleId2 = 0x2; |
| 4447 unsigned int kSampleValue2 = 0x0b0b0b0b; | 4444 unsigned int kSampleValue2 = 0x0b0b0b0b; |
| 4448 unsigned int kSampleId3 = 0xababab; | 4445 unsigned int kSampleId3 = 0x3; |
| 4449 unsigned int kSampleValue3 = 0x0c0c0c0c; | 4446 unsigned int kSampleValue3 = 0x0c0c0c0c; |
| 4450 scoped_ptr<spdy::SpdyFrame> settings_frame; | 4447 scoped_ptr<spdy::SpdyFrame> settings_frame; |
| 4451 { | 4448 { |
| 4452 // Construct the SETTINGS frame. | 4449 // Construct the SETTINGS frame. |
| 4453 spdy::SpdySettings settings; | 4450 spdy::SpdySettings settings; |
| 4454 spdy::SettingsFlagsAndId setting(0); | |
| 4455 // First add a persisted setting | 4451 // First add a persisted setting |
| 4456 setting.set_flags(spdy::SETTINGS_FLAG_PLEASE_PERSIST); | 4452 spdy::SettingsFlagsAndId setting1(spdy::SETTINGS_FLAG_PLEASE_PERSIST, |
| 4457 setting.set_id(kSampleId1); | 4453 kSampleId1); |
| 4458 settings.push_back(std::make_pair(setting, kSampleValue1)); | 4454 settings.push_back(std::make_pair(setting1, kSampleValue1)); |
| 4459 // Next add a non-persisted setting | 4455 // Next add a non-persisted setting |
| 4460 setting.set_flags(0); | 4456 spdy::SettingsFlagsAndId setting2(0, kSampleId2); |
| 4461 setting.set_id(kSampleId2); | 4457 settings.push_back(std::make_pair(setting2, kSampleValue2)); |
| 4462 settings.push_back(std::make_pair(setting, kSampleValue2)); | |
| 4463 // Next add another persisted setting | 4458 // Next add another persisted setting |
| 4464 setting.set_flags(spdy::SETTINGS_FLAG_PLEASE_PERSIST); | 4459 spdy::SettingsFlagsAndId setting3(spdy::SETTINGS_FLAG_PLEASE_PERSIST, |
| 4465 setting.set_id(kSampleId3); | 4460 kSampleId3); |
| 4466 settings.push_back(std::make_pair(setting, kSampleValue3)); | 4461 settings.push_back(std::make_pair(setting3, kSampleValue3)); |
| 4467 settings_frame.reset(ConstructSpdySettings(settings)); | 4462 settings_frame.reset(ConstructSpdySettings(settings)); |
| 4468 } | 4463 } |
| 4469 | 4464 |
| 4470 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 4465 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| 4471 MockRead reads[] = { | 4466 MockRead reads[] = { |
| 4472 CreateMockRead(*reply), | 4467 CreateMockRead(*reply), |
| 4473 CreateMockRead(*body), | 4468 CreateMockRead(*body), |
| 4474 CreateMockRead(*settings_frame), | 4469 CreateMockRead(*settings_frame), |
| 4475 MockRead(ASYNC, 0, 0) // EOF | 4470 MockRead(ASYNC, 0, 0) // EOF |
| 4476 }; | 4471 }; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4540 EXPECT_TRUE(spdy_session_pool->http_server_properties()->GetSpdySettings( | 4535 EXPECT_TRUE(spdy_session_pool->http_server_properties()->GetSpdySettings( |
| 4541 host_port_pair).empty()); | 4536 host_port_pair).empty()); |
| 4542 | 4537 |
| 4543 unsigned int kSampleId1 = 0x1; | 4538 unsigned int kSampleId1 = 0x1; |
| 4544 unsigned int kSampleValue1 = 0x0a0a0a0a; | 4539 unsigned int kSampleValue1 = 0x0a0a0a0a; |
| 4545 unsigned int kSampleId2 = 0xababab; | 4540 unsigned int kSampleId2 = 0xababab; |
| 4546 unsigned int kSampleValue2 = 0x0c0c0c0c; | 4541 unsigned int kSampleValue2 = 0x0c0c0c0c; |
| 4547 // Manually insert settings into the SpdySettingsStorage here. | 4542 // Manually insert settings into the SpdySettingsStorage here. |
| 4548 { | 4543 { |
| 4549 spdy::SpdySettings settings; | 4544 spdy::SpdySettings settings; |
| 4550 spdy::SettingsFlagsAndId setting(0); | |
| 4551 // First add a persisted setting | 4545 // First add a persisted setting |
| 4552 setting.set_flags(spdy::SETTINGS_FLAG_PLEASE_PERSIST); | 4546 spdy::SettingsFlagsAndId setting1(spdy::SETTINGS_FLAG_PLEASE_PERSIST, |
| 4553 setting.set_id(kSampleId1); | 4547 kSampleId1); |
| 4554 settings.push_back(std::make_pair(setting, kSampleValue1)); | 4548 settings.push_back(std::make_pair(setting1, kSampleValue1)); |
| 4555 // Next add another persisted setting | 4549 // Next add another persisted setting |
| 4556 setting.set_flags(spdy::SETTINGS_FLAG_PLEASE_PERSIST); | 4550 spdy::SettingsFlagsAndId setting2(spdy::SETTINGS_FLAG_PLEASE_PERSIST, |
| 4557 setting.set_id(kSampleId2); | 4551 kSampleId2); |
| 4558 settings.push_back(std::make_pair(setting, kSampleValue2)); | 4552 settings.push_back(std::make_pair(setting2, kSampleValue2)); |
| 4559 | 4553 |
| 4560 spdy_session_pool->http_server_properties()->SetSpdySettings( | 4554 spdy_session_pool->http_server_properties()->SetSpdySettings( |
| 4561 host_port_pair, settings); | 4555 host_port_pair, settings); |
| 4562 } | 4556 } |
| 4563 | 4557 |
| 4564 EXPECT_EQ(2u, spdy_session_pool->http_server_properties()->GetSpdySettings( | 4558 EXPECT_EQ(2u, spdy_session_pool->http_server_properties()->GetSpdySettings( |
| 4565 host_port_pair).size()); | 4559 host_port_pair).size()); |
| 4566 | 4560 |
| 4567 // Construct the SETTINGS frame. | 4561 // Construct the SETTINGS frame. |
| 4568 const spdy::SpdySettings& settings = | 4562 const spdy::SpdySettings& settings = |
| (...skipping 1327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5896 << " Write index: " | 5890 << " Write index: " |
| 5897 << data->write_index(); | 5891 << data->write_index(); |
| 5898 | 5892 |
| 5899 // Verify the SYN_REPLY. | 5893 // Verify the SYN_REPLY. |
| 5900 HttpResponseInfo response = *trans->GetResponseInfo(); | 5894 HttpResponseInfo response = *trans->GetResponseInfo(); |
| 5901 EXPECT_TRUE(response.headers != NULL); | 5895 EXPECT_TRUE(response.headers != NULL); |
| 5902 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); | 5896 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); |
| 5903 } | 5897 } |
| 5904 | 5898 |
| 5905 } // namespace net | 5899 } // namespace net |
| OLD | NEW |