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::kProtoSPDY21); |
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 |