| OLD | NEW |
| 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/spdy_protocol.h" | 5 #include "net/spdy/spdy_protocol.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "net/spdy/spdy_bitmasks.h" | 8 #include "net/spdy/spdy_bitmasks.h" |
| 9 #include "net/spdy/spdy_framer.h" | 9 #include "net/spdy/spdy_framer.h" |
| 10 #include "testing/platform_test.h" | 10 #include "testing/platform_test.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 INSTANTIATE_TEST_CASE_P(SpdyProtocolTests, | 37 INSTANTIATE_TEST_CASE_P(SpdyProtocolTests, |
| 38 SpdyProtocolTest, | 38 SpdyProtocolTest, |
| 39 ::testing::Values(SPDY2, SPDY3)); | 39 ::testing::Values(SPDY2, SPDY3)); |
| 40 | 40 |
| 41 // Test our protocol constants | 41 // Test our protocol constants |
| 42 TEST_P(SpdyProtocolTest, ProtocolConstants) { | 42 TEST_P(SpdyProtocolTest, ProtocolConstants) { |
| 43 EXPECT_EQ(8u, SpdyFrame::kHeaderSize); | 43 EXPECT_EQ(8u, SpdyFrame::kHeaderSize); |
| 44 EXPECT_EQ(8u, SpdyDataFrame::size()); | 44 EXPECT_EQ(8u, SpdyDataFrame::size()); |
| 45 EXPECT_EQ(8u, SpdyControlFrame::kHeaderSize); | 45 EXPECT_EQ(8u, SpdyControlFrame::kHeaderSize); |
| 46 EXPECT_EQ(18u, SpdySynStreamControlFrame::size()); | 46 EXPECT_EQ(18u, SpdySynStreamControlFrame::size()); |
| 47 EXPECT_EQ(16u, SpdyRstStreamControlFrame::size()); | |
| 48 EXPECT_EQ(12u, SpdySettingsControlFrame::size()); | 47 EXPECT_EQ(12u, SpdySettingsControlFrame::size()); |
| 49 EXPECT_EQ(12u, SpdyHeadersControlFrame::size()); | 48 EXPECT_EQ(12u, SpdyHeadersControlFrame::size()); |
| 50 EXPECT_EQ(4u, sizeof(FlagsAndLength)); | 49 EXPECT_EQ(4u, sizeof(FlagsAndLength)); |
| 51 EXPECT_EQ(1, SYN_STREAM); | 50 EXPECT_EQ(1, SYN_STREAM); |
| 52 EXPECT_EQ(2, SYN_REPLY); | 51 EXPECT_EQ(2, SYN_REPLY); |
| 53 EXPECT_EQ(3, RST_STREAM); | 52 EXPECT_EQ(3, RST_STREAM); |
| 54 EXPECT_EQ(4, SETTINGS); | 53 EXPECT_EQ(4, SETTINGS); |
| 55 EXPECT_EQ(5, NOOP); | 54 EXPECT_EQ(5, NOOP); |
| 56 EXPECT_EQ(6, PING); | 55 EXPECT_EQ(6, PING); |
| 57 EXPECT_EQ(7, GOAWAY); | 56 EXPECT_EQ(7, GOAWAY); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 EXPECT_EQ(123u, syn_frame->stream_id()); | 94 EXPECT_EQ(123u, syn_frame->stream_id()); |
| 96 EXPECT_EQ(456u, syn_frame->associated_stream_id()); | 95 EXPECT_EQ(456u, syn_frame->associated_stream_id()); |
| 97 EXPECT_EQ(2u, syn_frame->priority()); | 96 EXPECT_EQ(2u, syn_frame->priority()); |
| 98 EXPECT_EQ(credential_slot, syn_frame->credential_slot()); | 97 EXPECT_EQ(credential_slot, syn_frame->credential_slot()); |
| 99 EXPECT_EQ(IsSpdy2() ? 2 : 4, syn_frame->header_block_len()); | 98 EXPECT_EQ(IsSpdy2() ? 2 : 4, syn_frame->header_block_len()); |
| 100 EXPECT_EQ(1u, syn_frame->flags()); | 99 EXPECT_EQ(1u, syn_frame->flags()); |
| 101 syn_frame->set_associated_stream_id(999u); | 100 syn_frame->set_associated_stream_id(999u); |
| 102 EXPECT_EQ(123u, syn_frame->stream_id()); | 101 EXPECT_EQ(123u, syn_frame->stream_id()); |
| 103 EXPECT_EQ(999u, syn_frame->associated_stream_id()); | 102 EXPECT_EQ(999u, syn_frame->associated_stream_id()); |
| 104 | 103 |
| 105 scoped_ptr<SpdyRstStreamControlFrame> rst_frame( | |
| 106 framer.CreateRstStream(123, net::RST_STREAM_PROTOCOL_ERROR)); | |
| 107 EXPECT_EQ(framer.protocol_version(), rst_frame->version()); | |
| 108 EXPECT_TRUE(rst_frame->is_control_frame()); | |
| 109 EXPECT_EQ(RST_STREAM, rst_frame->type()); | |
| 110 EXPECT_EQ(123u, rst_frame->stream_id()); | |
| 111 EXPECT_EQ(net::RST_STREAM_PROTOCOL_ERROR, rst_frame->status()); | |
| 112 rst_frame->set_status(net::RST_STREAM_INVALID_STREAM); | |
| 113 EXPECT_EQ(net::RST_STREAM_INVALID_STREAM, rst_frame->status()); | |
| 114 EXPECT_EQ(0, rst_frame->flags()); | |
| 115 | |
| 116 scoped_ptr<SpdyHeadersControlFrame> headers_frame( | 104 scoped_ptr<SpdyHeadersControlFrame> headers_frame( |
| 117 framer.CreateHeaders(123, CONTROL_FLAG_NONE, false, &headers)); | 105 framer.CreateHeaders(123, CONTROL_FLAG_NONE, false, &headers)); |
| 118 EXPECT_EQ(framer.protocol_version(), headers_frame->version()); | 106 EXPECT_EQ(framer.protocol_version(), headers_frame->version()); |
| 119 EXPECT_TRUE(headers_frame->is_control_frame()); | 107 EXPECT_TRUE(headers_frame->is_control_frame()); |
| 120 EXPECT_EQ(HEADERS, headers_frame->type()); | 108 EXPECT_EQ(HEADERS, headers_frame->type()); |
| 121 EXPECT_EQ(123u, headers_frame->stream_id()); | 109 EXPECT_EQ(123u, headers_frame->stream_id()); |
| 122 EXPECT_EQ(IsSpdy2() ? 2 : 4, headers_frame->header_block_len()); | 110 EXPECT_EQ(IsSpdy2() ? 2 : 4, headers_frame->header_block_len()); |
| 123 EXPECT_EQ(0, headers_frame->flags()); | 111 EXPECT_EQ(0, headers_frame->flags()); |
| 124 } | 112 } |
| 125 | 113 |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 EXPECT_FALSE(frame.AppearsToBeAValidControlFrame()); | 307 EXPECT_FALSE(frame.AppearsToBeAValidControlFrame()); |
| 320 } else { | 308 } else { |
| 321 EXPECT_TRUE(frame.AppearsToBeAValidControlFrame()); | 309 EXPECT_TRUE(frame.AppearsToBeAValidControlFrame()); |
| 322 } | 310 } |
| 323 // Make sure setting type does not alter the version block. | 311 // Make sure setting type does not alter the version block. |
| 324 EXPECT_EQ(version, frame.version()); | 312 EXPECT_EQ(version, frame.version()); |
| 325 EXPECT_TRUE(frame.is_control_frame()); | 313 EXPECT_TRUE(frame.is_control_frame()); |
| 326 } | 314 } |
| 327 } | 315 } |
| 328 | 316 |
| 329 TEST_P(SpdyProtocolDeathTest, TestRstStreamStatusBounds) { | |
| 330 SpdyFramer framer(spdy_version_); | |
| 331 scoped_ptr<SpdyRstStreamControlFrame> rst_frame; | |
| 332 | |
| 333 rst_frame.reset(framer.CreateRstStream( | |
| 334 123, RST_STREAM_PROTOCOL_ERROR)); | |
| 335 EXPECT_EQ(RST_STREAM_PROTOCOL_ERROR, rst_frame->status()); | |
| 336 | |
| 337 rst_frame->set_status(RST_STREAM_INVALID); | |
| 338 EXPECT_EQ(RST_STREAM_INVALID, rst_frame->status()); | |
| 339 | |
| 340 rst_frame->set_status(static_cast<SpdyRstStreamStatus>( | |
| 341 RST_STREAM_INVALID - 1)); | |
| 342 EXPECT_EQ(RST_STREAM_INVALID, rst_frame->status()); | |
| 343 | |
| 344 rst_frame->set_status(RST_STREAM_NUM_STATUS_CODES); | |
| 345 EXPECT_EQ(RST_STREAM_INVALID, rst_frame->status()); | |
| 346 } | |
| 347 | |
| 348 } // namespace net | 317 } // namespace net |
| OLD | NEW |