Chromium Code Reviews| Index: net/spdy/buffered_spdy_framer_unittest.cc |
| diff --git a/net/spdy/buffered_spdy_framer_unittest.cc b/net/spdy/buffered_spdy_framer_unittest.cc |
| index 5f05fa1d2085180e5a9424625fd118da30193e2f..aa1b2aba80958d8746af71b38a29420e6341e9b1 100644 |
| --- a/net/spdy/buffered_spdy_framer_unittest.cc |
| +++ b/net/spdy/buffered_spdy_framer_unittest.cc |
| @@ -21,9 +21,9 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { |
| syn_reply_frame_count_(0), |
| headers_frame_count_(0), |
| push_promise_frame_count_(0), |
| + goaway_count_(0), |
| header_stream_id_(static_cast<SpdyStreamId>(-1)), |
| - promised_stream_id_(static_cast<SpdyStreamId>(-1)) { |
| - } |
| + promised_stream_id_(static_cast<SpdyStreamId>(-1)) {} |
|
eroman
2015/10/06 17:19:41
unrelated side-note: seems like this would be clea
Bence
2015/10/07 15:18:27
Acknowledged.
|
| void OnError(SpdyFramer::SpdyError error_code) override { |
| LOG(INFO) << "SpdyFramer Error: " << error_code; |
| @@ -100,7 +100,13 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { |
| SpdyRstStreamStatus status) override {} |
| void OnGoAway(SpdyStreamId last_accepted_stream_id, |
| - SpdyGoAwayStatus status) override {} |
| + SpdyGoAwayStatus status, |
| + StringPiece debug_data) override { |
| + goaway_count_++; |
| + goaway_last_accepted_stream_id_ = last_accepted_stream_id; |
| + goaway_status_ = status; |
| + goaway_debug_data_.assign(debug_data.data(), debug_data.size()); |
| + } |
| bool OnCredentialFrameData(const char*, size_t) { |
| LOG(FATAL) << "Unexpected OnCredentialFrameData call."; |
| @@ -162,6 +168,7 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { |
| int syn_reply_frame_count_; |
| int headers_frame_count_; |
| int push_promise_frame_count_; |
| + int goaway_count_; |
| // Header block streaming state: |
| SpdyStreamId header_stream_id_; |
| @@ -170,6 +177,11 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { |
| // Headers from OnSyn, OnSynReply, OnHeaders and OnPushPromise for |
| // verification. |
| SpdyHeaderBlock headers_; |
| + |
| + // OnGoAway parameters. |
| + SpdyStreamId goaway_last_accepted_stream_id_; |
| + SpdyGoAwayStatus goaway_status_; |
| + std::string goaway_debug_data_; |
| }; |
| } // namespace |
| @@ -340,4 +352,22 @@ TEST_P(BufferedSpdyFramerTest, ReadPushPromiseHeaderBlock) { |
| EXPECT_EQ(2u, visitor.promised_stream_id_); |
| } |
| +TEST_P(BufferedSpdyFramerTest, GoAwayDebugData) { |
| + if (spdy_version() < HTTP2) |
| + return; |
| + BufferedSpdyFramer framer(spdy_version(), true); |
| + scoped_ptr<SpdyFrame> goaway_frame( |
| + framer.CreateGoAway(2u, GOAWAY_FRAME_SIZE_ERROR, "foo")); |
| + |
| + TestBufferedSpdyVisitor visitor(spdy_version()); |
| + visitor.SimulateInFramer( |
| + reinterpret_cast<unsigned char*>(goaway_frame.get()->data()), |
| + goaway_frame.get()->size()); |
| + EXPECT_EQ(0, visitor.error_count_); |
| + EXPECT_EQ(1, visitor.goaway_count_); |
| + EXPECT_EQ(2u, visitor.goaway_last_accepted_stream_id_); |
| + EXPECT_EQ(GOAWAY_FRAME_SIZE_ERROR, visitor.goaway_status_); |
| + EXPECT_EQ("foo", visitor.goaway_debug_data_); |
| +} |
| + |
| } // namespace net |