| 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 <string> | 5 #include <string> |
| 6 #include <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 // the results into a single string. | 620 // the results into a single string. |
| 621 | 621 |
| 622 // Read the server push body. | 622 // Read the server push body. |
| 623 std::string result2; | 623 std::string result2; |
| 624 ReadResult(trans2.get(), data, &result2); | 624 ReadResult(trans2.get(), data, &result2); |
| 625 // Read the response body. | 625 // Read the response body. |
| 626 std::string result; | 626 std::string result; |
| 627 ReadResult(trans, data, &result); | 627 ReadResult(trans, data, &result); |
| 628 | 628 |
| 629 // Verify that we consumed all test data. | 629 // Verify that we consumed all test data. |
| 630 EXPECT_TRUE(data->at_read_eof()); | 630 EXPECT_TRUE(data->AllReadDataConsumed()); |
| 631 EXPECT_TRUE(data->at_write_eof()); | 631 EXPECT_TRUE(data->AllWriteDataConsumed()); |
| 632 | 632 |
| 633 // Verify that the received push data is same as the expected push data. | 633 // Verify that the received push data is same as the expected push data. |
| 634 EXPECT_EQ(result2.compare(expected), 0) << "Received data: " | 634 EXPECT_EQ(result2.compare(expected), 0) << "Received data: " |
| 635 << result2 | 635 << result2 |
| 636 << "||||| Expected data: " | 636 << "||||| Expected data: " |
| 637 << expected; | 637 << expected; |
| 638 | 638 |
| 639 // Verify the SYN_REPLY. | 639 // Verify the SYN_REPLY. |
| 640 // Copy the response info, because trans goes away. | 640 // Copy the response info, because trans goes away. |
| 641 *response = *trans->GetResponseInfo(); | 641 *response = *trans->GetResponseInfo(); |
| (...skipping 1791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2433 EXPECT_EQ(1, d.received_redirect_count()); | 2433 EXPECT_EQ(1, d.received_redirect_count()); |
| 2434 | 2434 |
| 2435 r->FollowDeferredRedirect(); | 2435 r->FollowDeferredRedirect(); |
| 2436 base::RunLoop().Run(); | 2436 base::RunLoop().Run(); |
| 2437 EXPECT_EQ(1, d.response_started_count()); | 2437 EXPECT_EQ(1, d.response_started_count()); |
| 2438 EXPECT_FALSE(d.received_data_before_response()); | 2438 EXPECT_FALSE(d.received_data_before_response()); |
| 2439 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 2439 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
| 2440 std::string contents("hello!"); | 2440 std::string contents("hello!"); |
| 2441 EXPECT_EQ(contents, d.data_received()); | 2441 EXPECT_EQ(contents, d.data_received()); |
| 2442 } | 2442 } |
| 2443 EXPECT_TRUE(data.at_read_eof()); | 2443 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 2444 EXPECT_TRUE(data.at_write_eof()); | 2444 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 2445 EXPECT_TRUE(data2.at_read_eof()); | 2445 EXPECT_TRUE(data2.AllReadDataConsumed()); |
| 2446 EXPECT_TRUE(data2.at_write_eof()); | 2446 EXPECT_TRUE(data2.AllWriteDataConsumed()); |
| 2447 } | 2447 } |
| 2448 | 2448 |
| 2449 // Send a spdy request to www.example.org. Get a pushed stream that redirects to | 2449 // Send a spdy request to www.example.org. Get a pushed stream that redirects to |
| 2450 // www.foo.com. | 2450 // www.foo.com. |
| 2451 TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) { | 2451 TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) { |
| 2452 scoped_ptr<SpdyHeaderBlock> headers( | 2452 scoped_ptr<SpdyHeaderBlock> headers( |
| 2453 spdy_util_.ConstructGetHeaderBlock(GetDefaultUrl())); | 2453 spdy_util_.ConstructGetHeaderBlock(GetDefaultUrl())); |
| 2454 (*headers)["user-agent"] = ""; | 2454 (*headers)["user-agent"] = ""; |
| 2455 (*headers)["accept-encoding"] = "gzip, deflate"; | 2455 (*headers)["accept-encoding"] = "gzip, deflate"; |
| 2456 | 2456 |
| (...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3473 writes, arraysize(writes)); | 3473 writes, arraysize(writes)); |
| 3474 | 3474 |
| 3475 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, | 3475 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, |
| 3476 BoundNetLog(), GetParam(), NULL); | 3476 BoundNetLog(), GetParam(), NULL); |
| 3477 helper.SetDeterministic(); | 3477 helper.SetDeterministic(); |
| 3478 helper.RunPreTestSetup(); | 3478 helper.RunPreTestSetup(); |
| 3479 helper.AddDeterministicData(&data); | 3479 helper.AddDeterministicData(&data); |
| 3480 EXPECT_TRUE(helper.StartDefaultTest()); | 3480 EXPECT_TRUE(helper.StartDefaultTest()); |
| 3481 data.RunFor(2); | 3481 data.RunFor(2); |
| 3482 helper.FinishDefaultTest(); | 3482 helper.FinishDefaultTest(); |
| 3483 EXPECT_TRUE(data.at_write_eof()); | 3483 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 3484 EXPECT_TRUE(!data.at_read_eof()); | 3484 EXPECT_TRUE(!data.AllReadDataConsumed()); |
| 3485 TransactionHelperResult out = helper.output(); | 3485 TransactionHelperResult out = helper.output(); |
| 3486 EXPECT_EQ(ERR_FAILED, out.rv); | 3486 EXPECT_EQ(ERR_FAILED, out.rv); |
| 3487 } | 3487 } |
| 3488 | 3488 |
| 3489 // Test that partial writes work. | 3489 // Test that partial writes work. |
| 3490 TEST_P(SpdyNetworkTransactionTest, PartialWrite) { | 3490 TEST_P(SpdyNetworkTransactionTest, PartialWrite) { |
| 3491 // Chop the SYN_STREAM frame into 5 chunks. | 3491 // Chop the SYN_STREAM frame into 5 chunks. |
| 3492 scoped_ptr<SpdyFrame> req( | 3492 scoped_ptr<SpdyFrame> req( |
| 3493 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 3493 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
| 3494 const int kChunks = 5; | 3494 const int kChunks = 5; |
| (...skipping 1673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5168 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); | 5168 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); |
| 5169 | 5169 |
| 5170 // Verify the pushed stream. | 5170 // Verify the pushed stream. |
| 5171 EXPECT_TRUE(response2.headers.get() != NULL); | 5171 EXPECT_TRUE(response2.headers.get() != NULL); |
| 5172 EXPECT_EQ("HTTP/1.1 200 OK", response2.headers->GetStatusLine()); | 5172 EXPECT_EQ("HTTP/1.1 200 OK", response2.headers->GetStatusLine()); |
| 5173 | 5173 |
| 5174 // Read the final EOF (which will close the session) | 5174 // Read the final EOF (which will close the session) |
| 5175 data.RunFor(1); | 5175 data.RunFor(1); |
| 5176 | 5176 |
| 5177 // Verify that we consumed all test data. | 5177 // Verify that we consumed all test data. |
| 5178 EXPECT_TRUE(data.at_read_eof()); | 5178 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 5179 EXPECT_TRUE(data.at_write_eof()); | 5179 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 5180 } | 5180 } |
| 5181 | 5181 |
| 5182 // TODO(baranovich): HTTP 2 does not allow multiple HEADERS frames | 5182 // TODO(baranovich): HTTP 2 does not allow multiple HEADERS frames |
| 5183 TEST_P(SpdyNetworkTransactionTest, ServerPushWithTwoHeaderFrames) { | 5183 TEST_P(SpdyNetworkTransactionTest, ServerPushWithTwoHeaderFrames) { |
| 5184 // We push a stream and attempt to claim it before the headers come down. | 5184 // We push a stream and attempt to claim it before the headers come down. |
| 5185 scoped_ptr<SpdyFrame> stream1_syn( | 5185 scoped_ptr<SpdyFrame> stream1_syn( |
| 5186 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 5186 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
| 5187 scoped_ptr<SpdyFrame> stream1_body( | 5187 scoped_ptr<SpdyFrame> stream1_body( |
| 5188 spdy_util_.ConstructSpdyBodyFrame(1, true)); | 5188 spdy_util_.ConstructSpdyBodyFrame(1, true)); |
| 5189 MockWrite writes[] = { | 5189 MockWrite writes[] = { |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5308 // Verify we got all the headers from all header blocks. | 5308 // Verify we got all the headers from all header blocks. |
| 5309 if (spdy_util_.spdy_version() < SPDY4) | 5309 if (spdy_util_.spdy_version() < SPDY4) |
| 5310 EXPECT_TRUE(response2.headers->HasHeaderValue("alpha", "beta")); | 5310 EXPECT_TRUE(response2.headers->HasHeaderValue("alpha", "beta")); |
| 5311 EXPECT_TRUE(response2.headers->HasHeaderValue("hello", "bye")); | 5311 EXPECT_TRUE(response2.headers->HasHeaderValue("hello", "bye")); |
| 5312 EXPECT_TRUE(response2.headers->HasHeaderValue("status", "200")); | 5312 EXPECT_TRUE(response2.headers->HasHeaderValue("status", "200")); |
| 5313 | 5313 |
| 5314 // Read the final EOF (which will close the session) | 5314 // Read the final EOF (which will close the session) |
| 5315 data.RunFor(1); | 5315 data.RunFor(1); |
| 5316 | 5316 |
| 5317 // Verify that we consumed all test data. | 5317 // Verify that we consumed all test data. |
| 5318 EXPECT_TRUE(data.at_read_eof()); | 5318 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 5319 EXPECT_TRUE(data.at_write_eof()); | 5319 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 5320 } | 5320 } |
| 5321 | 5321 |
| 5322 TEST_P(SpdyNetworkTransactionTest, ServerPushWithNoStatusHeaderFrames) { | 5322 TEST_P(SpdyNetworkTransactionTest, ServerPushWithNoStatusHeaderFrames) { |
| 5323 // We push a stream and attempt to claim it before the headers come down. | 5323 // We push a stream and attempt to claim it before the headers come down. |
| 5324 scoped_ptr<SpdyFrame> stream1_syn( | 5324 scoped_ptr<SpdyFrame> stream1_syn( |
| 5325 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 5325 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
| 5326 scoped_ptr<SpdyFrame> stream1_body( | 5326 scoped_ptr<SpdyFrame> stream1_body( |
| 5327 spdy_util_.ConstructSpdyBodyFrame(1, true)); | 5327 spdy_util_.ConstructSpdyBodyFrame(1, true)); |
| 5328 MockWrite writes[] = { | 5328 MockWrite writes[] = { |
| 5329 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS), | 5329 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS), |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5414 VerifyStreamsClosed(helper); | 5414 VerifyStreamsClosed(helper); |
| 5415 | 5415 |
| 5416 // Verify the SYN_REPLY. | 5416 // Verify the SYN_REPLY. |
| 5417 EXPECT_TRUE(response.headers.get() != NULL); | 5417 EXPECT_TRUE(response.headers.get() != NULL); |
| 5418 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); | 5418 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); |
| 5419 | 5419 |
| 5420 // Read the final EOF (which will close the session). | 5420 // Read the final EOF (which will close the session). |
| 5421 data.RunFor(1); | 5421 data.RunFor(1); |
| 5422 | 5422 |
| 5423 // Verify that we consumed all test data. | 5423 // Verify that we consumed all test data. |
| 5424 EXPECT_TRUE(data.at_read_eof()); | 5424 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 5425 EXPECT_TRUE(data.at_write_eof()); | 5425 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 5426 } | 5426 } |
| 5427 | 5427 |
| 5428 TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) { | 5428 TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) { |
| 5429 scoped_ptr<SpdyFrame> req( | 5429 scoped_ptr<SpdyFrame> req( |
| 5430 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 5430 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
| 5431 scoped_ptr<SpdyFrame> rst( | 5431 scoped_ptr<SpdyFrame> rst( |
| 5432 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); | 5432 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); |
| 5433 MockWrite writes[] = { | 5433 MockWrite writes[] = { |
| 5434 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), | 5434 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), |
| 5435 }; | 5435 }; |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5599 | 5599 |
| 5600 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5600 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5601 EXPECT_EQ(ERR_IO_PENDING, rv); | 5601 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 5602 rv = callback.WaitForResult(); | 5602 rv = callback.WaitForResult(); |
| 5603 | 5603 |
| 5604 // Read the response body. | 5604 // Read the response body. |
| 5605 std::string result; | 5605 std::string result; |
| 5606 ReadResult(trans, &data, &result); | 5606 ReadResult(trans, &data, &result); |
| 5607 | 5607 |
| 5608 // Verify that we consumed all test data. | 5608 // Verify that we consumed all test data. |
| 5609 EXPECT_TRUE(data.at_read_eof()); | 5609 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 5610 EXPECT_TRUE(data.at_write_eof()); | 5610 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 5611 | 5611 |
| 5612 // Verify the SYN_REPLY. | 5612 // Verify the SYN_REPLY. |
| 5613 // Copy the response info, because trans goes away. | 5613 // Copy the response info, because trans goes away. |
| 5614 response = *trans->GetResponseInfo(); | 5614 response = *trans->GetResponseInfo(); |
| 5615 | 5615 |
| 5616 VerifyStreamsClosed(helper); | 5616 VerifyStreamsClosed(helper); |
| 5617 | 5617 |
| 5618 // Verify the SYN_REPLY. | 5618 // Verify the SYN_REPLY. |
| 5619 EXPECT_TRUE(response.headers.get() != NULL); | 5619 EXPECT_TRUE(response.headers.get() != NULL); |
| 5620 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); | 5620 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); |
| (...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6586 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { | 6586 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { |
| 6587 scoped_ptr<SSLSocketDataProvider> ssl_provider( | 6587 scoped_ptr<SSLSocketDataProvider> ssl_provider( |
| 6588 new SSLSocketDataProvider(ASYNC, OK)); | 6588 new SSLSocketDataProvider(ASYNC, OK)); |
| 6589 // Set to TLS_RSA_WITH_NULL_MD5 | 6589 // Set to TLS_RSA_WITH_NULL_MD5 |
| 6590 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); | 6590 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); |
| 6591 | 6591 |
| 6592 RunTLSUsageCheckTest(ssl_provider.Pass()); | 6592 RunTLSUsageCheckTest(ssl_provider.Pass()); |
| 6593 } | 6593 } |
| 6594 | 6594 |
| 6595 } // namespace net | 6595 } // namespace net |
| OLD | NEW |