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

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

Issue 2675593002: Spdy{RstStream,GoAway}Status -> SpdyErrorCode. (Closed)
Patch Set: Unsigned vs signed int Created 3 years, 10 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/spdy_framer.h" 5 #include "net/spdy/spdy_framer.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 LOG(FATAL); 142 LOG(FATAL);
143 } 143 }
144 144
145 void OnStreamEnd(SpdyStreamId stream_id) override { LOG(FATAL); } 145 void OnStreamEnd(SpdyStreamId stream_id) override { LOG(FATAL); }
146 146
147 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override { 147 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override {
148 LOG(FATAL); 148 LOG(FATAL);
149 } 149 }
150 150
151 void OnRstStream(SpdyStreamId stream_id, 151 void OnRstStream(SpdyStreamId stream_id,
152 SpdyRstStreamStatus status) override { 152 SpdyErrorCode error_code) override {
153 LOG(FATAL); 153 LOG(FATAL);
154 } 154 }
155 void OnSetting(SpdySettingsIds id, uint32_t value) override { LOG(FATAL); } 155 void OnSetting(SpdySettingsIds id, uint32_t value) override { LOG(FATAL); }
156 void OnPing(SpdyPingId unique_id, bool is_ack) override { LOG(FATAL); } 156 void OnPing(SpdyPingId unique_id, bool is_ack) override { LOG(FATAL); }
157 void OnSettingsEnd() override { LOG(FATAL); } 157 void OnSettingsEnd() override { LOG(FATAL); }
158 void OnGoAway(SpdyStreamId last_accepted_stream_id, 158 void OnGoAway(SpdyStreamId last_accepted_stream_id,
159 SpdyGoAwayStatus status) override { 159 SpdyErrorCode error_code) override {
160 LOG(FATAL); 160 LOG(FATAL);
161 } 161 }
162 162
163 void OnWindowUpdate(SpdyStreamId stream_id, 163 void OnWindowUpdate(SpdyStreamId stream_id,
164 int delta_window_size) override { 164 int delta_window_size) override {
165 LOG(FATAL); 165 LOG(FATAL);
166 } 166 }
167 167
168 void OnPriority(SpdyStreamId stream_id, 168 void OnPriority(SpdyStreamId stream_id,
169 SpdyStreamId parent_stream_id, 169 SpdyStreamId parent_stream_id,
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 351
352 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override { 352 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override {
353 CHECK(headers_handler_ != nullptr); 353 CHECK(headers_handler_ != nullptr);
354 headers_ = headers_handler_->decoded_block().Clone(); 354 headers_ = headers_handler_->decoded_block().Clone();
355 header_bytes_received_ = headers_handler_->header_bytes_parsed(); 355 header_bytes_received_ = headers_handler_->header_bytes_parsed();
356 if (end_headers) { 356 if (end_headers) {
357 headers_handler_.reset(); 357 headers_handler_.reset();
358 } 358 }
359 } 359 }
360 360
361 void OnRstStream(SpdyStreamId stream_id, 361 void OnRstStream(SpdyStreamId stream_id, SpdyErrorCode error_code) override {
362 SpdyRstStreamStatus status) override { 362 VLOG(1) << "OnRstStream(" << stream_id << ", " << error_code << ")";
363 VLOG(1) << "OnRstStream(" << stream_id << ", " << status << ")";
364 ++fin_frame_count_; 363 ++fin_frame_count_;
365 } 364 }
366 365
367 void OnSetting(SpdySettingsIds id, uint32_t value) override { 366 void OnSetting(SpdySettingsIds id, uint32_t value) override {
368 VLOG(1) << "OnSetting(" << id << ", " << std::hex << ", " << value << ")"; 367 VLOG(1) << "OnSetting(" << id << ", " << std::hex << ", " << value << ")";
369 ++setting_count_; 368 ++setting_count_;
370 } 369 }
371 370
372 void OnSettingsAck() override { 371 void OnSettingsAck() override {
373 VLOG(1) << "OnSettingsAck"; 372 VLOG(1) << "OnSettingsAck";
374 ++settings_ack_received_; 373 ++settings_ack_received_;
375 } 374 }
376 375
377 void OnSettingsEnd() override { 376 void OnSettingsEnd() override {
378 VLOG(1) << "OnSettingsEnd"; 377 VLOG(1) << "OnSettingsEnd";
379 ++settings_ack_sent_; 378 ++settings_ack_sent_;
380 } 379 }
381 380
382 void OnPing(SpdyPingId unique_id, bool is_ack) override { 381 void OnPing(SpdyPingId unique_id, bool is_ack) override {
383 LOG(DFATAL) << "OnPing(" << unique_id << ", " << (is_ack ? 1 : 0) << ")"; 382 LOG(DFATAL) << "OnPing(" << unique_id << ", " << (is_ack ? 1 : 0) << ")";
384 } 383 }
385 384
386 void OnGoAway(SpdyStreamId last_accepted_stream_id, 385 void OnGoAway(SpdyStreamId last_accepted_stream_id,
387 SpdyGoAwayStatus status) override { 386 SpdyErrorCode error_code) override {
388 VLOG(1) << "OnGoAway(" << last_accepted_stream_id << ", " << status << ")"; 387 VLOG(1) << "OnGoAway(" << last_accepted_stream_id << ", " << error_code
388 << ")";
389 ++goaway_count_; 389 ++goaway_count_;
390 } 390 }
391 391
392 void OnHeaders(SpdyStreamId stream_id, 392 void OnHeaders(SpdyStreamId stream_id,
393 bool has_priority, 393 bool has_priority,
394 int weight, 394 int weight,
395 SpdyStreamId parent_stream_id, 395 SpdyStreamId parent_stream_id,
396 bool exclusive, 396 bool exclusive,
397 bool fin, 397 bool fin,
398 bool end) override { 398 bool end) override {
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 1000 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
1001 } 1001 }
1002 1002
1003 // Test that if we receive a RST_STREAM with stream ID zero, we signal an error 1003 // Test that if we receive a RST_STREAM with stream ID zero, we signal an error
1004 // (but don't crash). 1004 // (but don't crash).
1005 TEST_P(SpdyFramerTest, RstStreamWithStreamIdZero) { 1005 TEST_P(SpdyFramerTest, RstStreamWithStreamIdZero) {
1006 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 1006 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
1007 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 1007 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
1008 framer.set_visitor(&visitor); 1008 framer.set_visitor(&visitor);
1009 1009
1010 SpdyRstStreamIR rst_stream_ir(0, RST_STREAM_PROTOCOL_ERROR); 1010 SpdyRstStreamIR rst_stream_ir(0, ERROR_CODE_PROTOCOL_ERROR);
1011 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream_ir)); 1011 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream_ir));
1012 1012
1013 // We shouldn't have to read the whole frame before we signal an error. 1013 // We shouldn't have to read the whole frame before we signal an error.
1014 EXPECT_CALL(visitor, OnError(testing::Eq(&framer))); 1014 EXPECT_CALL(visitor, OnError(testing::Eq(&framer)));
1015 EXPECT_GT(frame.size(), framer.ProcessInput(frame.data(), frame.size())); 1015 EXPECT_GT(frame.size(), framer.ProcessInput(frame.data(), frame.size()));
1016 EXPECT_TRUE(framer.HasError()); 1016 EXPECT_TRUE(framer.HasError());
1017 EXPECT_EQ(SpdyFramer::SPDY_INVALID_STREAM_ID, framer.spdy_framer_error()) 1017 EXPECT_EQ(SpdyFramer::SPDY_INVALID_STREAM_ID, framer.spdy_framer_error())
1018 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 1018 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
1019 } 1019 }
1020 1020
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 1625
1626 { 1626 {
1627 const char kDescription[] = "RST_STREAM frame"; 1627 const char kDescription[] = "RST_STREAM frame";
1628 const unsigned char kH2FrameData[] = { 1628 const unsigned char kH2FrameData[] = {
1629 0x00, 0x00, 0x04, // Length: 4 1629 0x00, 0x00, 0x04, // Length: 4
1630 0x03, // Type: RST_STREAM 1630 0x03, // Type: RST_STREAM
1631 0x00, // Flags: none 1631 0x00, // Flags: none
1632 0x00, 0x00, 0x00, 0x01, // Stream: 1 1632 0x00, 0x00, 0x00, 0x01, // Stream: 1
1633 0x00, 0x00, 0x00, 0x01, // Error: PROTOCOL_ERROR 1633 0x00, 0x00, 0x00, 0x01, // Error: PROTOCOL_ERROR
1634 }; 1634 };
1635 SpdyRstStreamIR rst_stream(1, RST_STREAM_PROTOCOL_ERROR); 1635 SpdyRstStreamIR rst_stream(1, ERROR_CODE_PROTOCOL_ERROR);
1636 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream)); 1636 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream));
1637 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData)); 1637 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData));
1638 } 1638 }
1639 1639
1640 { 1640 {
1641 const char kDescription[] = "RST_STREAM frame with max stream ID"; 1641 const char kDescription[] = "RST_STREAM frame with max stream ID";
1642 const unsigned char kH2FrameData[] = { 1642 const unsigned char kH2FrameData[] = {
1643 0x00, 0x00, 0x04, // Length: 4 1643 0x00, 0x00, 0x04, // Length: 4
1644 0x03, // Type: RST_STREAM 1644 0x03, // Type: RST_STREAM
1645 0x00, // Flags: none 1645 0x00, // Flags: none
1646 0x7f, 0xff, 0xff, 0xff, // Stream: 0x7fffffff 1646 0x7f, 0xff, 0xff, 0xff, // Stream: 0x7fffffff
1647 0x00, 0x00, 0x00, 0x01, // Error: PROTOCOL_ERROR 1647 0x00, 0x00, 0x00, 0x01, // Error: PROTOCOL_ERROR
1648 }; 1648 };
1649 SpdyRstStreamIR rst_stream(0x7FFFFFFF, RST_STREAM_PROTOCOL_ERROR); 1649 SpdyRstStreamIR rst_stream(0x7FFFFFFF, ERROR_CODE_PROTOCOL_ERROR);
1650 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream)); 1650 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream));
1651 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData)); 1651 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData));
1652 } 1652 }
1653 1653
1654 { 1654 {
1655 const char kDescription[] = "RST_STREAM frame with max status code"; 1655 const char kDescription[] = "RST_STREAM frame with max status code";
1656 const unsigned char kH2FrameData[] = { 1656 const unsigned char kH2FrameData[] = {
1657 0x00, 0x00, 0x04, // Length: 4 1657 0x00, 0x00, 0x04, // Length: 4
1658 0x03, // Type: RST_STREAM 1658 0x03, // Type: RST_STREAM
1659 0x00, // Flags: none 1659 0x00, // Flags: none
1660 0x7f, 0xff, 0xff, 0xff, // Stream: 0x7fffffff 1660 0x7f, 0xff, 0xff, 0xff, // Stream: 0x7fffffff
1661 0x00, 0x00, 0x00, 0x02, // Error: INTERNAL_ERROR 1661 0x00, 0x00, 0x00, 0x02, // Error: INTERNAL_ERROR
1662 }; 1662 };
1663 SpdyRstStreamIR rst_stream(0x7FFFFFFF, RST_STREAM_INTERNAL_ERROR); 1663 SpdyRstStreamIR rst_stream(0x7FFFFFFF, ERROR_CODE_INTERNAL_ERROR);
1664 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream)); 1664 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream));
1665 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData)); 1665 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData));
1666 } 1666 }
1667 } 1667 }
1668 1668
1669 TEST_P(SpdyFramerTest, CreateSettings) { 1669 TEST_P(SpdyFramerTest, CreateSettings) {
1670 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 1670 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
1671 1671
1672 { 1672 {
1673 const char kDescription[] = "Network byte order SETTINGS frame"; 1673 const char kDescription[] = "Network byte order SETTINGS frame";
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 const char kDescription[] = "GOAWAY frame"; 1780 const char kDescription[] = "GOAWAY frame";
1781 const unsigned char kH2FrameData[] = { 1781 const unsigned char kH2FrameData[] = {
1782 0x00, 0x00, 0x0a, // Length: 10 1782 0x00, 0x00, 0x0a, // Length: 10
1783 0x07, // Type: GOAWAY 1783 0x07, // Type: GOAWAY
1784 0x00, // Flags: none 1784 0x00, // Flags: none
1785 0x00, 0x00, 0x00, 0x00, // Stream: 0 1785 0x00, 0x00, 0x00, 0x00, // Stream: 0
1786 0x00, 0x00, 0x00, 0x00, // Last: 0 1786 0x00, 0x00, 0x00, 0x00, // Last: 0
1787 0x00, 0x00, 0x00, 0x00, // Error: NO_ERROR 1787 0x00, 0x00, 0x00, 0x00, // Error: NO_ERROR
1788 0x47, 0x41, // Description 1788 0x47, 0x41, // Description
1789 }; 1789 };
1790 SpdyGoAwayIR goaway_ir(0, GOAWAY_NO_ERROR, "GA"); 1790 SpdyGoAwayIR goaway_ir(0, ERROR_CODE_NO_ERROR, "GA");
1791 SpdySerializedFrame frame(framer.SerializeGoAway(goaway_ir)); 1791 SpdySerializedFrame frame(framer.SerializeGoAway(goaway_ir));
1792 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData)); 1792 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData));
1793 } 1793 }
1794 1794
1795 { 1795 {
1796 const char kDescription[] = "GOAWAY frame with max stream ID, status"; 1796 const char kDescription[] = "GOAWAY frame with max stream ID, status";
1797 const unsigned char kH2FrameData[] = { 1797 const unsigned char kH2FrameData[] = {
1798 0x00, 0x00, 0x0a, // Length: 10 1798 0x00, 0x00, 0x0a, // Length: 10
1799 0x07, // Type: GOAWAY 1799 0x07, // Type: GOAWAY
1800 0x00, // Flags: none 1800 0x00, // Flags: none
1801 0x00, 0x00, 0x00, 0x00, // Stream: 0 1801 0x00, 0x00, 0x00, 0x00, // Stream: 0
1802 0x7f, 0xff, 0xff, 0xff, // Last: 0x7fffffff 1802 0x7f, 0xff, 0xff, 0xff, // Last: 0x7fffffff
1803 0x00, 0x00, 0x00, 0x02, // Error: INTERNAL_ERROR 1803 0x00, 0x00, 0x00, 0x02, // Error: INTERNAL_ERROR
1804 0x47, 0x41, // Description 1804 0x47, 0x41, // Description
1805 }; 1805 };
1806 SpdyGoAwayIR goaway_ir(0x7FFFFFFF, GOAWAY_INTERNAL_ERROR, "GA"); 1806 SpdyGoAwayIR goaway_ir(0x7FFFFFFF, ERROR_CODE_INTERNAL_ERROR, "GA");
1807 SpdySerializedFrame frame(framer.SerializeGoAway(goaway_ir)); 1807 SpdySerializedFrame frame(framer.SerializeGoAway(goaway_ir));
1808 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData)); 1808 CompareFrame(kDescription, frame, kH2FrameData, arraysize(kH2FrameData));
1809 } 1809 }
1810 } 1810 }
1811 1811
1812 TEST_P(SpdyFramerTest, CreateHeadersUncompressed) { 1812 TEST_P(SpdyFramerTest, CreateHeadersUncompressed) {
1813 SpdyFramer framer(SpdyFramer::DISABLE_COMPRESSION); 1813 SpdyFramer framer(SpdyFramer::DISABLE_COMPRESSION);
1814 1814
1815 { 1815 {
1816 const char kDescription[] = "HEADERS frame, no FIN"; 1816 const char kDescription[] = "HEADERS frame, no FIN";
(...skipping 1657 matching lines...) Expand 10 before | Expand all | Expand 10 after
3474 SpdyFramer::SpdyFramerErrorToString( 3474 SpdyFramer::SpdyFramerErrorToString(
3475 SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS)); 3475 SpdyFramer::SPDY_INVALID_DATA_FRAME_FLAGS));
3476 EXPECT_STREQ("SPDY_INVALID_CONTROL_FRAME_FLAGS", 3476 EXPECT_STREQ("SPDY_INVALID_CONTROL_FRAME_FLAGS",
3477 SpdyFramer::SpdyFramerErrorToString( 3477 SpdyFramer::SpdyFramerErrorToString(
3478 SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS)); 3478 SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS));
3479 EXPECT_STREQ("UNKNOWN_ERROR", 3479 EXPECT_STREQ("UNKNOWN_ERROR",
3480 SpdyFramer::SpdyFramerErrorToString(SpdyFramer::LAST_ERROR)); 3480 SpdyFramer::SpdyFramerErrorToString(SpdyFramer::LAST_ERROR));
3481 } 3481 }
3482 3482
3483 TEST_P(SpdyFramerTest, StatusCodeToStringTest) { 3483 TEST_P(SpdyFramerTest, StatusCodeToStringTest) {
3484 EXPECT_STREQ("NO_ERROR", SpdyFramer::StatusCodeToString(RST_STREAM_NO_ERROR)); 3484 EXPECT_STREQ("NO_ERROR", SpdyFramer::StatusCodeToString(ERROR_CODE_NO_ERROR));
3485 EXPECT_STREQ("PROTOCOL_ERROR", 3485 EXPECT_STREQ("PROTOCOL_ERROR",
3486 SpdyFramer::StatusCodeToString(RST_STREAM_PROTOCOL_ERROR)); 3486 SpdyFramer::StatusCodeToString(ERROR_CODE_PROTOCOL_ERROR));
3487 EXPECT_STREQ("INTERNAL_ERROR", 3487 EXPECT_STREQ("INTERNAL_ERROR",
3488 SpdyFramer::StatusCodeToString(RST_STREAM_INTERNAL_ERROR)); 3488 SpdyFramer::StatusCodeToString(ERROR_CODE_INTERNAL_ERROR));
3489 EXPECT_STREQ("FLOW_CONTROL_ERROR", 3489 EXPECT_STREQ("FLOW_CONTROL_ERROR",
3490 SpdyFramer::StatusCodeToString(RST_STREAM_FLOW_CONTROL_ERROR)); 3490 SpdyFramer::StatusCodeToString(ERROR_CODE_FLOW_CONTROL_ERROR));
3491 EXPECT_STREQ("SETTINGS_TIMEOUT", 3491 EXPECT_STREQ("SETTINGS_TIMEOUT",
3492 SpdyFramer::StatusCodeToString(RST_STREAM_SETTINGS_TIMEOUT)); 3492 SpdyFramer::StatusCodeToString(ERROR_CODE_SETTINGS_TIMEOUT));
3493 EXPECT_STREQ("STREAM_CLOSED", 3493 EXPECT_STREQ("STREAM_CLOSED",
3494 SpdyFramer::StatusCodeToString(RST_STREAM_STREAM_CLOSED)); 3494 SpdyFramer::StatusCodeToString(ERROR_CODE_STREAM_CLOSED));
3495 EXPECT_STREQ("FRAME_SIZE_ERROR", 3495 EXPECT_STREQ("FRAME_SIZE_ERROR",
3496 SpdyFramer::StatusCodeToString(RST_STREAM_FRAME_SIZE_ERROR)); 3496 SpdyFramer::StatusCodeToString(ERROR_CODE_FRAME_SIZE_ERROR));
3497 EXPECT_STREQ("REFUSED_STREAM", 3497 EXPECT_STREQ("REFUSED_STREAM",
3498 SpdyFramer::StatusCodeToString(RST_STREAM_REFUSED_STREAM)); 3498 SpdyFramer::StatusCodeToString(ERROR_CODE_REFUSED_STREAM));
3499 EXPECT_STREQ("CANCEL", SpdyFramer::StatusCodeToString(RST_STREAM_CANCEL)); 3499 EXPECT_STREQ("CANCEL", SpdyFramer::StatusCodeToString(ERROR_CODE_CANCEL));
3500 EXPECT_STREQ("COMPRESSION_ERROR", 3500 EXPECT_STREQ("COMPRESSION_ERROR",
3501 SpdyFramer::StatusCodeToString(RST_STREAM_COMPRESSION_ERROR)); 3501 SpdyFramer::StatusCodeToString(ERROR_CODE_COMPRESSION_ERROR));
3502 EXPECT_STREQ("CONNECT_ERROR", 3502 EXPECT_STREQ("CONNECT_ERROR",
3503 SpdyFramer::StatusCodeToString(RST_STREAM_CONNECT_ERROR)); 3503 SpdyFramer::StatusCodeToString(ERROR_CODE_CONNECT_ERROR));
3504 EXPECT_STREQ("ENHANCE_YOUR_CALM", 3504 EXPECT_STREQ("ENHANCE_YOUR_CALM",
3505 SpdyFramer::StatusCodeToString(RST_STREAM_ENHANCE_YOUR_CALM)); 3505 SpdyFramer::StatusCodeToString(ERROR_CODE_ENHANCE_YOUR_CALM));
3506 EXPECT_STREQ("INADEQUATE_SECURITY", 3506 EXPECT_STREQ("INADEQUATE_SECURITY",
3507 SpdyFramer::StatusCodeToString(RST_STREAM_INADEQUATE_SECURITY)); 3507 SpdyFramer::StatusCodeToString(ERROR_CODE_INADEQUATE_SECURITY));
3508 EXPECT_STREQ("HTTP_1_1_REQUIRED", 3508 EXPECT_STREQ("HTTP_1_1_REQUIRED",
3509 SpdyFramer::StatusCodeToString(RST_STREAM_HTTP_1_1_REQUIRED)); 3509 SpdyFramer::StatusCodeToString(ERROR_CODE_HTTP_1_1_REQUIRED));
3510 } 3510 }
3511 3511
3512 TEST_P(SpdyFramerTest, FrameTypeToStringTest) { 3512 TEST_P(SpdyFramerTest, FrameTypeToStringTest) {
3513 EXPECT_STREQ("DATA", SpdyFramer::FrameTypeToString(DATA)); 3513 EXPECT_STREQ("DATA", SpdyFramer::FrameTypeToString(DATA));
3514 EXPECT_STREQ("RST_STREAM", SpdyFramer::FrameTypeToString(RST_STREAM)); 3514 EXPECT_STREQ("RST_STREAM", SpdyFramer::FrameTypeToString(RST_STREAM));
3515 EXPECT_STREQ("SETTINGS", SpdyFramer::FrameTypeToString(SETTINGS)); 3515 EXPECT_STREQ("SETTINGS", SpdyFramer::FrameTypeToString(SETTINGS));
3516 EXPECT_STREQ("PING", SpdyFramer::FrameTypeToString(PING)); 3516 EXPECT_STREQ("PING", SpdyFramer::FrameTypeToString(PING));
3517 EXPECT_STREQ("GOAWAY", SpdyFramer::FrameTypeToString(GOAWAY)); 3517 EXPECT_STREQ("GOAWAY", SpdyFramer::FrameTypeToString(GOAWAY));
3518 EXPECT_STREQ("HEADERS", SpdyFramer::FrameTypeToString(HEADERS)); 3518 EXPECT_STREQ("HEADERS", SpdyFramer::FrameTypeToString(HEADERS));
3519 EXPECT_STREQ("WINDOW_UPDATE", SpdyFramer::FrameTypeToString(WINDOW_UPDATE)); 3519 EXPECT_STREQ("WINDOW_UPDATE", SpdyFramer::FrameTypeToString(WINDOW_UPDATE));
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
3576 TEST_P(SpdyFramerTest, RstStreamFrameFlags) { 3576 TEST_P(SpdyFramerTest, RstStreamFrameFlags) {
3577 uint8_t flags = 0; 3577 uint8_t flags = 0;
3578 do { 3578 do {
3579 SCOPED_TRACE(testing::Message() << "Flags " << flags << std::hex 3579 SCOPED_TRACE(testing::Message() << "Flags " << flags << std::hex
3580 << static_cast<int>(flags)); 3580 << static_cast<int>(flags));
3581 3581
3582 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 3582 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
3583 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 3583 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
3584 framer.set_visitor(&visitor); 3584 framer.set_visitor(&visitor);
3585 3585
3586 SpdyRstStreamIR rst_stream(13, RST_STREAM_CANCEL); 3586 SpdyRstStreamIR rst_stream(13, ERROR_CODE_CANCEL);
3587 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream)); 3587 SpdySerializedFrame frame(framer.SerializeRstStream(rst_stream));
3588 SetFrameFlags(&frame, flags); 3588 SetFrameFlags(&frame, flags);
3589 3589
3590 EXPECT_CALL(visitor, OnRstStream(13, RST_STREAM_CANCEL)); 3590 EXPECT_CALL(visitor, OnRstStream(13, ERROR_CODE_CANCEL));
3591 3591
3592 framer.ProcessInput(frame.data(), frame.size()); 3592 framer.ProcessInput(frame.data(), frame.size());
3593 3593
3594 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 3594 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
3595 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error()) 3595 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error())
3596 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 3596 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
3597 } while (++flags != 0); 3597 } while (++flags != 0);
3598 } 3598 }
3599 3599
3600 TEST_P(SpdyFramerTest, SettingsFrameFlags) { 3600 TEST_P(SpdyFramerTest, SettingsFrameFlags) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3638 TEST_P(SpdyFramerTest, GoawayFrameFlags) { 3638 TEST_P(SpdyFramerTest, GoawayFrameFlags) {
3639 uint8_t flags = 0; 3639 uint8_t flags = 0;
3640 do { 3640 do {
3641 SCOPED_TRACE(testing::Message() << "Flags " << flags << std::hex 3641 SCOPED_TRACE(testing::Message() << "Flags " << flags << std::hex
3642 << static_cast<int>(flags)); 3642 << static_cast<int>(flags));
3643 3643
3644 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 3644 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
3645 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 3645 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
3646 framer.set_visitor(&visitor); 3646 framer.set_visitor(&visitor);
3647 3647
3648 SpdyGoAwayIR goaway_ir(97, GOAWAY_NO_ERROR, "test"); 3648 SpdyGoAwayIR goaway_ir(97, ERROR_CODE_NO_ERROR, "test");
3649 SpdySerializedFrame frame(framer.SerializeGoAway(goaway_ir)); 3649 SpdySerializedFrame frame(framer.SerializeGoAway(goaway_ir));
3650 SetFrameFlags(&frame, flags); 3650 SetFrameFlags(&frame, flags);
3651 3651
3652 EXPECT_CALL(visitor, OnGoAway(97, GOAWAY_NO_ERROR)); 3652 EXPECT_CALL(visitor, OnGoAway(97, ERROR_CODE_NO_ERROR));
3653 3653
3654 framer.ProcessInput(frame.data(), frame.size()); 3654 framer.ProcessInput(frame.data(), frame.size());
3655 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 3655 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
3656 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error()) 3656 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error())
3657 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 3657 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
3658 } while (++flags != 0); 3658 } while (++flags != 0);
3659 } 3659 }
3660 3660
3661 TEST_P(SpdyFramerTest, HeadersFrameFlags) { 3661 TEST_P(SpdyFramerTest, HeadersFrameFlags) {
3662 uint8_t flags = 0; 3662 uint8_t flags = 0;
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
3864 0x03, // Type: RST_STREAM 3864 0x03, // Type: RST_STREAM
3865 0x00, // Flags: none 3865 0x00, // Flags: none
3866 0x00, 0x00, 0x00, 0x01, // Stream: 1 3866 0x00, 0x00, 0x00, 0x01, // Stream: 1
3867 0x00, 0x00, 0x00, 0xff, // Error: 255 3867 0x00, 0x00, 0x00, 0xff, // Error: 255
3868 }; 3868 };
3869 3869
3870 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 3870 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
3871 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 3871 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
3872 framer.set_visitor(&visitor); 3872 framer.set_visitor(&visitor);
3873 3873
3874 EXPECT_CALL(visitor, OnRstStream(1, RST_STREAM_NO_ERROR)); 3874 EXPECT_CALL(visitor, OnRstStream(1, ERROR_CODE_NO_ERROR));
3875 framer.ProcessInput(reinterpret_cast<const char*>(kH2RstStreamInvalid), 3875 framer.ProcessInput(reinterpret_cast<const char*>(kH2RstStreamInvalid),
3876 arraysize(kH2RstStreamInvalid)); 3876 arraysize(kH2RstStreamInvalid));
3877 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 3877 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
3878 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error()) 3878 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error())
3879 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 3879 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
3880 3880
3881 framer.Reset(); 3881 framer.Reset();
3882 3882
3883 EXPECT_CALL(visitor, OnRstStream(1, RST_STREAM_INTERNAL_ERROR)); 3883 EXPECT_CALL(visitor, OnRstStream(1, ERROR_CODE_INTERNAL_ERROR));
3884 framer.ProcessInput(reinterpret_cast<const char*>(kH2RstStreamNumStatusCodes), 3884 framer.ProcessInput(reinterpret_cast<const char*>(kH2RstStreamNumStatusCodes),
3885 arraysize(kH2RstStreamNumStatusCodes)); 3885 arraysize(kH2RstStreamNumStatusCodes));
3886 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 3886 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
3887 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error()) 3887 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error())
3888 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 3888 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
3889 } 3889 }
3890 3890
3891 // Test handling of GOAWAY frames with out-of-bounds status code. 3891 // Test handling of GOAWAY frames with out-of-bounds status code.
3892 TEST_P(SpdyFramerTest, GoAwayStatusBounds) { 3892 TEST_P(SpdyFramerTest, GoAwayStatusBounds) {
3893 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 3893 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
3894 const unsigned char kH2FrameData[] = { 3894 const unsigned char kH2FrameData[] = {
3895 0x00, 0x00, 0x0a, // Length: 10 3895 0x00, 0x00, 0x0a, // Length: 10
3896 0x07, // Type: GOAWAY 3896 0x07, // Type: GOAWAY
3897 0x00, // Flags: none 3897 0x00, // Flags: none
3898 0x00, 0x00, 0x00, 0x00, // Stream: 0 3898 0x00, 0x00, 0x00, 0x00, // Stream: 0
3899 0x00, 0x00, 0x00, 0x01, // Last: 1 3899 0x00, 0x00, 0x00, 0x01, // Last: 1
3900 0xff, 0xff, 0xff, 0xff, // Error: 0xffffffff 3900 0xff, 0xff, 0xff, 0xff, // Error: 0xffffffff
3901 0x47, 0x41, // Description 3901 0x47, 0x41, // Description
3902 }; 3902 };
3903 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 3903 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
3904 framer.set_visitor(&visitor); 3904 framer.set_visitor(&visitor);
3905 3905
3906 EXPECT_CALL(visitor, OnGoAway(1, GOAWAY_INTERNAL_ERROR)); 3906 EXPECT_CALL(visitor, OnGoAway(1, ERROR_CODE_INTERNAL_ERROR));
3907 framer.ProcessInput(reinterpret_cast<const char*>(kH2FrameData), 3907 framer.ProcessInput(reinterpret_cast<const char*>(kH2FrameData),
3908 arraysize(kH2FrameData)); 3908 arraysize(kH2FrameData));
3909 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 3909 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
3910 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error()) 3910 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error())
3911 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 3911 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
3912 } 3912 }
3913 3913
3914 // Tests handling of a GOAWAY frame with out-of-bounds stream ID. 3914 // Tests handling of a GOAWAY frame with out-of-bounds stream ID.
3915 TEST_P(SpdyFramerTest, GoAwayStreamIdBounds) { 3915 TEST_P(SpdyFramerTest, GoAwayStreamIdBounds) {
3916 const unsigned char kH2FrameData[] = { 3916 const unsigned char kH2FrameData[] = {
3917 0x00, 0x00, 0x08, // Length: 8 3917 0x00, 0x00, 0x08, // Length: 8
3918 0x07, // Type: GOAWAY 3918 0x07, // Type: GOAWAY
3919 0x00, // Flags: none 3919 0x00, // Flags: none
3920 0x00, 0x00, 0x00, 0x00, // Stream: 0 3920 0x00, 0x00, 0x00, 0x00, // Stream: 0
3921 0xff, 0xff, 0xff, 0xff, // Last: 0x7fffffff (R-bit set) 3921 0xff, 0xff, 0xff, 0xff, // Last: 0x7fffffff (R-bit set)
3922 0x00, 0x00, 0x00, 0x00, // Error: NO_ERROR 3922 0x00, 0x00, 0x00, 0x00, // Error: NO_ERROR
3923 }; 3923 };
3924 3924
3925 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 3925 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
3926 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 3926 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
3927 framer.set_visitor(&visitor); 3927 framer.set_visitor(&visitor);
3928 3928
3929 EXPECT_CALL(visitor, OnGoAway(0x7fffffff, GOAWAY_NO_ERROR)); 3929 EXPECT_CALL(visitor, OnGoAway(0x7fffffff, ERROR_CODE_NO_ERROR));
3930 framer.ProcessInput(reinterpret_cast<const char*>(kH2FrameData), 3930 framer.ProcessInput(reinterpret_cast<const char*>(kH2FrameData),
3931 arraysize(kH2FrameData)); 3931 arraysize(kH2FrameData));
3932 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 3932 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
3933 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error()) 3933 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.spdy_framer_error())
3934 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error()); 3934 << SpdyFramer::SpdyFramerErrorToString(framer.spdy_framer_error());
3935 } 3935 }
3936 3936
3937 TEST_P(SpdyFramerTest, OnBlocked) { 3937 TEST_P(SpdyFramerTest, OnBlocked) {
3938 const SpdyStreamId kStreamId = 0; 3938 const SpdyStreamId kStreamId = 0;
3939 3939
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
4330 4330
4331 EXPECT_EQ(1, visitor->data_frame_count_); 4331 EXPECT_EQ(1, visitor->data_frame_count_);
4332 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); 4332 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_));
4333 EXPECT_EQ(0, visitor->headers_frame_count_); 4333 EXPECT_EQ(0, visitor->headers_frame_count_);
4334 } 4334 }
4335 } 4335 }
4336 4336
4337 } // namespace test 4337 } // namespace test
4338 4338
4339 } // namespace net 4339 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698