| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/tools/quic/quic_spdy_client_stream.h" | 5 #include "net/tools/quic/quic_spdy_client_stream.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| 11 #include "net/quic/core/quic_utils.h" | 11 #include "net/quic/core/quic_utils.h" |
| 12 #include "net/quic/core/spdy_utils.h" | 12 #include "net/quic/core/spdy_utils.h" |
| 13 #include "net/quic/test_tools/crypto_test_utils.h" | 13 #include "net/quic/test_tools/crypto_test_utils.h" |
| 14 #include "net/quic/test_tools/quic_test_utils.h" | 14 #include "net/quic/test_tools/quic_test_utils.h" |
| 15 #include "net/tools/quic/quic_client_session.h" | 15 #include "net/tools/quic/quic_client_session.h" |
| 16 #include "net/tools/quic/spdy_balsa_utils.h" | |
| 17 #include "testing/gmock/include/gmock/gmock.h" | 16 #include "testing/gmock/include/gmock/gmock.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 18 |
| 20 using net::test::CryptoTestUtils; | 19 using net::test::CryptoTestUtils; |
| 21 using net::test::DefaultQuicConfig; | 20 using net::test::DefaultQuicConfig; |
| 22 using net::test::MockQuicConnection; | 21 using net::test::MockQuicConnection; |
| 23 using net::test::MockQuicConnectionHelper; | 22 using net::test::MockQuicConnectionHelper; |
| 24 using net::test::SupportedVersions; | 23 using net::test::SupportedVersions; |
| 25 using net::test::kClientDataStreamId1; | 24 using net::test::kClientDataStreamId1; |
| 26 using net::test::kServerDataStreamId1; | 25 using net::test::kServerDataStreamId1; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 class StreamVisitor; | 61 class StreamVisitor; |
| 63 | 62 |
| 64 QuicSpdyClientStreamTest() | 63 QuicSpdyClientStreamTest() |
| 65 : connection_(new StrictMock<MockQuicConnection>(&helper_, | 64 : connection_(new StrictMock<MockQuicConnection>(&helper_, |
| 66 &alarm_factory_, | 65 &alarm_factory_, |
| 67 Perspective::IS_CLIENT)), | 66 Perspective::IS_CLIENT)), |
| 68 session_(connection_, &push_promise_index_), | 67 session_(connection_, &push_promise_index_), |
| 69 body_("hello world") { | 68 body_("hello world") { |
| 70 session_.Initialize(); | 69 session_.Initialize(); |
| 71 | 70 |
| 72 headers_.SetResponseFirstlineFromStringPieces("HTTP/1.1", "200", "Ok"); | 71 headers_[":status"] = "200"; |
| 73 headers_.ReplaceOrAppendHeader("content-length", "11"); | 72 headers_["content-length"] = "11"; |
| 74 | 73 headers_string_ = SpdyUtils::SerializeUncompressedHeaders(headers_); |
| 75 headers_string_ = net::SpdyBalsaUtils::SerializeResponseHeaders(headers_); | |
| 76 | 74 |
| 77 stream_.reset(new QuicSpdyClientStream(kClientDataStreamId1, &session_)); | 75 stream_.reset(new QuicSpdyClientStream(kClientDataStreamId1, &session_)); |
| 78 stream_visitor_.reset(new StreamVisitor()); | 76 stream_visitor_.reset(new StreamVisitor()); |
| 79 stream_->set_visitor(stream_visitor_.get()); | 77 stream_->set_visitor(stream_visitor_.get()); |
| 80 } | 78 } |
| 81 | 79 |
| 82 class StreamVisitor : public QuicSpdyClientStream::Visitor { | 80 class StreamVisitor : public QuicSpdyClientStream::Visitor { |
| 83 void OnClose(QuicSpdyStream* stream) override { | 81 void OnClose(QuicSpdyStream* stream) override { |
| 84 DVLOG(1) << "stream " << stream->id(); | 82 DVLOG(1) << "stream " << stream->id(); |
| 85 } | 83 } |
| 86 }; | 84 }; |
| 87 | 85 |
| 88 MockQuicConnectionHelper helper_; | 86 MockQuicConnectionHelper helper_; |
| 89 MockAlarmFactory alarm_factory_; | 87 MockAlarmFactory alarm_factory_; |
| 90 StrictMock<MockQuicConnection>* connection_; | 88 StrictMock<MockQuicConnection>* connection_; |
| 91 QuicClientPushPromiseIndex push_promise_index_; | 89 QuicClientPushPromiseIndex push_promise_index_; |
| 92 | 90 |
| 93 MockQuicClientSession session_; | 91 MockQuicClientSession session_; |
| 94 std::unique_ptr<QuicSpdyClientStream> stream_; | 92 std::unique_ptr<QuicSpdyClientStream> stream_; |
| 95 std::unique_ptr<StreamVisitor> stream_visitor_; | 93 std::unique_ptr<StreamVisitor> stream_visitor_; |
| 96 BalsaHeaders headers_; | 94 SpdyHeaderBlock headers_; |
| 97 string headers_string_; | 95 string headers_string_; |
| 98 string body_; | 96 string body_; |
| 99 }; | 97 }; |
| 100 | 98 |
| 101 TEST_F(QuicSpdyClientStreamTest, TestReceivingIllegalResponseStatusCode) { | 99 TEST_F(QuicSpdyClientStreamTest, TestReceivingIllegalResponseStatusCode) { |
| 102 headers_.ReplaceOrAppendHeader(":status", "200 ok"); | 100 headers_[":status"] = "200 ok"; |
| 103 headers_string_ = SpdyBalsaUtils::SerializeResponseHeaders(headers_); | 101 headers_string_ = SpdyUtils::SerializeUncompressedHeaders(headers_); |
| 104 | 102 |
| 105 stream_->OnStreamHeaders(headers_string_); | 103 stream_->OnStreamHeaders(headers_string_); |
| 106 EXPECT_CALL(*connection_, | 104 EXPECT_CALL(*connection_, |
| 107 SendRstStream(stream_->id(), QUIC_BAD_APPLICATION_PAYLOAD, 0)); | 105 SendRstStream(stream_->id(), QUIC_BAD_APPLICATION_PAYLOAD, 0)); |
| 108 stream_->OnStreamHeadersComplete(false, headers_string_.size()); | 106 stream_->OnStreamHeadersComplete(false, headers_string_.size()); |
| 109 EXPECT_EQ(QUIC_BAD_APPLICATION_PAYLOAD, stream_->stream_error()); | 107 EXPECT_EQ(QUIC_BAD_APPLICATION_PAYLOAD, stream_->stream_error()); |
| 110 } | 108 } |
| 111 | 109 |
| 112 TEST_F(QuicSpdyClientStreamTest, TestFraming) { | 110 TEST_F(QuicSpdyClientStreamTest, TestFraming) { |
| 113 stream_->OnStreamHeaders(headers_string_); | 111 stream_->OnStreamHeaders(headers_string_); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 // Now send the body, which should close the stream as the FIN has been | 173 // Now send the body, which should close the stream as the FIN has been |
| 176 // received, as well as all data. | 174 // received, as well as all data. |
| 177 EXPECT_CALL(session_, CloseStream(stream_->id())); | 175 EXPECT_CALL(session_, CloseStream(stream_->id())); |
| 178 stream_->OnStreamFrame( | 176 stream_->OnStreamFrame( |
| 179 QuicStreamFrame(stream_->id(), /*fin=*/false, /*offset=*/0, body_)); | 177 QuicStreamFrame(stream_->id(), /*fin=*/false, /*offset=*/0, body_)); |
| 180 } | 178 } |
| 181 | 179 |
| 182 } // namespace | 180 } // namespace |
| 183 } // namespace test | 181 } // namespace test |
| 184 } // namespace net | 182 } // namespace net |
| OLD | NEW |