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

Side by Side Diff: net/spdy/buffered_spdy_framer_unittest.cc

Issue 1852423004: Implement SpdySerializedFrame move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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/spdy/buffered_spdy_framer.cc ('k') | net/spdy/spdy_buffer.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 (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/spdy/buffered_spdy_framer.h" 5 #include "net/spdy/buffered_spdy_framer.h"
6 6
7 #include "net/spdy/spdy_test_util_common.h" 7 #include "net/spdy/spdy_test_util_common.h"
8 #include "testing/platform_test.h" 8 #include "testing/platform_test.h"
9 9
10 namespace net { 10 namespace net {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 111
112 void OnGoAway(SpdyStreamId last_accepted_stream_id, 112 void OnGoAway(SpdyStreamId last_accepted_stream_id,
113 SpdyGoAwayStatus status, 113 SpdyGoAwayStatus status,
114 StringPiece debug_data) override { 114 StringPiece debug_data) override {
115 goaway_count_++; 115 goaway_count_++;
116 goaway_last_accepted_stream_id_ = last_accepted_stream_id; 116 goaway_last_accepted_stream_id_ = last_accepted_stream_id;
117 goaway_status_ = status; 117 goaway_status_ = status;
118 goaway_debug_data_.assign(debug_data.data(), debug_data.size()); 118 goaway_debug_data_.assign(debug_data.data(), debug_data.size());
119 } 119 }
120 120
121 void OnDataFrameHeader(const SpdyFrame* frame) { 121 void OnDataFrameHeader(const SpdySerializedFrame* frame) {
122 LOG(FATAL) << "Unexpected OnDataFrameHeader call."; 122 LOG(FATAL) << "Unexpected OnDataFrameHeader call.";
123 } 123 }
124 124
125 void OnRstStream(const SpdyFrame& frame) {} 125 void OnRstStream(const SpdySerializedFrame& frame) {}
126 void OnGoAway(const SpdyFrame& frame) {} 126 void OnGoAway(const SpdySerializedFrame& frame) {}
127 void OnPing(const SpdyFrame& frame) {} 127 void OnPing(const SpdySerializedFrame& frame) {}
128 void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) override {} 128 void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) override {}
129 129
130 void OnPushPromise(SpdyStreamId stream_id, 130 void OnPushPromise(SpdyStreamId stream_id,
131 SpdyStreamId promised_stream_id, 131 SpdyStreamId promised_stream_id,
132 const SpdyHeaderBlock& headers) override { 132 const SpdyHeaderBlock& headers) override {
133 header_stream_id_ = stream_id; 133 header_stream_id_ = stream_id;
134 EXPECT_NE(header_stream_id_, SpdyFramer::kInvalidStream); 134 EXPECT_NE(header_stream_id_, SpdyFramer::kInvalidStream);
135 push_promise_frame_count_++; 135 push_promise_frame_count_++;
136 promised_stream_id_ = promised_stream_id; 136 promised_stream_id_ = promised_stream_id;
137 EXPECT_NE(promised_stream_id_, SpdyFramer::kInvalidStream); 137 EXPECT_NE(promised_stream_id_, SpdyFramer::kInvalidStream);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 INSTANTIATE_TEST_CASE_P(NextProto, 201 INSTANTIATE_TEST_CASE_P(NextProto,
202 BufferedSpdyFramerTest, 202 BufferedSpdyFramerTest,
203 testing::Values(kProtoSPDY31, 203 testing::Values(kProtoSPDY31,
204 kProtoHTTP2)); 204 kProtoHTTP2));
205 205
206 TEST_P(BufferedSpdyFramerTest, OnSetting) { 206 TEST_P(BufferedSpdyFramerTest, OnSetting) {
207 SpdyFramer framer(spdy_version()); 207 SpdyFramer framer(spdy_version());
208 SpdySettingsIR settings_ir; 208 SpdySettingsIR settings_ir;
209 settings_ir.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE, false, false, 2); 209 settings_ir.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE, false, false, 2);
210 settings_ir.AddSetting(SETTINGS_MAX_CONCURRENT_STREAMS, false, false, 3); 210 settings_ir.AddSetting(SETTINGS_MAX_CONCURRENT_STREAMS, false, false, 3);
211 scoped_ptr<SpdyFrame> control_frame(framer.SerializeSettings(settings_ir)); 211 SpdySerializedFrame control_frame(framer.SerializeSettings(settings_ir));
212 TestBufferedSpdyVisitor visitor(spdy_version()); 212 TestBufferedSpdyVisitor visitor(spdy_version());
213 213
214 visitor.SimulateInFramer( 214 visitor.SimulateInFramer(
215 reinterpret_cast<unsigned char*>(control_frame->data()), 215 reinterpret_cast<unsigned char*>(control_frame.data()),
216 control_frame->size()); 216 control_frame.size());
217 EXPECT_EQ(0, visitor.error_count_); 217 EXPECT_EQ(0, visitor.error_count_);
218 EXPECT_EQ(2, visitor.setting_count_); 218 EXPECT_EQ(2, visitor.setting_count_);
219 } 219 }
220 220
221 TEST_P(BufferedSpdyFramerTest, ReadSynStreamHeaderBlock) { 221 TEST_P(BufferedSpdyFramerTest, ReadSynStreamHeaderBlock) {
222 if (spdy_version() > SPDY3) { 222 if (spdy_version() > SPDY3) {
223 // SYN_STREAM not supported in SPDY>3. 223 // SYN_STREAM not supported in SPDY>3.
224 return; 224 return;
225 } 225 }
226 SpdyHeaderBlock headers; 226 SpdyHeaderBlock headers;
227 headers["aa"] = "vv"; 227 headers["aa"] = "vv";
228 headers["bb"] = "ww"; 228 headers["bb"] = "ww";
229 BufferedSpdyFramer framer(spdy_version()); 229 BufferedSpdyFramer framer(spdy_version());
230 scoped_ptr<SpdyFrame> control_frame( 230 scoped_ptr<SpdySerializedFrame> control_frame(
231 framer.CreateSynStream(1, // stream_id 231 framer.CreateSynStream(1, // stream_id
232 0, // associated_stream_id 232 0, // associated_stream_id
233 1, // priority 233 1, // priority
234 CONTROL_FLAG_NONE, 234 CONTROL_FLAG_NONE, &headers));
235 &headers));
236 EXPECT_TRUE(control_frame.get() != NULL); 235 EXPECT_TRUE(control_frame.get() != NULL);
237 236
238 TestBufferedSpdyVisitor visitor(spdy_version()); 237 TestBufferedSpdyVisitor visitor(spdy_version());
239 visitor.SimulateInFramer( 238 visitor.SimulateInFramer(
240 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 239 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
241 control_frame.get()->size()); 240 control_frame.get()->size());
242 EXPECT_EQ(0, visitor.error_count_); 241 EXPECT_EQ(0, visitor.error_count_);
243 EXPECT_EQ(1, visitor.syn_frame_count_); 242 EXPECT_EQ(1, visitor.syn_frame_count_);
244 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 243 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
245 EXPECT_EQ(0, visitor.headers_frame_count_); 244 EXPECT_EQ(0, visitor.headers_frame_count_);
246 EXPECT_EQ(0, visitor.push_promise_frame_count_); 245 EXPECT_EQ(0, visitor.push_promise_frame_count_);
247 EXPECT_EQ(headers, visitor.headers_); 246 EXPECT_EQ(headers, visitor.headers_);
248 } 247 }
249 248
250 TEST_P(BufferedSpdyFramerTest, ReadSynReplyHeaderBlock) { 249 TEST_P(BufferedSpdyFramerTest, ReadSynReplyHeaderBlock) {
251 if (spdy_version() > SPDY3) { 250 if (spdy_version() > SPDY3) {
252 // SYN_REPLY not supported in SPDY>3. 251 // SYN_REPLY not supported in SPDY>3.
253 return; 252 return;
254 } 253 }
255 SpdyHeaderBlock headers; 254 SpdyHeaderBlock headers;
256 headers["alpha"] = "beta"; 255 headers["alpha"] = "beta";
257 headers["gamma"] = "delta"; 256 headers["gamma"] = "delta";
258 BufferedSpdyFramer framer(spdy_version()); 257 BufferedSpdyFramer framer(spdy_version());
259 scoped_ptr<SpdyFrame> control_frame( 258 scoped_ptr<SpdySerializedFrame> control_frame(
260 framer.CreateSynReply(1, // stream_id 259 framer.CreateSynReply(1, // stream_id
261 CONTROL_FLAG_NONE, 260 CONTROL_FLAG_NONE, &headers));
262 &headers));
263 EXPECT_TRUE(control_frame.get() != NULL); 261 EXPECT_TRUE(control_frame.get() != NULL);
264 262
265 TestBufferedSpdyVisitor visitor(spdy_version()); 263 TestBufferedSpdyVisitor visitor(spdy_version());
266 visitor.SimulateInFramer( 264 visitor.SimulateInFramer(
267 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 265 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
268 control_frame.get()->size()); 266 control_frame.get()->size());
269 EXPECT_EQ(0, visitor.error_count_); 267 EXPECT_EQ(0, visitor.error_count_);
270 EXPECT_EQ(0, visitor.syn_frame_count_); 268 EXPECT_EQ(0, visitor.syn_frame_count_);
271 EXPECT_EQ(0, visitor.push_promise_frame_count_); 269 EXPECT_EQ(0, visitor.push_promise_frame_count_);
272 if (spdy_version() < HTTP2) { 270 if (spdy_version() < HTTP2) {
273 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 271 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
274 EXPECT_EQ(0, visitor.headers_frame_count_); 272 EXPECT_EQ(0, visitor.headers_frame_count_);
275 } else { 273 } else {
276 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 274 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
277 EXPECT_EQ(1, visitor.headers_frame_count_); 275 EXPECT_EQ(1, visitor.headers_frame_count_);
278 } 276 }
279 EXPECT_EQ(headers, visitor.headers_); 277 EXPECT_EQ(headers, visitor.headers_);
280 } 278 }
281 279
282 TEST_P(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) { 280 TEST_P(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) {
283 SpdyHeaderBlock headers; 281 SpdyHeaderBlock headers;
284 headers["alpha"] = "beta"; 282 headers["alpha"] = "beta";
285 headers["gamma"] = "delta"; 283 headers["gamma"] = "delta";
286 BufferedSpdyFramer framer(spdy_version()); 284 BufferedSpdyFramer framer(spdy_version());
287 scoped_ptr<SpdyFrame> control_frame( 285 scoped_ptr<SpdySerializedFrame> control_frame(
288 framer.CreateHeaders(1, // stream_id 286 framer.CreateHeaders(1, // stream_id
289 CONTROL_FLAG_NONE, 287 CONTROL_FLAG_NONE,
290 0, // priority 288 0, // priority
291 &headers)); 289 &headers));
292 EXPECT_TRUE(control_frame.get() != NULL); 290 EXPECT_TRUE(control_frame.get() != NULL);
293 291
294 TestBufferedSpdyVisitor visitor(spdy_version()); 292 TestBufferedSpdyVisitor visitor(spdy_version());
295 visitor.SimulateInFramer( 293 visitor.SimulateInFramer(
296 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 294 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
297 control_frame.get()->size()); 295 control_frame.get()->size());
298 EXPECT_EQ(0, visitor.error_count_); 296 EXPECT_EQ(0, visitor.error_count_);
299 EXPECT_EQ(0, visitor.syn_frame_count_); 297 EXPECT_EQ(0, visitor.syn_frame_count_);
300 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 298 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
301 EXPECT_EQ(1, visitor.headers_frame_count_); 299 EXPECT_EQ(1, visitor.headers_frame_count_);
302 EXPECT_EQ(0, visitor.push_promise_frame_count_); 300 EXPECT_EQ(0, visitor.push_promise_frame_count_);
303 EXPECT_EQ(headers, visitor.headers_); 301 EXPECT_EQ(headers, visitor.headers_);
304 } 302 }
305 303
306 TEST_P(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) { 304 TEST_P(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) {
307 if (spdy_version() < HTTP2) 305 if (spdy_version() < HTTP2)
308 return; 306 return;
309 SpdyHeaderBlock headers; 307 SpdyHeaderBlock headers;
310 headers["alpha"] = "beta"; 308 headers["alpha"] = "beta";
311 headers["gamma"] = "delta"; 309 headers["gamma"] = "delta";
312 BufferedSpdyFramer framer(spdy_version()); 310 BufferedSpdyFramer framer(spdy_version());
313 scoped_ptr<SpdyFrame> control_frame( 311 scoped_ptr<SpdySerializedFrame> control_frame(
314 framer.CreatePushPromise(1, 2, &headers)); 312 framer.CreatePushPromise(1, 2, &headers));
315 EXPECT_TRUE(control_frame.get() != NULL); 313 EXPECT_TRUE(control_frame.get() != NULL);
316 314
317 TestBufferedSpdyVisitor visitor(spdy_version()); 315 TestBufferedSpdyVisitor visitor(spdy_version());
318 visitor.SimulateInFramer( 316 visitor.SimulateInFramer(
319 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 317 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
320 control_frame.get()->size()); 318 control_frame.get()->size());
321 EXPECT_EQ(0, visitor.error_count_); 319 EXPECT_EQ(0, visitor.error_count_);
322 EXPECT_EQ(0, visitor.syn_frame_count_); 320 EXPECT_EQ(0, visitor.syn_frame_count_);
323 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 321 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
324 EXPECT_EQ(0, visitor.headers_frame_count_); 322 EXPECT_EQ(0, visitor.headers_frame_count_);
325 EXPECT_EQ(1, visitor.push_promise_frame_count_); 323 EXPECT_EQ(1, visitor.push_promise_frame_count_);
326 EXPECT_EQ(headers, visitor.headers_); 324 EXPECT_EQ(headers, visitor.headers_);
327 EXPECT_EQ(1u, visitor.header_stream_id_); 325 EXPECT_EQ(1u, visitor.header_stream_id_);
328 EXPECT_EQ(2u, visitor.promised_stream_id_); 326 EXPECT_EQ(2u, visitor.promised_stream_id_);
329 } 327 }
330 328
331 TEST_P(BufferedSpdyFramerTest, GoAwayDebugData) { 329 TEST_P(BufferedSpdyFramerTest, GoAwayDebugData) {
332 if (spdy_version() < HTTP2) 330 if (spdy_version() < HTTP2)
333 return; 331 return;
334 BufferedSpdyFramer framer(spdy_version()); 332 BufferedSpdyFramer framer(spdy_version());
335 scoped_ptr<SpdyFrame> goaway_frame( 333 scoped_ptr<SpdySerializedFrame> goaway_frame(
336 framer.CreateGoAway(2u, GOAWAY_FRAME_SIZE_ERROR, "foo")); 334 framer.CreateGoAway(2u, GOAWAY_FRAME_SIZE_ERROR, "foo"));
337 335
338 TestBufferedSpdyVisitor visitor(spdy_version()); 336 TestBufferedSpdyVisitor visitor(spdy_version());
339 visitor.SimulateInFramer( 337 visitor.SimulateInFramer(
340 reinterpret_cast<unsigned char*>(goaway_frame.get()->data()), 338 reinterpret_cast<unsigned char*>(goaway_frame.get()->data()),
341 goaway_frame.get()->size()); 339 goaway_frame.get()->size());
342 EXPECT_EQ(0, visitor.error_count_); 340 EXPECT_EQ(0, visitor.error_count_);
343 EXPECT_EQ(1, visitor.goaway_count_); 341 EXPECT_EQ(1, visitor.goaway_count_);
344 EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_); 342 EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_);
345 EXPECT_EQ(GOAWAY_FRAME_SIZE_ERROR, visitor.goaway_status_); 343 EXPECT_EQ(GOAWAY_FRAME_SIZE_ERROR, visitor.goaway_status_);
346 EXPECT_EQ("foo", visitor.goaway_debug_data_); 344 EXPECT_EQ("foo", visitor.goaway_debug_data_);
347 } 345 }
348 346
349 } // namespace net 347 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/buffered_spdy_framer.cc ('k') | net/spdy/spdy_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698