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

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

Issue 2140673002: Remove SPDY/3.1 tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
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 <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "net/spdy/spdy_test_util_common.h" 10 #include "net/spdy/spdy_test_util_common.h"
11 #include "testing/platform_test.h" 11 #include "testing/platform_test.h"
12 12
13 namespace net { 13 namespace net {
14 14
15 namespace { 15 namespace {
16 16
17 class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { 17 class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
18 public: 18 public:
19 explicit TestBufferedSpdyVisitor(SpdyMajorVersion spdy_version) 19 explicit TestBufferedSpdyVisitor()
20 : buffered_spdy_framer_(spdy_version), 20 : buffered_spdy_framer_(HTTP2),
21 error_count_(0), 21 error_count_(0),
22 setting_count_(0), 22 setting_count_(0),
23 syn_frame_count_(0), 23 syn_frame_count_(0),
24 syn_reply_frame_count_(0), 24 syn_reply_frame_count_(0),
25 headers_frame_count_(0), 25 headers_frame_count_(0),
26 push_promise_frame_count_(0), 26 push_promise_frame_count_(0),
27 goaway_count_(0), 27 goaway_count_(0),
28 altsvc_count_(0), 28 altsvc_count_(0),
29 header_stream_id_(static_cast<SpdyStreamId>(-1)), 29 header_stream_id_(static_cast<SpdyStreamId>(-1)),
30 promised_stream_id_(static_cast<SpdyStreamId>(-1)) {} 30 promised_stream_id_(static_cast<SpdyStreamId>(-1)) {}
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 std::string goaway_debug_data_; 195 std::string goaway_debug_data_;
196 196
197 // OnAltSvc parameters. 197 // OnAltSvc parameters.
198 SpdyStreamId altsvc_stream_id_; 198 SpdyStreamId altsvc_stream_id_;
199 std::string altsvc_origin_; 199 std::string altsvc_origin_;
200 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector_; 200 SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector_;
201 }; 201 };
202 202
203 } // namespace 203 } // namespace
204 204
205 class BufferedSpdyFramerTest 205 class BufferedSpdyFramerTest : public PlatformTest {};
206 : public PlatformTest,
207 public ::testing::WithParamInterface<NextProto> {
208 protected:
209 SpdyMajorVersion spdy_version() {
210 return NextProtoToSpdyMajorVersion(GetParam());
211 }
212 };
213 206
214 INSTANTIATE_TEST_CASE_P(NextProto, 207 TEST_F(BufferedSpdyFramerTest, OnSetting) {
215 BufferedSpdyFramerTest, 208 SpdyFramer framer(HTTP2);
216 testing::Values(kProtoSPDY31,
217 kProtoHTTP2));
218
219 TEST_P(BufferedSpdyFramerTest, OnSetting) {
220 SpdyFramer framer(spdy_version());
221 SpdySettingsIR settings_ir; 209 SpdySettingsIR settings_ir;
222 settings_ir.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE, false, false, 2); 210 settings_ir.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE, false, false, 2);
223 settings_ir.AddSetting(SETTINGS_MAX_CONCURRENT_STREAMS, false, false, 3); 211 settings_ir.AddSetting(SETTINGS_MAX_CONCURRENT_STREAMS, false, false, 3);
224 SpdySerializedFrame control_frame(framer.SerializeSettings(settings_ir)); 212 SpdySerializedFrame control_frame(framer.SerializeSettings(settings_ir));
225 TestBufferedSpdyVisitor visitor(spdy_version()); 213 TestBufferedSpdyVisitor visitor;
226 214
227 visitor.SimulateInFramer( 215 visitor.SimulateInFramer(
228 reinterpret_cast<unsigned char*>(control_frame.data()), 216 reinterpret_cast<unsigned char*>(control_frame.data()),
229 control_frame.size()); 217 control_frame.size());
230 EXPECT_EQ(0, visitor.error_count_); 218 EXPECT_EQ(0, visitor.error_count_);
231 EXPECT_EQ(2, visitor.setting_count_); 219 EXPECT_EQ(2, visitor.setting_count_);
232 } 220 }
233 221
234 TEST_P(BufferedSpdyFramerTest, ReadSynStreamHeaderBlock) { 222 TEST_F(BufferedSpdyFramerTest, HeaderListTooLarge) {
235 if (spdy_version() > SPDY3) {
236 // SYN_STREAM not supported in SPDY>3.
237 return;
238 }
239 SpdyHeaderBlock headers;
240 headers["aa"] = "vv";
241 headers["bb"] = "ww";
242 BufferedSpdyFramer framer(spdy_version());
243 std::unique_ptr<SpdySerializedFrame> control_frame(
244 framer.CreateSynStream(1, // stream_id
245 0, // associated_stream_id
246 1, // priority
247 CONTROL_FLAG_NONE, headers.Clone()));
248 EXPECT_TRUE(control_frame.get() != NULL);
249
250 TestBufferedSpdyVisitor visitor(spdy_version());
251 visitor.SimulateInFramer(
252 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
253 control_frame.get()->size());
254 EXPECT_EQ(0, visitor.error_count_);
255 EXPECT_EQ(1, visitor.syn_frame_count_);
256 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
257 EXPECT_EQ(0, visitor.headers_frame_count_);
258 EXPECT_EQ(0, visitor.push_promise_frame_count_);
259 EXPECT_EQ(headers, visitor.headers_);
260 }
261
262 TEST_P(BufferedSpdyFramerTest, HeaderListTooLarge) {
263 SpdyHeaderBlock headers; 223 SpdyHeaderBlock headers;
264 std::string long_header_value(256 * 1024, 'x'); 224 std::string long_header_value(256 * 1024, 'x');
265 headers["foo"] = long_header_value; 225 headers["foo"] = long_header_value;
266 BufferedSpdyFramer framer(spdy_version()); 226 BufferedSpdyFramer framer(HTTP2);
267 std::unique_ptr<SpdySerializedFrame> control_frame( 227 std::unique_ptr<SpdySerializedFrame> control_frame(
268 framer.CreateHeaders(1, // stream_id 228 framer.CreateHeaders(1, // stream_id
269 CONTROL_FLAG_NONE, 229 CONTROL_FLAG_NONE,
270 255, // weight 230 255, // weight
271 std::move(headers))); 231 std::move(headers)));
272 EXPECT_TRUE(control_frame); 232 EXPECT_TRUE(control_frame);
273 233
274 TestBufferedSpdyVisitor visitor(spdy_version()); 234 TestBufferedSpdyVisitor visitor;
275 visitor.SimulateInFramer( 235 visitor.SimulateInFramer(
276 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 236 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
277 control_frame.get()->size()); 237 control_frame.get()->size());
278 238
279 EXPECT_EQ(1, visitor.error_count_); 239 EXPECT_EQ(1, visitor.error_count_);
280 EXPECT_EQ(0, visitor.syn_frame_count_); 240 EXPECT_EQ(0, visitor.syn_frame_count_);
281 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 241 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
282 EXPECT_EQ(0, visitor.headers_frame_count_); 242 EXPECT_EQ(0, visitor.headers_frame_count_);
283 EXPECT_EQ(0, visitor.push_promise_frame_count_); 243 EXPECT_EQ(0, visitor.push_promise_frame_count_);
284 EXPECT_EQ(SpdyHeaderBlock(), visitor.headers_); 244 EXPECT_EQ(SpdyHeaderBlock(), visitor.headers_);
285 } 245 }
286 246
287 TEST_P(BufferedSpdyFramerTest, ReadSynReplyHeaderBlock) { 247 TEST_F(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) {
288 if (spdy_version() > SPDY3) {
289 // SYN_REPLY not supported in SPDY>3.
290 return;
291 }
292 SpdyHeaderBlock headers; 248 SpdyHeaderBlock headers;
293 headers["alpha"] = "beta"; 249 headers["alpha"] = "beta";
294 headers["gamma"] = "delta"; 250 headers["gamma"] = "delta";
295 BufferedSpdyFramer framer(spdy_version()); 251 BufferedSpdyFramer framer(HTTP2);
296 std::unique_ptr<SpdySerializedFrame> control_frame(
297 framer.CreateSynReply(1, // stream_id
298 CONTROL_FLAG_NONE, headers.Clone()));
299 EXPECT_TRUE(control_frame.get() != NULL);
300
301 TestBufferedSpdyVisitor visitor(spdy_version());
302 visitor.SimulateInFramer(
303 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
304 control_frame.get()->size());
305 EXPECT_EQ(0, visitor.error_count_);
306 EXPECT_EQ(0, visitor.syn_frame_count_);
307 EXPECT_EQ(0, visitor.push_promise_frame_count_);
308 if (spdy_version() < HTTP2) {
309 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
310 EXPECT_EQ(0, visitor.headers_frame_count_);
311 } else {
312 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
313 EXPECT_EQ(1, visitor.headers_frame_count_);
314 }
315 EXPECT_EQ(headers, visitor.headers_);
316 }
317
318 TEST_P(BufferedSpdyFramerTest, ReadHeadersHeaderBlock) {
319 SpdyHeaderBlock headers;
320 headers["alpha"] = "beta";
321 headers["gamma"] = "delta";
322 BufferedSpdyFramer framer(spdy_version());
323 std::unique_ptr<SpdySerializedFrame> control_frame( 252 std::unique_ptr<SpdySerializedFrame> control_frame(
324 framer.CreateHeaders(1, // stream_id 253 framer.CreateHeaders(1, // stream_id
325 CONTROL_FLAG_NONE, 254 CONTROL_FLAG_NONE,
326 255, // weight 255 255, // weight
327 headers.Clone())); 256 headers.Clone()));
328 EXPECT_TRUE(control_frame.get() != NULL); 257 EXPECT_TRUE(control_frame.get() != NULL);
329 258
330 TestBufferedSpdyVisitor visitor(spdy_version()); 259 TestBufferedSpdyVisitor visitor;
331 visitor.SimulateInFramer( 260 visitor.SimulateInFramer(
332 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 261 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
333 control_frame.get()->size()); 262 control_frame.get()->size());
334 EXPECT_EQ(0, visitor.error_count_); 263 EXPECT_EQ(0, visitor.error_count_);
335 EXPECT_EQ(0, visitor.syn_frame_count_); 264 EXPECT_EQ(0, visitor.syn_frame_count_);
336 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 265 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
337 EXPECT_EQ(1, visitor.headers_frame_count_); 266 EXPECT_EQ(1, visitor.headers_frame_count_);
338 EXPECT_EQ(0, visitor.push_promise_frame_count_); 267 EXPECT_EQ(0, visitor.push_promise_frame_count_);
339 EXPECT_EQ(headers, visitor.headers_); 268 EXPECT_EQ(headers, visitor.headers_);
340 } 269 }
341 270
342 TEST_P(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) { 271 TEST_F(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) {
343 if (spdy_version() < HTTP2)
344 return;
345 SpdyHeaderBlock headers; 272 SpdyHeaderBlock headers;
346 headers["alpha"] = "beta"; 273 headers["alpha"] = "beta";
347 headers["gamma"] = "delta"; 274 headers["gamma"] = "delta";
348 BufferedSpdyFramer framer(spdy_version()); 275 BufferedSpdyFramer framer(HTTP2);
349 std::unique_ptr<SpdySerializedFrame> control_frame( 276 std::unique_ptr<SpdySerializedFrame> control_frame(
350 framer.CreatePushPromise(1, 2, headers.Clone())); 277 framer.CreatePushPromise(1, 2, headers.Clone()));
351 EXPECT_TRUE(control_frame.get() != NULL); 278 EXPECT_TRUE(control_frame.get() != NULL);
352 279
353 TestBufferedSpdyVisitor visitor(spdy_version()); 280 TestBufferedSpdyVisitor visitor;
354 visitor.SimulateInFramer( 281 visitor.SimulateInFramer(
355 reinterpret_cast<unsigned char*>(control_frame.get()->data()), 282 reinterpret_cast<unsigned char*>(control_frame.get()->data()),
356 control_frame.get()->size()); 283 control_frame.get()->size());
357 EXPECT_EQ(0, visitor.error_count_); 284 EXPECT_EQ(0, visitor.error_count_);
358 EXPECT_EQ(0, visitor.syn_frame_count_); 285 EXPECT_EQ(0, visitor.syn_frame_count_);
359 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 286 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
360 EXPECT_EQ(0, visitor.headers_frame_count_); 287 EXPECT_EQ(0, visitor.headers_frame_count_);
361 EXPECT_EQ(1, visitor.push_promise_frame_count_); 288 EXPECT_EQ(1, visitor.push_promise_frame_count_);
362 EXPECT_EQ(headers, visitor.headers_); 289 EXPECT_EQ(headers, visitor.headers_);
363 EXPECT_EQ(1u, visitor.header_stream_id_); 290 EXPECT_EQ(1u, visitor.header_stream_id_);
364 EXPECT_EQ(2u, visitor.promised_stream_id_); 291 EXPECT_EQ(2u, visitor.promised_stream_id_);
365 } 292 }
366 293
367 TEST_P(BufferedSpdyFramerTest, GoAwayDebugData) { 294 TEST_F(BufferedSpdyFramerTest, GoAwayDebugData) {
368 if (spdy_version() < HTTP2) 295 BufferedSpdyFramer framer(HTTP2);
369 return;
370 BufferedSpdyFramer framer(spdy_version());
371 std::unique_ptr<SpdySerializedFrame> goaway_frame( 296 std::unique_ptr<SpdySerializedFrame> goaway_frame(
372 framer.CreateGoAway(2u, GOAWAY_FRAME_SIZE_ERROR, "foo")); 297 framer.CreateGoAway(2u, GOAWAY_FRAME_SIZE_ERROR, "foo"));
373 298
374 TestBufferedSpdyVisitor visitor(spdy_version()); 299 TestBufferedSpdyVisitor visitor;
375 visitor.SimulateInFramer( 300 visitor.SimulateInFramer(
376 reinterpret_cast<unsigned char*>(goaway_frame.get()->data()), 301 reinterpret_cast<unsigned char*>(goaway_frame.get()->data()),
377 goaway_frame.get()->size()); 302 goaway_frame.get()->size());
378 EXPECT_EQ(0, visitor.error_count_); 303 EXPECT_EQ(0, visitor.error_count_);
379 EXPECT_EQ(1, visitor.goaway_count_); 304 EXPECT_EQ(1, visitor.goaway_count_);
380 EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_); 305 EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_);
381 EXPECT_EQ(GOAWAY_FRAME_SIZE_ERROR, visitor.goaway_status_); 306 EXPECT_EQ(GOAWAY_FRAME_SIZE_ERROR, visitor.goaway_status_);
382 EXPECT_EQ("foo", visitor.goaway_debug_data_); 307 EXPECT_EQ("foo", visitor.goaway_debug_data_);
383 } 308 }
384 309
385 TEST_P(BufferedSpdyFramerTest, OnAltSvc) { 310 TEST_F(BufferedSpdyFramerTest, OnAltSvc) {
386 if (spdy_version() < HTTP2)
387 return;
388
389 const SpdyStreamId altsvc_stream_id(1); 311 const SpdyStreamId altsvc_stream_id(1);
390 const char altsvc_origin[] = "https://www.example.org"; 312 const char altsvc_origin[] = "https://www.example.org";
391 SpdyAltSvcIR altsvc_ir(altsvc_stream_id); 313 SpdyAltSvcIR altsvc_ir(altsvc_stream_id);
392 SpdyAltSvcWireFormat::AlternativeService alternative_service( 314 SpdyAltSvcWireFormat::AlternativeService alternative_service(
393 "quic", "alternative.example.org", 443, 86400, 315 "quic", "alternative.example.org", 443, 86400,
394 SpdyAltSvcWireFormat::VersionVector()); 316 SpdyAltSvcWireFormat::VersionVector());
395 altsvc_ir.add_altsvc(alternative_service); 317 altsvc_ir.add_altsvc(alternative_service);
396 altsvc_ir.set_origin(altsvc_origin); 318 altsvc_ir.set_origin(altsvc_origin);
397 BufferedSpdyFramer framer(spdy_version()); 319 BufferedSpdyFramer framer(HTTP2);
398 SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir)); 320 SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir));
399 321
400 TestBufferedSpdyVisitor visitor(spdy_version()); 322 TestBufferedSpdyVisitor visitor;
401 visitor.SimulateInFramer( 323 visitor.SimulateInFramer(
402 reinterpret_cast<unsigned char*>(altsvc_frame.data()), 324 reinterpret_cast<unsigned char*>(altsvc_frame.data()),
403 altsvc_frame.size()); 325 altsvc_frame.size());
404 EXPECT_EQ(0, visitor.error_count_); 326 EXPECT_EQ(0, visitor.error_count_);
405 EXPECT_EQ(1, visitor.altsvc_count_); 327 EXPECT_EQ(1, visitor.altsvc_count_);
406 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_); 328 EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_);
407 EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_); 329 EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_);
408 ASSERT_EQ(1u, visitor.altsvc_vector_.size()); 330 ASSERT_EQ(1u, visitor.altsvc_vector_.size());
409 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]); 331 EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]);
410 } 332 }
411 333
412 } // namespace net 334 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/bidirectional_stream_spdy_impl_unittest.cc ('k') | net/spdy/spdy_http_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698