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

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

Issue 1114383003: Add AllReadDataConsumed and AllWriteDataConsumed methods to SocketDataProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 <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 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 if (output_.rv != OK) 263 if (output_.rv != OK)
264 session_->spdy_session_pool()->CloseCurrentSessions(ERR_ABORTED); 264 session_->spdy_session_pool()->CloseCurrentSessions(ERR_ABORTED);
265 } 265 }
266 266
267 // Most tests will want to call this function. In particular, the MockReads 267 // Most tests will want to call this function. In particular, the MockReads
268 // should end with an empty read, and that read needs to be processed to 268 // should end with an empty read, and that read needs to be processed to
269 // ensure proper deletion of the spdy_session_pool. 269 // ensure proper deletion of the spdy_session_pool.
270 void VerifyDataConsumed() { 270 void VerifyDataConsumed() {
271 for (DataVector::iterator it = data_vector_.begin(); 271 for (DataVector::iterator it = data_vector_.begin();
272 it != data_vector_.end(); ++it) { 272 it != data_vector_.end(); ++it) {
273 EXPECT_TRUE((*it)->at_read_eof()) << "Read count: " 273 EXPECT_TRUE((*it)->AllReadDataConsumed())
274 << (*it)->read_count() 274 << "Read count: " << (*it)->read_count()
275 << " Read index: " 275 << " Read index: " << (*it)->read_index();
276 << (*it)->read_index(); 276 EXPECT_TRUE((*it)->AllWriteDataConsumed())
277 EXPECT_TRUE((*it)->at_write_eof()) << "Write count: " 277 << "Write count: " << (*it)->write_count()
278 << (*it)->write_count() 278 << " Write index: " << (*it)->write_index();
279 << " Write index: "
280 << (*it)->write_index();
281 } 279 }
282 } 280 }
283 281
284 // Occasionally a test will expect to error out before certain reads are 282 // Occasionally a test will expect to error out before certain reads are
285 // processed. In that case we want to explicitly ensure that the reads were 283 // processed. In that case we want to explicitly ensure that the reads were
286 // not processed. 284 // not processed.
287 void VerifyDataNotConsumed() { 285 void VerifyDataNotConsumed() {
288 for (DataVector::iterator it = data_vector_.begin(); 286 for (DataVector::iterator it = data_vector_.begin();
289 it != data_vector_.end(); ++it) { 287 it != data_vector_.end(); ++it) {
290 EXPECT_TRUE(!(*it)->at_read_eof()) << "Read count: " 288 EXPECT_TRUE(!(*it)->AllReadDataConsumed())
291 << (*it)->read_count() 289 << "Read count: " << (*it)->read_count()
292 << " Read index: " 290 << " Read index: " << (*it)->read_index();
293 << (*it)->read_index(); 291 EXPECT_TRUE(!(*it)->AllWriteDataConsumed())
294 EXPECT_TRUE(!(*it)->at_write_eof()) << "Write count: " 292 << "Write count: " << (*it)->write_count()
295 << (*it)->write_count() 293 << " Write index: " << (*it)->write_index();
296 << " Write index: "
297 << (*it)->write_index();
298 } 294 }
299 } 295 }
300 296
301 void RunToCompletion(StaticSocketDataProvider* data) { 297 void RunToCompletion(StaticSocketDataProvider* data) {
302 RunPreTestSetup(); 298 RunPreTestSetup();
303 AddData(data); 299 AddData(data);
304 RunDefaultTest(); 300 RunDefaultTest();
305 VerifyDataConsumed(); 301 VerifyDataConsumed();
306 } 302 }
307 303
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 // the results into a single string. 636 // the results into a single string.
641 637
642 // Read the server push body. 638 // Read the server push body.
643 std::string result2; 639 std::string result2;
644 ReadResult(trans2.get(), data, &result2); 640 ReadResult(trans2.get(), data, &result2);
645 // Read the response body. 641 // Read the response body.
646 std::string result; 642 std::string result;
647 ReadResult(trans, data, &result); 643 ReadResult(trans, data, &result);
648 644
649 // Verify that we consumed all test data. 645 // Verify that we consumed all test data.
650 EXPECT_TRUE(data->at_read_eof()); 646 EXPECT_TRUE(data->AllReadDataConsumed());
651 EXPECT_TRUE(data->at_write_eof()); 647 EXPECT_TRUE(data->AllWriteDataConsumed());
652 648
653 // Verify that the received push data is same as the expected push data. 649 // Verify that the received push data is same as the expected push data.
654 EXPECT_EQ(result2.compare(expected), 0) << "Received data: " 650 EXPECT_EQ(result2.compare(expected), 0) << "Received data: "
655 << result2 651 << result2
656 << "||||| Expected data: " 652 << "||||| Expected data: "
657 << expected; 653 << expected;
658 654
659 // Verify the SYN_REPLY. 655 // Verify the SYN_REPLY.
660 // Copy the response info, because trans goes away. 656 // Copy the response info, because trans goes away.
661 *response = *trans->GetResponseInfo(); 657 *response = *trans->GetResponseInfo();
(...skipping 1819 matching lines...) Expand 10 before | Expand all | Expand 10 after
2481 EXPECT_EQ(1, d.received_redirect_count()); 2477 EXPECT_EQ(1, d.received_redirect_count());
2482 2478
2483 r->FollowDeferredRedirect(); 2479 r->FollowDeferredRedirect();
2484 base::RunLoop().Run(); 2480 base::RunLoop().Run();
2485 EXPECT_EQ(1, d.response_started_count()); 2481 EXPECT_EQ(1, d.response_started_count());
2486 EXPECT_FALSE(d.received_data_before_response()); 2482 EXPECT_FALSE(d.received_data_before_response());
2487 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); 2483 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status());
2488 std::string contents("hello!"); 2484 std::string contents("hello!");
2489 EXPECT_EQ(contents, d.data_received()); 2485 EXPECT_EQ(contents, d.data_received());
2490 } 2486 }
2491 EXPECT_TRUE(data.at_read_eof()); 2487 EXPECT_TRUE(data.AllReadDataConsumed());
2492 EXPECT_TRUE(data.at_write_eof()); 2488 EXPECT_TRUE(data.AllWriteDataConsumed());
2493 EXPECT_TRUE(data2.at_read_eof()); 2489 EXPECT_TRUE(data2.AllReadDataConsumed());
2494 EXPECT_TRUE(data2.at_write_eof()); 2490 EXPECT_TRUE(data2.AllWriteDataConsumed());
2495 } 2491 }
2496 2492
2497 // Send a spdy request to www.example.org. Get a pushed stream that redirects to 2493 // Send a spdy request to www.example.org. Get a pushed stream that redirects to
2498 // www.foo.com. 2494 // www.foo.com.
2499 TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) { 2495 TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) {
2500 scoped_ptr<SpdyHeaderBlock> headers( 2496 scoped_ptr<SpdyHeaderBlock> headers(
2501 spdy_util_.ConstructGetHeaderBlock(GetDefaultUrl())); 2497 spdy_util_.ConstructGetHeaderBlock(GetDefaultUrl()));
2502 (*headers)["user-agent"] = ""; 2498 (*headers)["user-agent"] = "";
2503 (*headers)["accept-encoding"] = "gzip, deflate"; 2499 (*headers)["accept-encoding"] = "gzip, deflate";
2504 2500
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2576 r2->FollowDeferredRedirect(); 2572 r2->FollowDeferredRedirect();
2577 base::RunLoop().Run(); 2573 base::RunLoop().Run();
2578 EXPECT_EQ(1, d2.response_started_count()); 2574 EXPECT_EQ(1, d2.response_started_count());
2579 EXPECT_FALSE(d2.received_data_before_response()); 2575 EXPECT_FALSE(d2.received_data_before_response());
2580 EXPECT_EQ(URLRequestStatus::SUCCESS, r2->status().status()); 2576 EXPECT_EQ(URLRequestStatus::SUCCESS, r2->status().status());
2581 std::string contents2("hello!"); 2577 std::string contents2("hello!");
2582 EXPECT_EQ(contents2, d2.data_received()); 2578 EXPECT_EQ(contents2, d2.data_received());
2583 } 2579 }
2584 data.CompleteRead(); 2580 data.CompleteRead();
2585 data2.CompleteRead(); 2581 data2.CompleteRead();
2586 EXPECT_TRUE(data.at_read_eof()); 2582 EXPECT_TRUE(data.AllReadDataConsumed());
2587 EXPECT_TRUE(data.at_write_eof()); 2583 EXPECT_TRUE(data.AllWriteDataConsumed());
2588 EXPECT_TRUE(data2.at_read_eof()); 2584 EXPECT_TRUE(data2.AllReadDataConsumed());
2589 EXPECT_TRUE(data2.at_write_eof()); 2585 EXPECT_TRUE(data2.AllWriteDataConsumed());
2590 } 2586 }
2591 2587
2592 TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { 2588 TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) {
2593 scoped_ptr<SpdyFrame> stream1_syn( 2589 scoped_ptr<SpdyFrame> stream1_syn(
2594 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 2590 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
2595 scoped_ptr<SpdyFrame> stream1_body( 2591 scoped_ptr<SpdyFrame> stream1_body(
2596 spdy_util_.ConstructSpdyBodyFrame(1, true)); 2592 spdy_util_.ConstructSpdyBodyFrame(1, true));
2597 MockWrite writes[] = { 2593 MockWrite writes[] = {
2598 CreateMockWrite(*stream1_syn, 1), 2594 CreateMockWrite(*stream1_syn, 1),
2599 }; 2595 };
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2754 2750
2755 // Start the transaction with basic parameters. 2751 // Start the transaction with basic parameters.
2756 TestCompletionCallback callback; 2752 TestCompletionCallback callback;
2757 int rv = trans->Start( 2753 int rv = trans->Start(
2758 &CreateGetRequest(), callback.callback(), BoundNetLog()); 2754 &CreateGetRequest(), callback.callback(), BoundNetLog());
2759 EXPECT_EQ(ERR_IO_PENDING, rv); 2755 EXPECT_EQ(ERR_IO_PENDING, rv);
2760 rv = callback.WaitForResult(); 2756 rv = callback.WaitForResult();
2761 EXPECT_EQ(OK, rv); 2757 EXPECT_EQ(OK, rv);
2762 2758
2763 // Verify that we consumed all test data. 2759 // Verify that we consumed all test data.
2764 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 2760 EXPECT_TRUE(data.AllReadDataConsumed())
2765 << data.read_count() 2761 << "Read count: " << data.read_count()
2766 << " Read index: " 2762 << " Read index: " << data.read_index();
2767 << data.read_index(); 2763 EXPECT_TRUE(data.AllWriteDataConsumed())
2768 EXPECT_TRUE(data.at_write_eof()) << "Write count: " 2764 << "Write count: " << data.write_count()
2769 << data.write_count() 2765 << " Write index: " << data.write_index();
2770 << " Write index: "
2771 << data.write_index();
2772 2766
2773 // Verify the SYN_REPLY. 2767 // Verify the SYN_REPLY.
2774 HttpResponseInfo response = *trans->GetResponseInfo(); 2768 HttpResponseInfo response = *trans->GetResponseInfo();
2775 EXPECT_TRUE(response.headers.get() != NULL); 2769 EXPECT_TRUE(response.headers.get() != NULL);
2776 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 2770 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
2777 } 2771 }
2778 2772
2779 // Verify that we don't leak streams and that we properly send a reset 2773 // Verify that we don't leak streams and that we properly send a reset
2780 // if the server pushes the same stream twice. 2774 // if the server pushes the same stream twice.
2781 TEST_P(SpdyNetworkTransactionTest, ServerPushDuplicate) { 2775 TEST_P(SpdyNetworkTransactionTest, ServerPushDuplicate) {
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
2979 2973
2980 // Start the transaction with basic parameters. 2974 // Start the transaction with basic parameters.
2981 TestCompletionCallback callback; 2975 TestCompletionCallback callback;
2982 int rv = trans->Start( 2976 int rv = trans->Start(
2983 &CreateGetRequest(), callback.callback(), BoundNetLog()); 2977 &CreateGetRequest(), callback.callback(), BoundNetLog());
2984 EXPECT_EQ(ERR_IO_PENDING, rv); 2978 EXPECT_EQ(ERR_IO_PENDING, rv);
2985 rv = callback.WaitForResult(); 2979 rv = callback.WaitForResult();
2986 EXPECT_EQ(OK, rv); 2980 EXPECT_EQ(OK, rv);
2987 2981
2988 // Verify that we consumed all test data. 2982 // Verify that we consumed all test data.
2989 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 2983 EXPECT_TRUE(data.AllReadDataConsumed())
2990 << data.read_count() 2984 << "Read count: " << data.read_count()
2991 << " Read index: " 2985 << " Read index: " << data.read_index();
2992 << data.read_index(); 2986 EXPECT_TRUE(data.AllWriteDataConsumed())
2993 EXPECT_TRUE(data.at_write_eof()) << "Write count: " 2987 << "Write count: " << data.write_count()
2994 << data.write_count() 2988 << " Write index: " << data.write_index();
2995 << " Write index: "
2996 << data.write_index();
2997 2989
2998 // Verify the SYN_REPLY. 2990 // Verify the SYN_REPLY.
2999 HttpResponseInfo response = *trans->GetResponseInfo(); 2991 HttpResponseInfo response = *trans->GetResponseInfo();
3000 EXPECT_TRUE(response.headers.get() != NULL); 2992 EXPECT_TRUE(response.headers.get() != NULL);
3001 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 2993 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
3002 } 2994 }
3003 2995
3004 TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) { 2996 TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) {
3005 scoped_ptr<SpdyFrame> stream1_syn( 2997 scoped_ptr<SpdyFrame> stream1_syn(
3006 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 2998 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
(...skipping 29 matching lines...) Expand all
3036 3028
3037 // Start the transaction with basic parameters. 3029 // Start the transaction with basic parameters.
3038 TestCompletionCallback callback; 3030 TestCompletionCallback callback;
3039 int rv = trans->Start( 3031 int rv = trans->Start(
3040 &CreateGetRequest(), callback.callback(), BoundNetLog()); 3032 &CreateGetRequest(), callback.callback(), BoundNetLog());
3041 EXPECT_EQ(ERR_IO_PENDING, rv); 3033 EXPECT_EQ(ERR_IO_PENDING, rv);
3042 rv = callback.WaitForResult(); 3034 rv = callback.WaitForResult();
3043 EXPECT_EQ(OK, rv); 3035 EXPECT_EQ(OK, rv);
3044 3036
3045 // Verify that we consumed all test data. 3037 // Verify that we consumed all test data.
3046 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 3038 EXPECT_TRUE(data.AllReadDataConsumed())
3047 << data.read_count() 3039 << "Read count: " << data.read_count()
3048 << " Read index: " 3040 << " Read index: " << data.read_index();
3049 << data.read_index(); 3041 EXPECT_TRUE(data.AllWriteDataConsumed())
3050 EXPECT_TRUE(data.at_write_eof()) << "Write count: " 3042 << "Write count: " << data.write_count()
3051 << data.write_count() 3043 << " Write index: " << data.write_index();
3052 << " Write index: "
3053 << data.write_index();
3054 3044
3055 // Verify the SYN_REPLY. 3045 // Verify the SYN_REPLY.
3056 HttpResponseInfo response = *trans->GetResponseInfo(); 3046 HttpResponseInfo response = *trans->GetResponseInfo();
3057 EXPECT_TRUE(response.headers.get() != NULL); 3047 EXPECT_TRUE(response.headers.get() != NULL);
3058 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 3048 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
3059 } 3049 }
3060 3050
3061 TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) { 3051 TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) {
3062 scoped_ptr<SpdyFrame> stream1_syn( 3052 scoped_ptr<SpdyFrame> stream1_syn(
3063 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 3053 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3096 HttpNetworkTransaction* trans = helper.trans(); 3086 HttpNetworkTransaction* trans = helper.trans();
3097 3087
3098 // Start the transaction with basic parameters. 3088 // Start the transaction with basic parameters.
3099 TestCompletionCallback callback; 3089 TestCompletionCallback callback;
3100 int rv = trans->Start( 3090 int rv = trans->Start(
3101 &CreateGetRequest(), callback.callback(), BoundNetLog()); 3091 &CreateGetRequest(), callback.callback(), BoundNetLog());
3102 EXPECT_EQ(ERR_IO_PENDING, rv); 3092 EXPECT_EQ(ERR_IO_PENDING, rv);
3103 rv = callback.WaitForResult(); 3093 rv = callback.WaitForResult();
3104 EXPECT_EQ(OK, rv); 3094 EXPECT_EQ(OK, rv);
3105 // Verify that we consumed all test data. 3095 // Verify that we consumed all test data.
3106 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 3096 EXPECT_TRUE(data.AllReadDataConsumed())
3107 << data.read_count() 3097 << "Read count: " << data.read_count()
3108 << " Read index: " 3098 << " Read index: " << data.read_index();
3109 << data.read_index(); 3099 EXPECT_TRUE(data.AllWriteDataConsumed())
3110 EXPECT_TRUE(data.at_write_eof()) << "Write count: " 3100 << "Write count: " << data.write_count()
3111 << data.write_count() 3101 << " Write index: " << data.write_index();
3112 << " Write index: "
3113 << data.write_index();
3114 3102
3115 // Verify the SYN_REPLY. 3103 // Verify the SYN_REPLY.
3116 HttpResponseInfo response = *trans->GetResponseInfo(); 3104 HttpResponseInfo response = *trans->GetResponseInfo();
3117 EXPECT_TRUE(response.headers.get() != NULL); 3105 EXPECT_TRUE(response.headers.get() != NULL);
3118 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 3106 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
3119 } 3107 }
3120 3108
3121 // Verify that various SynReply headers parse correctly through the 3109 // Verify that various SynReply headers parse correctly through the
3122 // HTTP layer. 3110 // HTTP layer.
3123 TEST_P(SpdyNetworkTransactionTest, SynReplyHeaders) { 3111 TEST_P(SpdyNetworkTransactionTest, SynReplyHeaders) {
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
3572 writes, arraysize(writes)); 3560 writes, arraysize(writes));
3573 3561
3574 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 3562 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
3575 BoundNetLog(), GetParam(), NULL); 3563 BoundNetLog(), GetParam(), NULL);
3576 helper.SetDeterministic(); 3564 helper.SetDeterministic();
3577 helper.RunPreTestSetup(); 3565 helper.RunPreTestSetup();
3578 helper.AddDeterministicData(&data); 3566 helper.AddDeterministicData(&data);
3579 EXPECT_TRUE(helper.StartDefaultTest()); 3567 EXPECT_TRUE(helper.StartDefaultTest());
3580 data.RunFor(2); 3568 data.RunFor(2);
3581 helper.FinishDefaultTest(); 3569 helper.FinishDefaultTest();
3582 EXPECT_TRUE(data.at_write_eof()); 3570 EXPECT_TRUE(data.AllWriteDataConsumed());
3583 EXPECT_TRUE(!data.at_read_eof()); 3571 EXPECT_TRUE(!data.AllReadDataConsumed());
3584 TransactionHelperResult out = helper.output(); 3572 TransactionHelperResult out = helper.output();
3585 EXPECT_EQ(ERR_FAILED, out.rv); 3573 EXPECT_EQ(ERR_FAILED, out.rv);
3586 } 3574 }
3587 3575
3588 // Test that partial writes work. 3576 // Test that partial writes work.
3589 TEST_P(SpdyNetworkTransactionTest, PartialWrite) { 3577 TEST_P(SpdyNetworkTransactionTest, PartialWrite) {
3590 // Chop the SYN_STREAM frame into 5 chunks. 3578 // Chop the SYN_STREAM frame into 5 chunks.
3591 scoped_ptr<SpdyFrame> req( 3579 scoped_ptr<SpdyFrame> req(
3592 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 3580 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
3593 const int kChunks = 5; 3581 const int kChunks = 5;
(...skipping 1677 matching lines...) Expand 10 before | Expand all | Expand 10 after
5271 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5259 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
5272 5260
5273 // Verify the pushed stream. 5261 // Verify the pushed stream.
5274 EXPECT_TRUE(response2.headers.get() != NULL); 5262 EXPECT_TRUE(response2.headers.get() != NULL);
5275 EXPECT_EQ("HTTP/1.1 200 OK", response2.headers->GetStatusLine()); 5263 EXPECT_EQ("HTTP/1.1 200 OK", response2.headers->GetStatusLine());
5276 5264
5277 // Read the final EOF (which will close the session) 5265 // Read the final EOF (which will close the session)
5278 data.RunFor(1); 5266 data.RunFor(1);
5279 5267
5280 // Verify that we consumed all test data. 5268 // Verify that we consumed all test data.
5281 EXPECT_TRUE(data.at_read_eof()); 5269 EXPECT_TRUE(data.AllReadDataConsumed());
5282 EXPECT_TRUE(data.at_write_eof()); 5270 EXPECT_TRUE(data.AllWriteDataConsumed());
5283 } 5271 }
5284 5272
5285 // TODO(baranovich): HTTP 2 does not allow multiple HEADERS frames 5273 // TODO(baranovich): HTTP 2 does not allow multiple HEADERS frames
5286 TEST_P(SpdyNetworkTransactionTest, ServerPushWithTwoHeaderFrames) { 5274 TEST_P(SpdyNetworkTransactionTest, ServerPushWithTwoHeaderFrames) {
5287 // We push a stream and attempt to claim it before the headers come down. 5275 // We push a stream and attempt to claim it before the headers come down.
5288 scoped_ptr<SpdyFrame> stream1_syn( 5276 scoped_ptr<SpdyFrame> stream1_syn(
5289 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 5277 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
5290 scoped_ptr<SpdyFrame> stream1_body( 5278 scoped_ptr<SpdyFrame> stream1_body(
5291 spdy_util_.ConstructSpdyBodyFrame(1, true)); 5279 spdy_util_.ConstructSpdyBodyFrame(1, true));
5292 MockWrite writes[] = { 5280 MockWrite writes[] = {
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
5411 // Verify we got all the headers from all header blocks. 5399 // Verify we got all the headers from all header blocks.
5412 if (spdy_util_.spdy_version() < SPDY4) 5400 if (spdy_util_.spdy_version() < SPDY4)
5413 EXPECT_TRUE(response2.headers->HasHeaderValue("alpha", "beta")); 5401 EXPECT_TRUE(response2.headers->HasHeaderValue("alpha", "beta"));
5414 EXPECT_TRUE(response2.headers->HasHeaderValue("hello", "bye")); 5402 EXPECT_TRUE(response2.headers->HasHeaderValue("hello", "bye"));
5415 EXPECT_TRUE(response2.headers->HasHeaderValue("status", "200")); 5403 EXPECT_TRUE(response2.headers->HasHeaderValue("status", "200"));
5416 5404
5417 // Read the final EOF (which will close the session) 5405 // Read the final EOF (which will close the session)
5418 data.RunFor(1); 5406 data.RunFor(1);
5419 5407
5420 // Verify that we consumed all test data. 5408 // Verify that we consumed all test data.
5421 EXPECT_TRUE(data.at_read_eof()); 5409 EXPECT_TRUE(data.AllReadDataConsumed());
5422 EXPECT_TRUE(data.at_write_eof()); 5410 EXPECT_TRUE(data.AllWriteDataConsumed());
5423 } 5411 }
5424 5412
5425 TEST_P(SpdyNetworkTransactionTest, ServerPushWithNoStatusHeaderFrames) { 5413 TEST_P(SpdyNetworkTransactionTest, ServerPushWithNoStatusHeaderFrames) {
5426 // We push a stream and attempt to claim it before the headers come down. 5414 // We push a stream and attempt to claim it before the headers come down.
5427 scoped_ptr<SpdyFrame> stream1_syn( 5415 scoped_ptr<SpdyFrame> stream1_syn(
5428 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 5416 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
5429 scoped_ptr<SpdyFrame> stream1_body( 5417 scoped_ptr<SpdyFrame> stream1_body(
5430 spdy_util_.ConstructSpdyBodyFrame(1, true)); 5418 spdy_util_.ConstructSpdyBodyFrame(1, true));
5431 MockWrite writes[] = { 5419 MockWrite writes[] = {
5432 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS), 5420 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS),
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
5518 VerifyStreamsClosed(helper); 5506 VerifyStreamsClosed(helper);
5519 5507
5520 // Verify the SYN_REPLY. 5508 // Verify the SYN_REPLY.
5521 EXPECT_TRUE(response.headers.get() != NULL); 5509 EXPECT_TRUE(response.headers.get() != NULL);
5522 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5510 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
5523 5511
5524 // Read the final EOF (which will close the session). 5512 // Read the final EOF (which will close the session).
5525 data.RunFor(1); 5513 data.RunFor(1);
5526 5514
5527 // Verify that we consumed all test data. 5515 // Verify that we consumed all test data.
5528 EXPECT_TRUE(data.at_read_eof()); 5516 EXPECT_TRUE(data.AllReadDataConsumed());
5529 EXPECT_TRUE(data.at_write_eof()); 5517 EXPECT_TRUE(data.AllWriteDataConsumed());
5530 } 5518 }
5531 5519
5532 TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) { 5520 TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) {
5533 scoped_ptr<SpdyFrame> req( 5521 scoped_ptr<SpdyFrame> req(
5534 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 5522 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
5535 scoped_ptr<SpdyFrame> rst( 5523 scoped_ptr<SpdyFrame> rst(
5536 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 5524 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR));
5537 MockWrite writes[] = { 5525 MockWrite writes[] = {
5538 CreateMockWrite(*req), CreateMockWrite(*rst), 5526 CreateMockWrite(*req), CreateMockWrite(*rst),
5539 }; 5527 };
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
5707 5695
5708 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5696 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5709 EXPECT_EQ(ERR_IO_PENDING, rv); 5697 EXPECT_EQ(ERR_IO_PENDING, rv);
5710 rv = callback.WaitForResult(); 5698 rv = callback.WaitForResult();
5711 5699
5712 // Read the response body. 5700 // Read the response body.
5713 std::string result; 5701 std::string result;
5714 ReadResult(trans, &data, &result); 5702 ReadResult(trans, &data, &result);
5715 5703
5716 // Verify that we consumed all test data. 5704 // Verify that we consumed all test data.
5717 EXPECT_TRUE(data.at_read_eof()); 5705 EXPECT_TRUE(data.AllReadDataConsumed());
5718 EXPECT_TRUE(data.at_write_eof()); 5706 EXPECT_TRUE(data.AllWriteDataConsumed());
5719 5707
5720 // Verify the SYN_REPLY. 5708 // Verify the SYN_REPLY.
5721 // Copy the response info, because trans goes away. 5709 // Copy the response info, because trans goes away.
5722 response = *trans->GetResponseInfo(); 5710 response = *trans->GetResponseInfo();
5723 5711
5724 VerifyStreamsClosed(helper); 5712 VerifyStreamsClosed(helper);
5725 5713
5726 // Verify the SYN_REPLY. 5714 // Verify the SYN_REPLY.
5727 EXPECT_TRUE(response.headers.get() != NULL); 5715 EXPECT_TRUE(response.headers.get() != NULL);
5728 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5716 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
5763 5751
5764 // Start the transaction with basic parameters. 5752 // Start the transaction with basic parameters.
5765 TestCompletionCallback callback; 5753 TestCompletionCallback callback;
5766 int rv = trans->Start( 5754 int rv = trans->Start(
5767 &CreateGetRequest(), callback.callback(), BoundNetLog()); 5755 &CreateGetRequest(), callback.callback(), BoundNetLog());
5768 EXPECT_EQ(ERR_IO_PENDING, rv); 5756 EXPECT_EQ(ERR_IO_PENDING, rv);
5769 rv = callback.WaitForResult(); 5757 rv = callback.WaitForResult();
5770 EXPECT_EQ(OK, rv); 5758 EXPECT_EQ(OK, rv);
5771 5759
5772 // Verify that we consumed all test data. 5760 // Verify that we consumed all test data.
5773 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 5761 EXPECT_TRUE(data.AllReadDataConsumed())
5774 << data.read_count() 5762 << "Read count: " << data.read_count()
5775 << " Read index: " 5763 << " Read index: " << data.read_index();
5776 << data.read_index(); 5764 EXPECT_TRUE(data.AllWriteDataConsumed())
5777 EXPECT_TRUE(data.at_write_eof()) << "Write count: " 5765 << "Write count: " << data.write_count()
5778 << data.write_count() 5766 << " Write index: " << data.write_index();
5779 << " Write index: "
5780 << data.write_index();
5781 5767
5782 // Verify the SYN_REPLY. 5768 // Verify the SYN_REPLY.
5783 HttpResponseInfo response = *trans->GetResponseInfo(); 5769 HttpResponseInfo response = *trans->GetResponseInfo();
5784 EXPECT_TRUE(response.headers.get() != NULL); 5770 EXPECT_TRUE(response.headers.get() != NULL);
5785 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5771 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
5786 } 5772 }
5787 5773
5788 TEST_P(SpdyNetworkTransactionTest, OutOfOrderSynStream) { 5774 TEST_P(SpdyNetworkTransactionTest, OutOfOrderSynStream) {
5789 // This first request will start to establish the SpdySession. 5775 // This first request will start to establish the SpdySession.
5790 // Then we will start the second (MEDIUM priority) and then third 5776 // Then we will start the second (MEDIUM priority) and then third
(...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after
6702 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { 6688 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) {
6703 scoped_ptr<SSLSocketDataProvider> ssl_provider( 6689 scoped_ptr<SSLSocketDataProvider> ssl_provider(
6704 new SSLSocketDataProvider(ASYNC, OK)); 6690 new SSLSocketDataProvider(ASYNC, OK));
6705 // Set to TLS_RSA_WITH_NULL_MD5 6691 // Set to TLS_RSA_WITH_NULL_MD5
6706 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); 6692 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status);
6707 6693
6708 RunTLSUsageCheckTest(ssl_provider.Pass()); 6694 RunTLSUsageCheckTest(ssl_provider.Pass());
6709 } 6695 }
6710 6696
6711 } // namespace net 6697 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698