| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <cstddef> | 5 #include <cstddef> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 165 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 166 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 166 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 167 | 167 |
| 168 data.RunFor(GetNumReads() + GetNumWrites()); | 168 data.RunFor(GetNumReads() + GetNumWrites()); |
| 169 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 169 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 170 | 170 |
| 171 EXPECT_TRUE(delegate.send_headers_completed()); | 171 EXPECT_TRUE(delegate.send_headers_completed()); |
| 172 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 172 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 173 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 173 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
| 174 delegate.TakeReceivedData()); | 174 delegate.TakeReceivedData()); |
| 175 EXPECT_TRUE(data.at_write_eof()); | 175 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 176 } | 176 } |
| 177 | 177 |
| 178 TEST_P(SpdyStreamTest, PushedStream) { | 178 TEST_P(SpdyStreamTest, PushedStream) { |
| 179 session_ = | 179 session_ = |
| 180 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); | 180 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); |
| 181 | 181 |
| 182 AddReadEOF(); | 182 AddReadEOF(); |
| 183 | 183 |
| 184 DeterministicSocketData data(GetReads(), GetNumReads(), GetWrites(), | 184 DeterministicSocketData data(GetReads(), GetNumReads(), GetWrites(), |
| 185 GetNumWrites()); | 185 GetNumWrites()); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 | 285 |
| 286 data.RunFor(GetNumReads() + GetNumWrites()); | 286 data.RunFor(GetNumReads() + GetNumWrites()); |
| 287 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 287 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 288 | 288 |
| 289 const SpdyStreamId stream_id = delegate.stream_id(); | 289 const SpdyStreamId stream_id = delegate.stream_id(); |
| 290 | 290 |
| 291 EXPECT_TRUE(delegate.send_headers_completed()); | 291 EXPECT_TRUE(delegate.send_headers_completed()); |
| 292 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 292 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 293 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 293 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
| 294 delegate.TakeReceivedData()); | 294 delegate.TakeReceivedData()); |
| 295 EXPECT_TRUE(data.at_write_eof()); | 295 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 296 | 296 |
| 297 // Check that the NetLog was filled reasonably. | 297 // Check that the NetLog was filled reasonably. |
| 298 TestNetLogEntry::List entries; | 298 TestNetLogEntry::List entries; |
| 299 log.GetEntries(&entries); | 299 log.GetEntries(&entries); |
| 300 EXPECT_LT(0u, entries.size()); | 300 EXPECT_LT(0u, entries.size()); |
| 301 | 301 |
| 302 // Check that we logged SPDY_STREAM_ERROR correctly. | 302 // Check that we logged SPDY_STREAM_ERROR correctly. |
| 303 int pos = ExpectLogContainsSomewhere( | 303 int pos = ExpectLogContainsSomewhere( |
| 304 entries, 0, NetLog::TYPE_HTTP2_STREAM_ERROR, NetLog::PHASE_NONE); | 304 entries, 0, NetLog::TYPE_HTTP2_STREAM_ERROR, NetLog::PHASE_NONE); |
| 305 | 305 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 stream->SendRequestHeaders(headers.Pass(), MORE_DATA_TO_SEND)); | 365 stream->SendRequestHeaders(headers.Pass(), MORE_DATA_TO_SEND)); |
| 366 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 366 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 367 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 367 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 368 | 368 |
| 369 data.RunFor(GetNumReads() + GetNumWrites()); | 369 data.RunFor(GetNumReads() + GetNumWrites()); |
| 370 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 370 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 371 | 371 |
| 372 EXPECT_TRUE(delegate.send_headers_completed()); | 372 EXPECT_TRUE(delegate.send_headers_completed()); |
| 373 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 373 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 374 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 374 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
| 375 EXPECT_TRUE(data.at_write_eof()); | 375 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 376 } | 376 } |
| 377 | 377 |
| 378 // Make sure that large blocks of data are properly split up into | 378 // Make sure that large blocks of data are properly split up into |
| 379 // frame-sized chunks for a bidirectional (i.e., non-HTTP-like) | 379 // frame-sized chunks for a bidirectional (i.e., non-HTTP-like) |
| 380 // stream. | 380 // stream. |
| 381 TEST_P(SpdyStreamTest, SendLargeDataAfterOpenBidirectional) { | 381 TEST_P(SpdyStreamTest, SendLargeDataAfterOpenBidirectional) { |
| 382 GURL url(kStreamUrl); | 382 GURL url(kStreamUrl); |
| 383 | 383 |
| 384 session_ = | 384 session_ = |
| 385 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); | 385 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 stream->SendRequestHeaders(headers.Pass(), MORE_DATA_TO_SEND)); | 428 stream->SendRequestHeaders(headers.Pass(), MORE_DATA_TO_SEND)); |
| 429 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 429 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 430 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 430 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 431 | 431 |
| 432 data.RunFor(GetNumReads() + GetNumWrites()); | 432 data.RunFor(GetNumReads() + GetNumWrites()); |
| 433 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 433 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 434 | 434 |
| 435 EXPECT_TRUE(delegate.send_headers_completed()); | 435 EXPECT_TRUE(delegate.send_headers_completed()); |
| 436 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 436 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 437 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 437 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
| 438 EXPECT_TRUE(data.at_write_eof()); | 438 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 439 } | 439 } |
| 440 | 440 |
| 441 // Receiving a header with uppercase ASCII should result in a protocol | 441 // Receiving a header with uppercase ASCII should result in a protocol |
| 442 // error. | 442 // error. |
| 443 TEST_P(SpdyStreamTest, UpperCaseHeaders) { | 443 TEST_P(SpdyStreamTest, UpperCaseHeaders) { |
| 444 GURL url(kStreamUrl); | 444 GURL url(kStreamUrl); |
| 445 | 445 |
| 446 session_ = | 446 session_ = |
| 447 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); | 447 SpdySessionDependencies::SpdyCreateSessionDeterministic(&session_deps_); |
| 448 | 448 |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 | 868 |
| 869 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 869 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
| 870 | 870 |
| 871 data.RunFor(3); | 871 data.RunFor(3); |
| 872 | 872 |
| 873 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 873 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 874 | 874 |
| 875 EXPECT_TRUE(delegate.send_headers_completed()); | 875 EXPECT_TRUE(delegate.send_headers_completed()); |
| 876 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); | 876 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); |
| 877 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 877 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
| 878 EXPECT_TRUE(data.at_write_eof()); | 878 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 879 } | 879 } |
| 880 | 880 |
| 881 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseRequestResponse) { | 881 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseRequestResponse) { |
| 882 RunResumeAfterUnstallRequestResponseTest( | 882 RunResumeAfterUnstallRequestResponseTest( |
| 883 base::Bind(&IncreaseStreamSendWindowSize)); | 883 base::Bind(&IncreaseStreamSendWindowSize)); |
| 884 } | 884 } |
| 885 | 885 |
| 886 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustRequestResponse) { | 886 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustRequestResponse) { |
| 887 RunResumeAfterUnstallRequestResponseTest( | 887 RunResumeAfterUnstallRequestResponseTest( |
| 888 base::Bind(&AdjustStreamSendWindowSize)); | 888 base::Bind(&AdjustStreamSendWindowSize)); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 957 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 957 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
| 958 | 958 |
| 959 data.RunFor(3); | 959 data.RunFor(3); |
| 960 | 960 |
| 961 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 961 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 962 | 962 |
| 963 EXPECT_TRUE(delegate.send_headers_completed()); | 963 EXPECT_TRUE(delegate.send_headers_completed()); |
| 964 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); | 964 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); |
| 965 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 965 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
| 966 delegate.TakeReceivedData()); | 966 delegate.TakeReceivedData()); |
| 967 EXPECT_TRUE(data.at_write_eof()); | 967 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 968 } | 968 } |
| 969 | 969 |
| 970 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseBidirectional) { | 970 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseBidirectional) { |
| 971 RunResumeAfterUnstallBidirectionalTest( | 971 RunResumeAfterUnstallBidirectionalTest( |
| 972 base::Bind(&IncreaseStreamSendWindowSize)); | 972 base::Bind(&IncreaseStreamSendWindowSize)); |
| 973 } | 973 } |
| 974 | 974 |
| 975 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustBidirectional) { | 975 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustBidirectional) { |
| 976 RunResumeAfterUnstallBidirectionalTest( | 976 RunResumeAfterUnstallBidirectionalTest( |
| 977 base::Bind(&AdjustStreamSendWindowSize)); | 977 base::Bind(&AdjustStreamSendWindowSize)); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1040 data.RunFor(1); // FIN | 1040 data.RunFor(1); // FIN |
| 1041 | 1041 |
| 1042 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 1042 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 1043 } | 1043 } |
| 1044 | 1044 |
| 1045 } // namespace | 1045 } // namespace |
| 1046 | 1046 |
| 1047 } // namespace test | 1047 } // namespace test |
| 1048 | 1048 |
| 1049 } // namespace net | 1049 } // namespace net |
| OLD | NEW |