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

Side by Side Diff: net/tools/quic/quic_server_session_test.cc

Issue 1413143004: Add new version QUIC_VERSION_29 in which streams honor RST_STREAM + NO_ERROR. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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/reliable_quic_stream.h ('k') | no next file » | 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/tools/quic/quic_server_session.h" 5 #include "net/tools/quic/quic_server_session.h"
6 6
7 #include "net/quic/crypto/quic_crypto_server_config.h" 7 #include "net/quic/crypto/quic_crypto_server_config.h"
8 #include "net/quic/crypto/quic_random.h" 8 #include "net/quic/crypto/quic_random.h"
9 #include "net/quic/proto/cached_network_parameters.pb.h" 9 #include "net/quic/proto/cached_network_parameters.pb.h"
10 #include "net/quic/quic_connection.h" 10 #include "net/quic/quic_connection.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 ::testing::ValuesIn(QuicSupportedVersions())); 127 ::testing::ValuesIn(QuicSupportedVersions()));
128 128
129 TEST_P(QuicServerSessionTest, CloseStreamDueToReset) { 129 TEST_P(QuicServerSessionTest, CloseStreamDueToReset) {
130 // Open a stream, then reset it. 130 // Open a stream, then reset it.
131 // Send two bytes of payload to open it. 131 // Send two bytes of payload to open it.
132 QuicStreamFrame data1(kClientDataStreamId1, false, 0, StringPiece("HT")); 132 QuicStreamFrame data1(kClientDataStreamId1, false, 0, StringPiece("HT"));
133 session_->OnStreamFrame(data1); 133 session_->OnStreamFrame(data1);
134 EXPECT_EQ(1u, session_->GetNumOpenStreams()); 134 EXPECT_EQ(1u, session_->GetNumOpenStreams());
135 135
136 // Send a reset (and expect the peer to send a RST in response). 136 // Send a reset (and expect the peer to send a RST in response).
137 QuicRstStreamFrame rst1(kClientDataStreamId1, QUIC_STREAM_NO_ERROR, 0); 137 QuicRstStreamFrame rst1(kClientDataStreamId1, QUIC_ERROR_PROCESSING_STREAM,
138 0);
138 EXPECT_CALL(*connection_, 139 EXPECT_CALL(*connection_,
139 SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0)); 140 SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0));
140 visitor_->OnRstStream(rst1); 141 visitor_->OnRstStream(rst1);
141 EXPECT_EQ(0u, session_->GetNumOpenStreams()); 142 EXPECT_EQ(0u, session_->GetNumOpenStreams());
142 143
143 // Send the same two bytes of payload in a new packet. 144 // Send the same two bytes of payload in a new packet.
144 visitor_->OnStreamFrame(data1); 145 visitor_->OnStreamFrame(data1);
145 146
146 // The stream should not be re-opened. 147 // The stream should not be re-opened.
147 EXPECT_EQ(0u, session_->GetNumOpenStreams()); 148 EXPECT_EQ(0u, session_->GetNumOpenStreams());
148 EXPECT_TRUE(connection_->connected()); 149 EXPECT_TRUE(connection_->connected());
149 } 150 }
150 151
151 TEST_P(QuicServerSessionTest, NeverOpenStreamDueToReset) { 152 TEST_P(QuicServerSessionTest, NeverOpenStreamDueToReset) {
152 // Send a reset (and expect the peer to send a RST in response). 153 // Send a reset (and expect the peer to send a RST in response).
153 QuicRstStreamFrame rst1(kClientDataStreamId1, QUIC_STREAM_NO_ERROR, 0); 154 QuicRstStreamFrame rst1(kClientDataStreamId1, QUIC_ERROR_PROCESSING_STREAM,
155 0);
154 EXPECT_CALL(*connection_, 156 EXPECT_CALL(*connection_,
155 SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0)); 157 SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0));
156 visitor_->OnRstStream(rst1); 158 visitor_->OnRstStream(rst1);
157 EXPECT_EQ(0u, session_->GetNumOpenStreams()); 159 EXPECT_EQ(0u, session_->GetNumOpenStreams());
158 160
159 // Send two bytes of payload. 161 // Send two bytes of payload.
160 QuicStreamFrame data1(kClientDataStreamId1, false, 0, StringPiece("HT")); 162 QuicStreamFrame data1(kClientDataStreamId1, false, 0, StringPiece("HT"));
161 visitor_->OnStreamFrame(data1); 163 visitor_->OnStreamFrame(data1);
162 164
163 // The stream should never be opened, now that the reset is received. 165 // The stream should never be opened, now that the reset is received.
164 EXPECT_EQ(0u, session_->GetNumOpenStreams()); 166 EXPECT_EQ(0u, session_->GetNumOpenStreams());
165 EXPECT_TRUE(connection_->connected()); 167 EXPECT_TRUE(connection_->connected());
166 } 168 }
167 169
168 TEST_P(QuicServerSessionTest, AcceptClosedStream) { 170 TEST_P(QuicServerSessionTest, AcceptClosedStream) {
169 // Send (empty) compressed headers followed by two bytes of data. 171 // Send (empty) compressed headers followed by two bytes of data.
170 QuicStreamFrame frame1(kClientDataStreamId1, false, 0, 172 QuicStreamFrame frame1(kClientDataStreamId1, false, 0,
171 StringPiece("\1\0\0\0\0\0\0\0HT")); 173 StringPiece("\1\0\0\0\0\0\0\0HT"));
172 QuicStreamFrame frame2(kClientDataStreamId2, false, 0, 174 QuicStreamFrame frame2(kClientDataStreamId2, false, 0,
173 StringPiece("\2\0\0\0\0\0\0\0HT")); 175 StringPiece("\2\0\0\0\0\0\0\0HT"));
174 visitor_->OnStreamFrame(frame1); 176 visitor_->OnStreamFrame(frame1);
175 visitor_->OnStreamFrame(frame2); 177 visitor_->OnStreamFrame(frame2);
176 EXPECT_EQ(2u, session_->GetNumOpenStreams()); 178 EXPECT_EQ(2u, session_->GetNumOpenStreams());
177 179
178 // Send a reset (and expect the peer to send a RST in response). 180 // Send a reset (and expect the peer to send a RST in response).
179 QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_STREAM_NO_ERROR, 0); 181 QuicRstStreamFrame rst(kClientDataStreamId1, QUIC_ERROR_PROCESSING_STREAM, 0);
180 EXPECT_CALL(*connection_, 182 EXPECT_CALL(*connection_,
181 SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0)); 183 SendRstStream(kClientDataStreamId1, QUIC_RST_ACKNOWLEDGEMENT, 0));
182 visitor_->OnRstStream(rst); 184 visitor_->OnRstStream(rst);
183 185
184 // If we were tracking, we'd probably want to reject this because it's data 186 // If we were tracking, we'd probably want to reject this because it's data
185 // past the reset point of stream 3. As it's a closed stream we just drop the 187 // past the reset point of stream 3. As it's a closed stream we just drop the
186 // data on the floor, but accept the packet because it has data for stream 5. 188 // data on the floor, but accept the packet because it has data for stream 5.
187 QuicStreamFrame frame3(kClientDataStreamId1, false, 2, StringPiece("TP")); 189 QuicStreamFrame frame3(kClientDataStreamId1, false, 2, StringPiece("TP"));
188 QuicStreamFrame frame4(kClientDataStreamId2, false, 2, StringPiece("TP")); 190 QuicStreamFrame frame4(kClientDataStreamId2, false, 2, StringPiece("TP"));
189 visitor_->OnStreamFrame(frame3); 191 visitor_->OnStreamFrame(frame3);
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 QuicServerSessionPeer::IsBandwidthResumptionEnabled(session_.get())); 492 QuicServerSessionPeer::IsBandwidthResumptionEnabled(session_.get()));
491 session_->OnConfigNegotiated(); 493 session_->OnConfigNegotiated();
492 EXPECT_FALSE( 494 EXPECT_FALSE(
493 QuicServerSessionPeer::IsBandwidthResumptionEnabled(session_.get())); 495 QuicServerSessionPeer::IsBandwidthResumptionEnabled(session_.get()));
494 } 496 }
495 497
496 } // namespace 498 } // namespace
497 } // namespace test 499 } // namespace test
498 } // namespace tools 500 } // namespace tools
499 } // namespace net 501 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/reliable_quic_stream.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698