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

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

Issue 76723002: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compilation error Created 7 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 | Annotate | Revision Log
OLDNEW
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/tools/quic/quic_reliable_server_stream.h" 5 #include "net/tools/quic/quic_reliable_server_stream.h"
6 6
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "net/quic/quic_spdy_compressor.h" 8 #include "net/quic/quic_spdy_compressor.h"
9 #include "net/quic/quic_utils.h" 9 #include "net/quic/quic_utils.h"
10 #include "net/quic/test_tools/quic_test_utils.h" 10 #include "net/quic/test_tools/quic_test_utils.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 115 }
116 116
117 BalsaHeaders response_headers_; 117 BalsaHeaders response_headers_;
118 EpollServer eps_; 118 EpollServer eps_;
119 StrictMock<MockSession> session_; 119 StrictMock<MockSession> session_;
120 scoped_ptr<QuicReliableServerStream> stream_; 120 scoped_ptr<QuicReliableServerStream> stream_;
121 string headers_string_; 121 string headers_string_;
122 string body_; 122 string body_;
123 }; 123 };
124 124
125 QuicConsumedData ConsumeAllData(QuicStreamId id, 125 QuicConsumedData ConsumeAllData(
126 const struct iovec* iov, 126 QuicStreamId id,
127 int iov_count, 127 const struct iovec* iov,
128 QuicStreamOffset offset, 128 int iov_count,
129 bool fin) { 129 QuicStreamOffset offset,
130 bool fin,
131 QuicAckNotifier::DelegateInterface* /*ack_notifier_delegate*/) {
130 ssize_t consumed_length = 0; 132 ssize_t consumed_length = 0;
131 for (int i = 0; i < iov_count; ++i) { 133 for (int i = 0; i < iov_count; ++i) {
132 consumed_length += iov[i].iov_len; 134 consumed_length += iov[i].iov_len;
133 } 135 }
134 return QuicConsumedData(consumed_length, fin); 136 return QuicConsumedData(consumed_length, fin);
135 } 137 }
136 138
137 TEST_F(QuicReliableServerStreamTest, TestFraming) { 139 TEST_F(QuicReliableServerStreamTest, TestFraming) {
138 EXPECT_CALL(session_, WritevData(_, _, _, _, _)).Times(AnyNumber()). 140 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(AnyNumber()).
139 WillRepeatedly(Invoke(ConsumeAllData)); 141 WillRepeatedly(Invoke(ConsumeAllData));
140 142
141 EXPECT_EQ(headers_string_.size(), stream_->ProcessData( 143 EXPECT_EQ(headers_string_.size(), stream_->ProcessData(
142 headers_string_.c_str(), headers_string_.size())); 144 headers_string_.c_str(), headers_string_.size()));
143 EXPECT_EQ(body_.size(), stream_->ProcessData(body_.c_str(), body_.size())); 145 EXPECT_EQ(body_.size(), stream_->ProcessData(body_.c_str(), body_.size()));
144 EXPECT_EQ(11u, stream_->headers().content_length()); 146 EXPECT_EQ(11u, stream_->headers().content_length());
145 EXPECT_EQ("https://www.google.com/", stream_->headers().request_uri()); 147 EXPECT_EQ("https://www.google.com/", stream_->headers().request_uri());
146 EXPECT_EQ("POST", stream_->headers().request_method()); 148 EXPECT_EQ("POST", stream_->headers().request_method());
147 EXPECT_EQ(body_, stream_->body()); 149 EXPECT_EQ(body_, stream_->body());
148 } 150 }
149 151
150 TEST_F(QuicReliableServerStreamTest, TestFramingOnePacket) { 152 TEST_F(QuicReliableServerStreamTest, TestFramingOnePacket) {
151 EXPECT_CALL(session_, WritevData(_, _, _, _, _)).Times(AnyNumber()). 153 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(AnyNumber()).
152 WillRepeatedly(Invoke(ConsumeAllData)); 154 WillRepeatedly(Invoke(ConsumeAllData));
153 155
154 string message = headers_string_ + body_; 156 string message = headers_string_ + body_;
155 157
156 EXPECT_EQ(message.size(), stream_->ProcessData( 158 EXPECT_EQ(message.size(), stream_->ProcessData(
157 message.c_str(), message.size())); 159 message.c_str(), message.size()));
158 EXPECT_EQ(11u, stream_->headers().content_length()); 160 EXPECT_EQ(11u, stream_->headers().content_length());
159 EXPECT_EQ("https://www.google.com/", 161 EXPECT_EQ("https://www.google.com/",
160 stream_->headers().request_uri()); 162 stream_->headers().request_uri());
161 EXPECT_EQ("POST", stream_->headers().request_method()); 163 EXPECT_EQ("POST", stream_->headers().request_method());
162 EXPECT_EQ(body_, stream_->body()); 164 EXPECT_EQ(body_, stream_->body());
163 } 165 }
164 166
165 TEST_F(QuicReliableServerStreamTest, TestFramingExtraData) { 167 TEST_F(QuicReliableServerStreamTest, TestFramingExtraData) {
166 string large_body = "hello world!!!!!!"; 168 string large_body = "hello world!!!!!!";
167 169
168 // We'll automatically write out an error (headers + body) 170 // We'll automatically write out an error (headers + body)
169 EXPECT_CALL(session_, WritevData(_, _, _, _, _)).Times(2). 171 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(2).
170 WillRepeatedly(Invoke(ConsumeAllData)); 172 WillRepeatedly(Invoke(ConsumeAllData));
171 173
172 EXPECT_EQ(headers_string_.size(), stream_->ProcessData( 174 EXPECT_EQ(headers_string_.size(), stream_->ProcessData(
173 headers_string_.c_str(), headers_string_.size())); 175 headers_string_.c_str(), headers_string_.size()));
174 // Content length is still 11. This will register as an error and we won't 176 // Content length is still 11. This will register as an error and we won't
175 // accept the bytes. 177 // accept the bytes.
176 stream_->ProcessData(large_body.c_str(), large_body.size()); 178 stream_->ProcessData(large_body.c_str(), large_body.size());
177 stream_->TerminateFromPeer(true); 179 stream_->TerminateFromPeer(true);
178 EXPECT_EQ(11u, stream_->headers().content_length()); 180 EXPECT_EQ(11u, stream_->headers().content_length());
179 EXPECT_EQ("https://www.google.com/", stream_->headers().request_uri()); 181 EXPECT_EQ("https://www.google.com/", stream_->headers().request_uri());
180 EXPECT_EQ("POST", stream_->headers().request_method()); 182 EXPECT_EQ("POST", stream_->headers().request_method());
181 } 183 }
182 184
183 TEST_F(QuicReliableServerStreamTest, TestSendResponse) { 185 TEST_F(QuicReliableServerStreamTest, TestSendResponse) {
184 BalsaHeaders* request_headers = 186 BalsaHeaders* request_headers =
185 QuicReliableServerStreamPeer::GetMutableHeaders(stream_.get()); 187 QuicReliableServerStreamPeer::GetMutableHeaders(stream_.get());
186 request_headers->SetRequestFirstlineFromStringPieces( 188 request_headers->SetRequestFirstlineFromStringPieces(
187 "GET", 189 "GET",
188 "https://www.google.com/foo", 190 "https://www.google.com/foo",
189 "HTTP/1.1"); 191 "HTTP/1.1");
190 192
191 response_headers_.SetResponseFirstlineFromStringPieces( 193 response_headers_.SetResponseFirstlineFromStringPieces(
192 "HTTP/1.1", "200", "OK"); 194 "HTTP/1.1", "200", "OK");
193 response_headers_.ReplaceOrAppendHeader("content-length", "3"); 195 response_headers_.ReplaceOrAppendHeader("content-length", "3");
194 196
195 InSequence s; 197 InSequence s;
196 EXPECT_CALL(session_, WritevData(_, _, 1, _, _)).Times(1) 198 EXPECT_CALL(session_, WritevData(_, _, 1, _, _, _)).Times(1)
197 .WillOnce(WithArgs<1>(Invoke( 199 .WillOnce(WithArgs<1>(Invoke(
198 this, &QuicReliableServerStreamTest::ValidateHeaders))); 200 this, &QuicReliableServerStreamTest::ValidateHeaders)));
199 201
200 EXPECT_CALL(session_, WritevData(_, _, 1, _, _)).Times(1). 202 EXPECT_CALL(session_, WritevData(_, _, 1, _, _, _)).Times(1).
201 WillOnce(Return(QuicConsumedData(3, true))); 203 WillOnce(Return(QuicConsumedData(3, true)));
202 204
203 stream_->SendResponse(); 205 stream_->SendResponse();
204 EXPECT_TRUE(stream_->read_side_closed()); 206 EXPECT_TRUE(stream_->read_side_closed());
205 EXPECT_TRUE(stream_->write_side_closed()); 207 EXPECT_TRUE(stream_->write_side_closed());
206 } 208 }
207 209
208 TEST_F(QuicReliableServerStreamTest, TestSendErrorResponse) { 210 TEST_F(QuicReliableServerStreamTest, TestSendErrorResponse) {
209 response_headers_.SetResponseFirstlineFromStringPieces( 211 response_headers_.SetResponseFirstlineFromStringPieces(
210 "HTTP/1.1", "500", "Server Error"); 212 "HTTP/1.1", "500", "Server Error");
211 response_headers_.ReplaceOrAppendHeader("content-length", "3"); 213 response_headers_.ReplaceOrAppendHeader("content-length", "3");
212 214
213 InSequence s; 215 InSequence s;
214 EXPECT_CALL(session_, WritevData(_, _, 1, _, _)).Times(1) 216 EXPECT_CALL(session_, WritevData(_, _, 1, _, _, _)).Times(1)
215 .WillOnce(WithArgs<1>(Invoke( 217 .WillOnce(WithArgs<1>(Invoke(
216 this, &QuicReliableServerStreamTest::ValidateHeaders))); 218 this, &QuicReliableServerStreamTest::ValidateHeaders)));
217 219
218 EXPECT_CALL(session_, WritevData(_, _, 1, _, _)).Times(1). 220 EXPECT_CALL(session_, WritevData(_, _, 1, _, _, _)).Times(1).
219 WillOnce(Return(QuicConsumedData(3, true))); 221 WillOnce(Return(QuicConsumedData(3, true)));
220 222
221 stream_->SendErrorResponse(); 223 stream_->SendErrorResponse();
222 EXPECT_TRUE(stream_->read_side_closed()); 224 EXPECT_TRUE(stream_->read_side_closed());
223 EXPECT_TRUE(stream_->write_side_closed()); 225 EXPECT_TRUE(stream_->write_side_closed());
224 } 226 }
225 227
226 } // namespace 228 } // namespace
227 } // namespace test 229 } // namespace test
228 } // namespace tools 230 } // namespace tools
229 } // namespace net 231 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_epoll_connection_helper_test.cc ('k') | net/tools/quic/quic_server_session_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698