| OLD | NEW |
| 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 "net/http/bidirectional_stream.h" | 5 #include "net/http/bidirectional_stream.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 | 329 |
| 330 private: | 330 private: |
| 331 DISALLOW_COPY_AND_ASSIGN(MockTimer); | 331 DISALLOW_COPY_AND_ASSIGN(MockTimer); |
| 332 }; | 332 }; |
| 333 | 333 |
| 334 } // namespace | 334 } // namespace |
| 335 | 335 |
| 336 class BidirectionalStreamTest : public testing::TestWithParam<bool> { | 336 class BidirectionalStreamTest : public testing::TestWithParam<bool> { |
| 337 public: | 337 public: |
| 338 BidirectionalStreamTest() | 338 BidirectionalStreamTest() |
| 339 : spdy_util_(kProtoHTTP2, true), | 339 : spdy_util_(true), |
| 340 session_deps_(kProtoHTTP2), | |
| 341 default_url_(kDefaultUrl), | 340 default_url_(kDefaultUrl), |
| 342 host_port_pair_(HostPortPair::FromURL(default_url_)), | 341 host_port_pair_(HostPortPair::FromURL(default_url_)), |
| 343 key_(host_port_pair_, ProxyServer::Direct(), PRIVACY_MODE_DISABLED), | 342 key_(host_port_pair_, ProxyServer::Direct(), PRIVACY_MODE_DISABLED), |
| 344 ssl_data_(SSLSocketDataProvider(ASYNC, OK)) { | 343 ssl_data_(SSLSocketDataProvider(ASYNC, OK)) { |
| 345 ssl_data_.SetNextProto(kProtoHTTP2); | 344 ssl_data_.SetNextProto(kProtoHTTP2); |
| 346 ssl_data_.cert = ImportCertFromFile(GetTestCertsDirectory(), "ok_cert.pem"); | 345 ssl_data_.cert = ImportCertFromFile(GetTestCertsDirectory(), "ok_cert.pem"); |
| 347 net_log_.SetCaptureMode(NetLogCaptureMode::IncludeSocketBytes()); | 346 net_log_.SetCaptureMode(NetLogCaptureMode::IncludeSocketBytes()); |
| 348 } | 347 } |
| 349 | 348 |
| 350 protected: | 349 protected: |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 EXPECT_EQ(0, delegate->on_data_sent_count()); | 503 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 505 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); | 504 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); |
| 506 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 505 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
| 507 delegate->GetTotalSentBytes()); | 506 delegate->GetTotalSentBytes()); |
| 508 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 507 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
| 509 delegate->GetTotalReceivedBytes()); | 508 delegate->GetTotalReceivedBytes()); |
| 510 } | 509 } |
| 511 | 510 |
| 512 // Tests that the NetLog contains correct entries. | 511 // Tests that the NetLog contains correct entries. |
| 513 TEST_F(BidirectionalStreamTest, TestNetLogContainEntries) { | 512 TEST_F(BidirectionalStreamTest, TestNetLogContainEntries) { |
| 514 BufferedSpdyFramer framer(spdy_util_.spdy_version()); | 513 BufferedSpdyFramer framer(HTTP2); |
| 515 | 514 |
| 516 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( | 515 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( |
| 517 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); | 516 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); |
| 518 std::unique_ptr<SpdySerializedFrame> data_frame( | 517 std::unique_ptr<SpdySerializedFrame> data_frame( |
| 519 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_FIN)); | 518 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_FIN)); |
| 520 MockWrite writes[] = { | 519 MockWrite writes[] = { |
| 521 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame, 3), | 520 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame, 3), |
| 522 }; | 521 }; |
| 523 | 522 |
| 524 std::unique_ptr<SpdySerializedFrame> resp( | 523 std::unique_ptr<SpdySerializedFrame> resp( |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 647 entries, index, NetLog::TYPE_BIDIRECTIONAL_STREAM_BYTES_RECEIVED, | 646 entries, index, NetLog::TYPE_BIDIRECTIONAL_STREAM_BYTES_RECEIVED, |
| 648 NetLog::PHASE_NONE); | 647 NetLog::PHASE_NONE); |
| 649 entry = entries[index]; | 648 entry = entries[index]; |
| 650 EXPECT_EQ(NetLog::SOURCE_BIDIRECTIONAL_STREAM, entry.source.type); | 649 EXPECT_EQ(NetLog::SOURCE_BIDIRECTIONAL_STREAM, entry.source.type); |
| 651 ExpectLogContainsSomewhere(entries, index, | 650 ExpectLogContainsSomewhere(entries, index, |
| 652 NetLog::TYPE_BIDIRECTIONAL_STREAM_ALIVE, | 651 NetLog::TYPE_BIDIRECTIONAL_STREAM_ALIVE, |
| 653 NetLog::PHASE_END); | 652 NetLog::PHASE_END); |
| 654 } | 653 } |
| 655 | 654 |
| 656 TEST_F(BidirectionalStreamTest, TestInterleaveReadDataAndSendData) { | 655 TEST_F(BidirectionalStreamTest, TestInterleaveReadDataAndSendData) { |
| 657 BufferedSpdyFramer framer(spdy_util_.spdy_version()); | 656 BufferedSpdyFramer framer(HTTP2); |
| 658 | 657 |
| 659 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( | 658 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( |
| 660 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); | 659 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); |
| 661 std::unique_ptr<SpdySerializedFrame> data_frame1( | 660 std::unique_ptr<SpdySerializedFrame> data_frame1( |
| 662 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); | 661 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); |
| 663 std::unique_ptr<SpdySerializedFrame> data_frame2( | 662 std::unique_ptr<SpdySerializedFrame> data_frame2( |
| 664 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); | 663 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); |
| 665 std::unique_ptr<SpdySerializedFrame> data_frame3( | 664 std::unique_ptr<SpdySerializedFrame> data_frame3( |
| 666 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_FIN)); | 665 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_FIN)); |
| 667 MockWrite writes[] = { | 666 MockWrite writes[] = { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 EXPECT_EQ(2, delegate->on_data_read_count()); | 750 EXPECT_EQ(2, delegate->on_data_read_count()); |
| 752 EXPECT_EQ(3, delegate->on_data_sent_count()); | 751 EXPECT_EQ(3, delegate->on_data_sent_count()); |
| 753 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); | 752 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); |
| 754 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 753 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
| 755 delegate->GetTotalSentBytes()); | 754 delegate->GetTotalSentBytes()); |
| 756 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 755 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
| 757 delegate->GetTotalReceivedBytes()); | 756 delegate->GetTotalReceivedBytes()); |
| 758 } | 757 } |
| 759 | 758 |
| 760 TEST_F(BidirectionalStreamTest, TestCoalesceSmallDataBuffers) { | 759 TEST_F(BidirectionalStreamTest, TestCoalesceSmallDataBuffers) { |
| 761 BufferedSpdyFramer framer(spdy_util_.spdy_version()); | 760 BufferedSpdyFramer framer(HTTP2); |
| 762 | 761 |
| 763 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( | 762 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( |
| 764 kDefaultUrl, 1, kBodyDataSize * 1, LOWEST, nullptr, 0)); | 763 kDefaultUrl, 1, kBodyDataSize * 1, LOWEST, nullptr, 0)); |
| 765 std::string body_data = "some really long piece of data"; | 764 std::string body_data = "some really long piece of data"; |
| 766 std::unique_ptr<SpdySerializedFrame> data_frame1(framer.CreateDataFrame( | 765 std::unique_ptr<SpdySerializedFrame> data_frame1(framer.CreateDataFrame( |
| 767 1, body_data.c_str(), body_data.size(), DATA_FLAG_FIN)); | 766 1, body_data.c_str(), body_data.size(), DATA_FLAG_FIN)); |
| 768 MockWrite writes[] = { | 767 MockWrite writes[] = { |
| 769 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame1, 1), | 768 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame1, 1), |
| 770 }; | 769 }; |
| 771 | 770 |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1077 EXPECT_EQ("bar", delegate->trailers().find("foo")->second); | 1076 EXPECT_EQ("bar", delegate->trailers().find("foo")->second); |
| 1078 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1077 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 1079 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); | 1078 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); |
| 1080 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 1079 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
| 1081 delegate->GetTotalSentBytes()); | 1080 delegate->GetTotalSentBytes()); |
| 1082 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 1081 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
| 1083 delegate->GetTotalReceivedBytes()); | 1082 delegate->GetTotalReceivedBytes()); |
| 1084 } | 1083 } |
| 1085 | 1084 |
| 1086 TEST_F(BidirectionalStreamTest, CancelStreamAfterSendData) { | 1085 TEST_F(BidirectionalStreamTest, CancelStreamAfterSendData) { |
| 1087 BufferedSpdyFramer framer(spdy_util_.spdy_version()); | 1086 BufferedSpdyFramer framer(HTTP2); |
| 1088 | 1087 |
| 1089 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( | 1088 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( |
| 1090 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); | 1089 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); |
| 1091 std::unique_ptr<SpdySerializedFrame> data_frame( | 1090 std::unique_ptr<SpdySerializedFrame> data_frame( |
| 1092 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); | 1091 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); |
| 1093 std::unique_ptr<SpdySerializedFrame> rst( | 1092 std::unique_ptr<SpdySerializedFrame> rst( |
| 1094 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 1093 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
| 1095 | 1094 |
| 1096 MockWrite writes[] = { | 1095 MockWrite writes[] = { |
| 1097 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame, 3), | 1096 CreateMockWrite(*req, 0), CreateMockWrite(*data_frame, 3), |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1144 EXPECT_EQ(0, delegate->on_data_read_count()); | 1143 EXPECT_EQ(0, delegate->on_data_read_count()); |
| 1145 // EXPECT_EQ(1, delegate->on_data_send_count()); | 1144 // EXPECT_EQ(1, delegate->on_data_send_count()); |
| 1146 // OnDataSent may or may not have been invoked. | 1145 // OnDataSent may or may not have been invoked. |
| 1147 // Calling after stream is canceled gives kProtoUnknown. | 1146 // Calling after stream is canceled gives kProtoUnknown. |
| 1148 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); | 1147 EXPECT_EQ(kProtoUnknown, delegate->GetProtocol()); |
| 1149 EXPECT_EQ(0, delegate->GetTotalSentBytes()); | 1148 EXPECT_EQ(0, delegate->GetTotalSentBytes()); |
| 1150 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); | 1149 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); |
| 1151 } | 1150 } |
| 1152 | 1151 |
| 1153 TEST_F(BidirectionalStreamTest, CancelStreamDuringReadData) { | 1152 TEST_F(BidirectionalStreamTest, CancelStreamDuringReadData) { |
| 1154 BufferedSpdyFramer framer(spdy_util_.spdy_version()); | 1153 BufferedSpdyFramer framer(HTTP2); |
| 1155 | 1154 |
| 1156 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( | 1155 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( |
| 1157 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); | 1156 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); |
| 1158 std::unique_ptr<SpdySerializedFrame> data_frame( | 1157 std::unique_ptr<SpdySerializedFrame> data_frame( |
| 1159 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); | 1158 framer.CreateDataFrame(1, kBodyData, kBodyDataSize, DATA_FLAG_NONE)); |
| 1160 std::unique_ptr<SpdySerializedFrame> rst( | 1159 std::unique_ptr<SpdySerializedFrame> rst( |
| 1161 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 1160 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); |
| 1162 | 1161 |
| 1163 MockWrite writes[] = { | 1162 MockWrite writes[] = { |
| 1164 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), | 1163 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1563 http_session_->http_server_properties()->GetAlternativeServices( | 1562 http_session_->http_server_properties()->GetAlternativeServices( |
| 1564 url::SchemeHostPort(default_url_)); | 1563 url::SchemeHostPort(default_url_)); |
| 1565 ASSERT_EQ(1u, alternative_service_vector.size()); | 1564 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 1566 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoQUIC1SPDY3), | 1565 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoQUIC1SPDY3), |
| 1567 alternative_service_vector[0].protocol); | 1566 alternative_service_vector[0].protocol); |
| 1568 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); | 1567 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); |
| 1569 EXPECT_EQ(443, alternative_service_vector[0].port); | 1568 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 1570 } | 1569 } |
| 1571 | 1570 |
| 1572 } // namespace net | 1571 } // namespace net |
| OLD | NEW |