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

Side by Side Diff: net/quic/core/quic_spdy_stream_test.cc

Issue 2915873003: This QUIC change includes: (Closed)
Patch Set: Created 3 years, 6 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/core/quic_spdy_session.cc ('k') | net/quic/core/quic_stream.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 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/quic/core/quic_spdy_stream.h" 5 #include "net/quic/core/quic_spdy_stream.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "net/quic/core/quic_connection.h" 10 #include "net/quic/core/quic_connection.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 char buffer[2048]; 48 char buffer[2048];
49 struct iovec vec; 49 struct iovec vec;
50 vec.iov_base = buffer; 50 vec.iov_base = buffer;
51 vec.iov_len = arraysize(buffer); 51 vec.iov_len = arraysize(buffer);
52 size_t bytes_read = Readv(&vec, 1); 52 size_t bytes_read = Readv(&vec, 1);
53 data_ += string(buffer, bytes_read); 53 data_ += string(buffer, bytes_read);
54 } 54 }
55 55
56 using QuicStream::WriteOrBufferData; 56 using QuicStream::WriteOrBufferData;
57 using QuicStream::CloseWriteSide; 57 using QuicStream::CloseWriteSide;
58 using QuicSpdyStream::set_ack_listener;
58 59
59 const string& data() const { return data_; } 60 const string& data() const { return data_; }
60 61
61 private: 62 private:
62 bool should_process_data_; 63 bool should_process_data_;
63 string data_; 64 string data_;
64 }; 65 };
65 66
66 class QuicSpdyStreamTest : public QuicTestWithParam<QuicVersion> { 67 class QuicSpdyStreamTest : public QuicTestWithParam<QuicVersion> {
67 public: 68 public:
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 EXPECT_CALL(*session_, WriteHeadersMock(_, _, _, _, _)); 957 EXPECT_CALL(*session_, WriteHeadersMock(_, _, _, _, _));
957 stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/true, nullptr); 958 stream_->WriteHeaders(SpdyHeaderBlock(), /*fin=*/true, nullptr);
958 EXPECT_TRUE(stream_->fin_sent()); 959 EXPECT_TRUE(stream_->fin_sent());
959 960
960 // Writing Trailers should fail, as the FIN has already been sent. 961 // Writing Trailers should fail, as the FIN has already been sent.
961 // populated with the number of body bytes written. 962 // populated with the number of body bytes written.
962 EXPECT_QUIC_BUG(stream_->WriteTrailers(SpdyHeaderBlock(), nullptr), 963 EXPECT_QUIC_BUG(stream_->WriteTrailers(SpdyHeaderBlock(), nullptr),
963 "Trailers cannot be sent after a FIN"); 964 "Trailers cannot be sent after a FIN");
964 } 965 }
965 966
967 TEST_P(QuicSpdyStreamTest, HeaderStreamNotiferCorrespondingSpdyStream) {
968 Initialize(kShouldProcessData);
969 if (!session_->use_stream_notifier()) {
970 return;
971 }
972
973 EXPECT_CALL(*session_, WritevData(_, _, _, _, _, _))
974 .Times(AnyNumber())
975 .WillRepeatedly(Invoke(MockQuicSession::ConsumeAllData));
976 testing::InSequence s;
977 QuicReferenceCountedPointer<MockAckListener> ack_listener1(
978 new MockAckListener());
979 QuicReferenceCountedPointer<MockAckListener> ack_listener2(
980 new MockAckListener());
981 stream_->set_ack_listener(ack_listener1);
982 stream2_->set_ack_listener(ack_listener2);
983
984 session_->headers_stream()->WriteOrBufferData("Header1", false,
985 ack_listener1);
986 stream_->WriteOrBufferData("Test1", true, nullptr);
987
988 session_->headers_stream()->WriteOrBufferData("Header2", false,
989 ack_listener2);
990 stream2_->WriteOrBufferData("Test2", false, nullptr);
991
992 QuicStreamFrame frame1(kHeadersStreamId, false, 0, "Header1");
993 QuicStreamFrame frame2(stream_->id(), true, 0, "Test1");
994 QuicStreamFrame frame3(kHeadersStreamId, false, 7, "Header2");
995 QuicStreamFrame frame4(stream2_->id(), false, 0, "Test2");
996
997 EXPECT_CALL(*ack_listener1, OnPacketRetransmitted(7));
998 session_->OnStreamFrameRetransmitted(frame1);
999
1000 EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _));
1001 session_->OnStreamFrameAcked(frame1, QuicTime::Delta::Zero());
1002 EXPECT_CALL(*ack_listener1, OnPacketAcked(5, _));
1003 session_->OnStreamFrameAcked(frame2, QuicTime::Delta::Zero());
1004 EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _));
1005 session_->OnStreamFrameAcked(frame3, QuicTime::Delta::Zero());
1006 EXPECT_CALL(*ack_listener2, OnPacketAcked(5, _));
1007 session_->OnStreamFrameAcked(frame4, QuicTime::Delta::Zero());
1008 }
1009
966 } // namespace 1010 } // namespace
967 } // namespace test 1011 } // namespace test
968 } // namespace net 1012 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_spdy_session.cc ('k') | net/quic/core/quic_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698