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 |