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

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

Issue 1123833003: Revert of Revert some other possible suspects of a 0.43% size increase of setup.exe: https://build.chromium.o… (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
« no previous file with comments | « net/spdy/spdy_http_stream_unittest.cc ('k') | net/spdy/spdy_session_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 void FinishDefaultTestWithoutVerification() { 261 void FinishDefaultTestWithoutVerification() {
262 output_.rv = callback_.WaitForResult(); 262 output_.rv = callback_.WaitForResult();
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 (const SocketDataProvider* provider : data_vector_) {
272 it != data_vector_.end(); ++it) { 272 EXPECT_TRUE(provider->AllReadDataConsumed());
273 EXPECT_TRUE((*it)->at_read_eof()) << "Read count: " 273 EXPECT_TRUE(provider->AllWriteDataConsumed());
274 << (*it)->read_count()
275 << " Read index: "
276 << (*it)->read_index();
277 EXPECT_TRUE((*it)->at_write_eof()) << "Write count: "
278 << (*it)->write_count()
279 << " Write index: "
280 << (*it)->write_index();
281 } 274 }
282 } 275 }
283 276
284 // Occasionally a test will expect to error out before certain reads are 277 // 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 278 // processed. In that case we want to explicitly ensure that the reads were
286 // not processed. 279 // not processed.
287 void VerifyDataNotConsumed() { 280 void VerifyDataNotConsumed() {
288 for (DataVector::iterator it = data_vector_.begin(); 281 for (const SocketDataProvider* provider : data_vector_) {
289 it != data_vector_.end(); ++it) { 282 EXPECT_FALSE(provider->AllReadDataConsumed());
290 EXPECT_TRUE(!(*it)->at_read_eof()) << "Read count: " 283 EXPECT_FALSE(provider->AllWriteDataConsumed());
291 << (*it)->read_count()
292 << " Read index: "
293 << (*it)->read_index();
294 EXPECT_TRUE(!(*it)->at_write_eof()) << "Write count: "
295 << (*it)->write_count()
296 << " Write index: "
297 << (*it)->write_index();
298 } 284 }
299 } 285 }
300 286
301 void RunToCompletion(SocketDataProvider* data) { 287 void RunToCompletion(SocketDataProvider* data) {
302 RunPreTestSetup(); 288 RunPreTestSetup();
303 AddData(data); 289 AddData(data);
304 RunDefaultTest(); 290 RunDefaultTest();
305 VerifyDataConsumed(); 291 VerifyDataConsumed();
306 } 292 }
307 293
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 // the results into a single string. 620 // the results into a single string.
635 621
636 // Read the server push body. 622 // Read the server push body.
637 std::string result2; 623 std::string result2;
638 ReadResult(trans2.get(), data, &result2); 624 ReadResult(trans2.get(), data, &result2);
639 // Read the response body. 625 // Read the response body.
640 std::string result; 626 std::string result;
641 ReadResult(trans, data, &result); 627 ReadResult(trans, data, &result);
642 628
643 // Verify that we consumed all test data. 629 // Verify that we consumed all test data.
644 EXPECT_TRUE(data->at_read_eof()); 630 EXPECT_TRUE(data->AllReadDataConsumed());
645 EXPECT_TRUE(data->at_write_eof()); 631 EXPECT_TRUE(data->AllWriteDataConsumed());
646 632
647 // 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.
648 EXPECT_EQ(result2.compare(expected), 0) << "Received data: " 634 EXPECT_EQ(result2.compare(expected), 0) << "Received data: "
649 << result2 635 << result2
650 << "||||| Expected data: " 636 << "||||| Expected data: "
651 << expected; 637 << expected;
652 638
653 // Verify the SYN_REPLY. 639 // Verify the SYN_REPLY.
654 // Copy the response info, because trans goes away. 640 // Copy the response info, because trans goes away.
655 *response = *trans->GetResponseInfo(); 641 *response = *trans->GetResponseInfo();
(...skipping 1792 matching lines...) Expand 10 before | Expand all | Expand 10 after
2448 EXPECT_EQ(1, d.received_redirect_count()); 2434 EXPECT_EQ(1, d.received_redirect_count());
2449 2435
2450 r->FollowDeferredRedirect(); 2436 r->FollowDeferredRedirect();
2451 base::RunLoop().Run(); 2437 base::RunLoop().Run();
2452 EXPECT_EQ(1, d.response_started_count()); 2438 EXPECT_EQ(1, d.response_started_count());
2453 EXPECT_FALSE(d.received_data_before_response()); 2439 EXPECT_FALSE(d.received_data_before_response());
2454 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); 2440 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status());
2455 std::string contents("hello!"); 2441 std::string contents("hello!");
2456 EXPECT_EQ(contents, d.data_received()); 2442 EXPECT_EQ(contents, d.data_received());
2457 } 2443 }
2458 EXPECT_TRUE(data.at_read_eof()); 2444 EXPECT_TRUE(data.AllReadDataConsumed());
2459 EXPECT_TRUE(data.at_write_eof()); 2445 EXPECT_TRUE(data.AllWriteDataConsumed());
2460 EXPECT_TRUE(data2.at_read_eof()); 2446 EXPECT_TRUE(data2.AllReadDataConsumed());
2461 EXPECT_TRUE(data2.at_write_eof()); 2447 EXPECT_TRUE(data2.AllWriteDataConsumed());
2462 } 2448 }
2463 2449
2464 // Send a spdy request to www.example.org. Get a pushed stream that redirects to 2450 // Send a spdy request to www.example.org. Get a pushed stream that redirects to
2465 // www.foo.com. 2451 // www.foo.com.
2466 TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) { 2452 TEST_P(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) {
2467 scoped_ptr<SpdyHeaderBlock> headers( 2453 scoped_ptr<SpdyHeaderBlock> headers(
2468 spdy_util_.ConstructGetHeaderBlock(GetDefaultUrl())); 2454 spdy_util_.ConstructGetHeaderBlock(GetDefaultUrl()));
2469 (*headers)["user-agent"] = ""; 2455 (*headers)["user-agent"] = "";
2470 (*headers)["accept-encoding"] = "gzip, deflate"; 2456 (*headers)["accept-encoding"] = "gzip, deflate";
2471 2457
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2540 EXPECT_EQ(1, d2.received_redirect_count()); 2526 EXPECT_EQ(1, d2.received_redirect_count());
2541 2527
2542 r2->FollowDeferredRedirect(); 2528 r2->FollowDeferredRedirect();
2543 base::RunLoop().Run(); 2529 base::RunLoop().Run();
2544 EXPECT_EQ(1, d2.response_started_count()); 2530 EXPECT_EQ(1, d2.response_started_count());
2545 EXPECT_FALSE(d2.received_data_before_response()); 2531 EXPECT_FALSE(d2.received_data_before_response());
2546 EXPECT_EQ(URLRequestStatus::SUCCESS, r2->status().status()); 2532 EXPECT_EQ(URLRequestStatus::SUCCESS, r2->status().status());
2547 std::string contents2("hello!"); 2533 std::string contents2("hello!");
2548 EXPECT_EQ(contents2, d2.data_received()); 2534 EXPECT_EQ(contents2, d2.data_received());
2549 } 2535 }
2550 data.CompleteRead(); 2536 EXPECT_TRUE(data.AllReadDataConsumed());
2551 data2.CompleteRead(); 2537 EXPECT_TRUE(data.AllWriteDataConsumed());
2552 EXPECT_TRUE(data.at_read_eof()); 2538 EXPECT_TRUE(data2.AllReadDataConsumed());
2553 EXPECT_TRUE(data.at_write_eof()); 2539 EXPECT_TRUE(data2.AllWriteDataConsumed());
2554 EXPECT_TRUE(data2.at_read_eof());
2555 EXPECT_TRUE(data2.at_write_eof());
2556 } 2540 }
2557 2541
2558 TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { 2542 TEST_P(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) {
2559 scoped_ptr<SpdyFrame> stream1_syn( 2543 scoped_ptr<SpdyFrame> stream1_syn(
2560 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 2544 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
2561 scoped_ptr<SpdyFrame> stream1_body( 2545 scoped_ptr<SpdyFrame> stream1_body(
2562 spdy_util_.ConstructSpdyBodyFrame(1, true)); 2546 spdy_util_.ConstructSpdyBodyFrame(1, true));
2563 MockWrite writes[] = { 2547 MockWrite writes[] = {
2564 CreateMockWrite(*stream1_syn, 0), 2548 CreateMockWrite(*stream1_syn, 0),
2565 }; 2549 };
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
2718 2702
2719 // Start the transaction with basic parameters. 2703 // Start the transaction with basic parameters.
2720 TestCompletionCallback callback; 2704 TestCompletionCallback callback;
2721 int rv = trans->Start( 2705 int rv = trans->Start(
2722 &CreateGetRequest(), callback.callback(), BoundNetLog()); 2706 &CreateGetRequest(), callback.callback(), BoundNetLog());
2723 EXPECT_EQ(ERR_IO_PENDING, rv); 2707 EXPECT_EQ(ERR_IO_PENDING, rv);
2724 rv = callback.WaitForResult(); 2708 rv = callback.WaitForResult();
2725 EXPECT_EQ(OK, rv); 2709 EXPECT_EQ(OK, rv);
2726 2710
2727 // Verify that we consumed all test data. 2711 // Verify that we consumed all test data.
2728 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 2712 EXPECT_TRUE(data.AllReadDataConsumed());
2729 << data.read_count() 2713 EXPECT_TRUE(data.AllWriteDataConsumed());
2730 << " Read index: "
2731 << data.read_index();
2732 EXPECT_TRUE(data.at_write_eof()) << "Write count: "
2733 << data.write_count()
2734 << " Write index: "
2735 << data.write_index();
2736 2714
2737 // Verify the SYN_REPLY. 2715 // Verify the SYN_REPLY.
2738 HttpResponseInfo response = *trans->GetResponseInfo(); 2716 HttpResponseInfo response = *trans->GetResponseInfo();
2739 EXPECT_TRUE(response.headers.get() != NULL); 2717 EXPECT_TRUE(response.headers.get() != NULL);
2740 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 2718 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
2741 } 2719 }
2742 2720
2743 // Verify that we don't leak streams and that we properly send a reset 2721 // Verify that we don't leak streams and that we properly send a reset
2744 // if the server pushes the same stream twice. 2722 // if the server pushes the same stream twice.
2745 TEST_P(SpdyNetworkTransactionTest, ServerPushDuplicate) { 2723 TEST_P(SpdyNetworkTransactionTest, ServerPushDuplicate) {
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
2936 2914
2937 // Start the transaction with basic parameters. 2915 // Start the transaction with basic parameters.
2938 TestCompletionCallback callback; 2916 TestCompletionCallback callback;
2939 int rv = trans->Start( 2917 int rv = trans->Start(
2940 &CreateGetRequest(), callback.callback(), BoundNetLog()); 2918 &CreateGetRequest(), callback.callback(), BoundNetLog());
2941 EXPECT_EQ(ERR_IO_PENDING, rv); 2919 EXPECT_EQ(ERR_IO_PENDING, rv);
2942 rv = callback.WaitForResult(); 2920 rv = callback.WaitForResult();
2943 EXPECT_EQ(OK, rv); 2921 EXPECT_EQ(OK, rv);
2944 2922
2945 // Verify that we consumed all test data. 2923 // Verify that we consumed all test data.
2946 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 2924 EXPECT_TRUE(data.AllReadDataConsumed());
2947 << data.read_count() 2925 EXPECT_TRUE(data.AllWriteDataConsumed());
2948 << " Read index: "
2949 << data.read_index();
2950 EXPECT_TRUE(data.at_write_eof()) << "Write count: "
2951 << data.write_count()
2952 << " Write index: "
2953 << data.write_index();
2954 2926
2955 // Verify the SYN_REPLY. 2927 // Verify the SYN_REPLY.
2956 HttpResponseInfo response = *trans->GetResponseInfo(); 2928 HttpResponseInfo response = *trans->GetResponseInfo();
2957 EXPECT_TRUE(response.headers.get() != NULL); 2929 EXPECT_TRUE(response.headers.get() != NULL);
2958 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 2930 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
2959 } 2931 }
2960 2932
2961 TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) { 2933 TEST_P(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) {
2962 scoped_ptr<SpdyFrame> stream1_syn( 2934 scoped_ptr<SpdyFrame> stream1_syn(
2963 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 2935 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
(...skipping 27 matching lines...) Expand all
2991 2963
2992 // Start the transaction with basic parameters. 2964 // Start the transaction with basic parameters.
2993 TestCompletionCallback callback; 2965 TestCompletionCallback callback;
2994 int rv = trans->Start( 2966 int rv = trans->Start(
2995 &CreateGetRequest(), callback.callback(), BoundNetLog()); 2967 &CreateGetRequest(), callback.callback(), BoundNetLog());
2996 EXPECT_EQ(ERR_IO_PENDING, rv); 2968 EXPECT_EQ(ERR_IO_PENDING, rv);
2997 rv = callback.WaitForResult(); 2969 rv = callback.WaitForResult();
2998 EXPECT_EQ(OK, rv); 2970 EXPECT_EQ(OK, rv);
2999 2971
3000 // Verify that we consumed all test data. 2972 // Verify that we consumed all test data.
3001 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 2973 EXPECT_TRUE(data.AllReadDataConsumed());
3002 << data.read_count() 2974 EXPECT_TRUE(data.AllWriteDataConsumed());
3003 << " Read index: "
3004 << data.read_index();
3005 EXPECT_TRUE(data.at_write_eof()) << "Write count: "
3006 << data.write_count()
3007 << " Write index: "
3008 << data.write_index();
3009 2975
3010 // Verify the SYN_REPLY. 2976 // Verify the SYN_REPLY.
3011 HttpResponseInfo response = *trans->GetResponseInfo(); 2977 HttpResponseInfo response = *trans->GetResponseInfo();
3012 EXPECT_TRUE(response.headers.get() != NULL); 2978 EXPECT_TRUE(response.headers.get() != NULL);
3013 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 2979 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
3014 } 2980 }
3015 2981
3016 TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) { 2982 TEST_P(SpdyNetworkTransactionTest, ServerPushNoURL) {
3017 scoped_ptr<SpdyFrame> stream1_syn( 2983 scoped_ptr<SpdyFrame> stream1_syn(
3018 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 2984 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3050 3016
3051 // Start the transaction with basic parameters. 3017 // Start the transaction with basic parameters.
3052 TestCompletionCallback callback; 3018 TestCompletionCallback callback;
3053 int rv = trans->Start( 3019 int rv = trans->Start(
3054 &CreateGetRequest(), callback.callback(), BoundNetLog()); 3020 &CreateGetRequest(), callback.callback(), BoundNetLog());
3055 EXPECT_EQ(ERR_IO_PENDING, rv); 3021 EXPECT_EQ(ERR_IO_PENDING, rv);
3056 rv = callback.WaitForResult(); 3022 rv = callback.WaitForResult();
3057 EXPECT_EQ(OK, rv); 3023 EXPECT_EQ(OK, rv);
3058 3024
3059 // Verify that we consumed all test data. 3025 // Verify that we consumed all test data.
3060 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 3026 EXPECT_TRUE(data.AllReadDataConsumed());
3061 << data.read_count() 3027 EXPECT_TRUE(data.AllWriteDataConsumed());
3062 << " Read index: "
3063 << data.read_index();
3064 EXPECT_TRUE(data.at_write_eof()) << "Write count: "
3065 << data.write_count()
3066 << " Write index: "
3067 << data.write_index();
3068 3028
3069 // Verify the SYN_REPLY. 3029 // Verify the SYN_REPLY.
3070 HttpResponseInfo response = *trans->GetResponseInfo(); 3030 HttpResponseInfo response = *trans->GetResponseInfo();
3071 EXPECT_TRUE(response.headers.get() != NULL); 3031 EXPECT_TRUE(response.headers.get() != NULL);
3072 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 3032 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
3073 } 3033 }
3074 3034
3075 // Verify that various SynReply headers parse correctly through the 3035 // Verify that various SynReply headers parse correctly through the
3076 // HTTP layer. 3036 // HTTP layer.
3077 TEST_P(SpdyNetworkTransactionTest, SynReplyHeaders) { 3037 TEST_P(SpdyNetworkTransactionTest, SynReplyHeaders) {
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
3522 writes, arraysize(writes)); 3482 writes, arraysize(writes));
3523 3483
3524 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 3484 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
3525 BoundNetLog(), GetParam(), NULL); 3485 BoundNetLog(), GetParam(), NULL);
3526 helper.SetDeterministic(); 3486 helper.SetDeterministic();
3527 helper.RunPreTestSetup(); 3487 helper.RunPreTestSetup();
3528 helper.AddDeterministicData(&data); 3488 helper.AddDeterministicData(&data);
3529 EXPECT_TRUE(helper.StartDefaultTest()); 3489 EXPECT_TRUE(helper.StartDefaultTest());
3530 data.RunFor(2); 3490 data.RunFor(2);
3531 helper.FinishDefaultTest(); 3491 helper.FinishDefaultTest();
3532 EXPECT_TRUE(data.at_write_eof()); 3492 EXPECT_TRUE(data.AllWriteDataConsumed());
3533 EXPECT_TRUE(!data.at_read_eof()); 3493 EXPECT_TRUE(!data.AllReadDataConsumed());
3534 TransactionHelperResult out = helper.output(); 3494 TransactionHelperResult out = helper.output();
3535 EXPECT_EQ(ERR_FAILED, out.rv); 3495 EXPECT_EQ(ERR_FAILED, out.rv);
3536 } 3496 }
3537 3497
3538 // Test that partial writes work. 3498 // Test that partial writes work.
3539 TEST_P(SpdyNetworkTransactionTest, PartialWrite) { 3499 TEST_P(SpdyNetworkTransactionTest, PartialWrite) {
3540 // Chop the SYN_STREAM frame into 5 chunks. 3500 // Chop the SYN_STREAM frame into 5 chunks.
3541 scoped_ptr<SpdyFrame> req( 3501 scoped_ptr<SpdyFrame> req(
3542 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 3502 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
3543 const int kChunks = 5; 3503 const int kChunks = 5;
(...skipping 1676 matching lines...) Expand 10 before | Expand all | Expand 10 after
5220 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5180 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
5221 5181
5222 // Verify the pushed stream. 5182 // Verify the pushed stream.
5223 EXPECT_TRUE(response2.headers.get() != NULL); 5183 EXPECT_TRUE(response2.headers.get() != NULL);
5224 EXPECT_EQ("HTTP/1.1 200 OK", response2.headers->GetStatusLine()); 5184 EXPECT_EQ("HTTP/1.1 200 OK", response2.headers->GetStatusLine());
5225 5185
5226 // Read the final EOF (which will close the session) 5186 // Read the final EOF (which will close the session)
5227 data.RunFor(1); 5187 data.RunFor(1);
5228 5188
5229 // Verify that we consumed all test data. 5189 // Verify that we consumed all test data.
5230 EXPECT_TRUE(data.at_read_eof()); 5190 EXPECT_TRUE(data.AllReadDataConsumed());
5231 EXPECT_TRUE(data.at_write_eof()); 5191 EXPECT_TRUE(data.AllWriteDataConsumed());
5232 } 5192 }
5233 5193
5234 // TODO(baranovich): HTTP 2 does not allow multiple HEADERS frames 5194 // TODO(baranovich): HTTP 2 does not allow multiple HEADERS frames
5235 TEST_P(SpdyNetworkTransactionTest, ServerPushWithTwoHeaderFrames) { 5195 TEST_P(SpdyNetworkTransactionTest, ServerPushWithTwoHeaderFrames) {
5236 // We push a stream and attempt to claim it before the headers come down. 5196 // We push a stream and attempt to claim it before the headers come down.
5237 scoped_ptr<SpdyFrame> stream1_syn( 5197 scoped_ptr<SpdyFrame> stream1_syn(
5238 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 5198 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
5239 scoped_ptr<SpdyFrame> stream1_body( 5199 scoped_ptr<SpdyFrame> stream1_body(
5240 spdy_util_.ConstructSpdyBodyFrame(1, true)); 5200 spdy_util_.ConstructSpdyBodyFrame(1, true));
5241 MockWrite writes[] = { 5201 MockWrite writes[] = {
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
5360 // Verify we got all the headers from all header blocks. 5320 // Verify we got all the headers from all header blocks.
5361 if (spdy_util_.spdy_version() < SPDY4) 5321 if (spdy_util_.spdy_version() < SPDY4)
5362 EXPECT_TRUE(response2.headers->HasHeaderValue("alpha", "beta")); 5322 EXPECT_TRUE(response2.headers->HasHeaderValue("alpha", "beta"));
5363 EXPECT_TRUE(response2.headers->HasHeaderValue("hello", "bye")); 5323 EXPECT_TRUE(response2.headers->HasHeaderValue("hello", "bye"));
5364 EXPECT_TRUE(response2.headers->HasHeaderValue("status", "200")); 5324 EXPECT_TRUE(response2.headers->HasHeaderValue("status", "200"));
5365 5325
5366 // Read the final EOF (which will close the session) 5326 // Read the final EOF (which will close the session)
5367 data.RunFor(1); 5327 data.RunFor(1);
5368 5328
5369 // Verify that we consumed all test data. 5329 // Verify that we consumed all test data.
5370 EXPECT_TRUE(data.at_read_eof()); 5330 EXPECT_TRUE(data.AllReadDataConsumed());
5371 EXPECT_TRUE(data.at_write_eof()); 5331 EXPECT_TRUE(data.AllWriteDataConsumed());
5372 } 5332 }
5373 5333
5374 TEST_P(SpdyNetworkTransactionTest, ServerPushWithNoStatusHeaderFrames) { 5334 TEST_P(SpdyNetworkTransactionTest, ServerPushWithNoStatusHeaderFrames) {
5375 // We push a stream and attempt to claim it before the headers come down. 5335 // We push a stream and attempt to claim it before the headers come down.
5376 scoped_ptr<SpdyFrame> stream1_syn( 5336 scoped_ptr<SpdyFrame> stream1_syn(
5377 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 5337 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
5378 scoped_ptr<SpdyFrame> stream1_body( 5338 scoped_ptr<SpdyFrame> stream1_body(
5379 spdy_util_.ConstructSpdyBodyFrame(1, true)); 5339 spdy_util_.ConstructSpdyBodyFrame(1, true));
5380 MockWrite writes[] = { 5340 MockWrite writes[] = {
5381 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS), 5341 CreateMockWrite(*stream1_syn, 0, SYNCHRONOUS),
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
5467 VerifyStreamsClosed(helper); 5427 VerifyStreamsClosed(helper);
5468 5428
5469 // Verify the SYN_REPLY. 5429 // Verify the SYN_REPLY.
5470 EXPECT_TRUE(response.headers.get() != NULL); 5430 EXPECT_TRUE(response.headers.get() != NULL);
5471 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5431 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
5472 5432
5473 // Read the final EOF (which will close the session). 5433 // Read the final EOF (which will close the session).
5474 data.RunFor(1); 5434 data.RunFor(1);
5475 5435
5476 // Verify that we consumed all test data. 5436 // Verify that we consumed all test data.
5477 EXPECT_TRUE(data.at_read_eof()); 5437 EXPECT_TRUE(data.AllReadDataConsumed());
5478 EXPECT_TRUE(data.at_write_eof()); 5438 EXPECT_TRUE(data.AllWriteDataConsumed());
5479 } 5439 }
5480 5440
5481 TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) { 5441 TEST_P(SpdyNetworkTransactionTest, SynReplyWithHeaders) {
5482 scoped_ptr<SpdyFrame> req( 5442 scoped_ptr<SpdyFrame> req(
5483 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 5443 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
5484 scoped_ptr<SpdyFrame> rst( 5444 scoped_ptr<SpdyFrame> rst(
5485 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 5445 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR));
5486 MockWrite writes[] = { 5446 MockWrite writes[] = {
5487 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4), 5447 CreateMockWrite(*req, 0), CreateMockWrite(*rst, 4),
5488 }; 5448 };
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
5653 5613
5654 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5614 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5655 EXPECT_EQ(ERR_IO_PENDING, rv); 5615 EXPECT_EQ(ERR_IO_PENDING, rv);
5656 rv = callback.WaitForResult(); 5616 rv = callback.WaitForResult();
5657 5617
5658 // Read the response body. 5618 // Read the response body.
5659 std::string result; 5619 std::string result;
5660 ReadResult(trans, &data, &result); 5620 ReadResult(trans, &data, &result);
5661 5621
5662 // Verify that we consumed all test data. 5622 // Verify that we consumed all test data.
5663 EXPECT_TRUE(data.at_read_eof()); 5623 EXPECT_TRUE(data.AllReadDataConsumed());
5664 EXPECT_TRUE(data.at_write_eof()); 5624 EXPECT_TRUE(data.AllWriteDataConsumed());
5665 5625
5666 // Verify the SYN_REPLY. 5626 // Verify the SYN_REPLY.
5667 // Copy the response info, because trans goes away. 5627 // Copy the response info, because trans goes away.
5668 response = *trans->GetResponseInfo(); 5628 response = *trans->GetResponseInfo();
5669 5629
5670 VerifyStreamsClosed(helper); 5630 VerifyStreamsClosed(helper);
5671 5631
5672 // Verify the SYN_REPLY. 5632 // Verify the SYN_REPLY.
5673 EXPECT_TRUE(response.headers.get() != NULL); 5633 EXPECT_TRUE(response.headers.get() != NULL);
5674 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5634 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
5707 5667
5708 // Start the transaction with basic parameters. 5668 // Start the transaction with basic parameters.
5709 TestCompletionCallback callback; 5669 TestCompletionCallback callback;
5710 int rv = trans->Start( 5670 int rv = trans->Start(
5711 &CreateGetRequest(), callback.callback(), BoundNetLog()); 5671 &CreateGetRequest(), callback.callback(), BoundNetLog());
5712 EXPECT_EQ(ERR_IO_PENDING, rv); 5672 EXPECT_EQ(ERR_IO_PENDING, rv);
5713 rv = callback.WaitForResult(); 5673 rv = callback.WaitForResult();
5714 EXPECT_EQ(OK, rv); 5674 EXPECT_EQ(OK, rv);
5715 5675
5716 // Verify that we consumed all test data. 5676 // Verify that we consumed all test data.
5717 EXPECT_TRUE(data.at_read_eof()) << "Read count: " 5677 EXPECT_TRUE(data.AllReadDataConsumed());
5718 << data.read_count() 5678 EXPECT_TRUE(data.AllWriteDataConsumed());
5719 << " Read index: "
5720 << data.read_index();
5721 EXPECT_TRUE(data.at_write_eof()) << "Write count: "
5722 << data.write_count()
5723 << " Write index: "
5724 << data.write_index();
5725 5679
5726 // Verify the SYN_REPLY. 5680 // Verify the SYN_REPLY.
5727 HttpResponseInfo response = *trans->GetResponseInfo(); 5681 HttpResponseInfo response = *trans->GetResponseInfo();
5728 EXPECT_TRUE(response.headers.get() != NULL); 5682 EXPECT_TRUE(response.headers.get() != NULL);
5729 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine()); 5683 EXPECT_EQ("HTTP/1.1 200 OK", response.headers->GetStatusLine());
5730 } 5684 }
5731 5685
5732 TEST_P(SpdyNetworkTransactionTest, OutOfOrderSynStream) { 5686 TEST_P(SpdyNetworkTransactionTest, OutOfOrderSynStream) {
5733 // This first request will start to establish the SpdySession. 5687 // This first request will start to establish the SpdySession.
5734 // Then we will start the second (MEDIUM priority) and then third 5688 // Then we will start the second (MEDIUM priority) and then third
(...skipping 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
6647 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { 6601 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) {
6648 scoped_ptr<SSLSocketDataProvider> ssl_provider( 6602 scoped_ptr<SSLSocketDataProvider> ssl_provider(
6649 new SSLSocketDataProvider(ASYNC, OK)); 6603 new SSLSocketDataProvider(ASYNC, OK));
6650 // Set to TLS_RSA_WITH_NULL_MD5 6604 // Set to TLS_RSA_WITH_NULL_MD5
6651 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); 6605 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status);
6652 6606
6653 RunTLSUsageCheckTest(ssl_provider.Pass()); 6607 RunTLSUsageCheckTest(ssl_provider.Pass());
6654 } 6608 }
6655 6609
6656 } // namespace net 6610 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_http_stream_unittest.cc ('k') | net/spdy/spdy_session_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698