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

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

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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_session_unittest.cc ('k') | net/spdy/spdy_test_util_common.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 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 "net/spdy/spdy_stream.h" 5 #include "net/spdy/spdy_stream.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <cstddef> 9 #include <cstddef>
10 #include <limits> 10 #include <limits>
(...skipping 11 matching lines...) Expand all
22 #include "net/log/test_net_log_entry.h" 22 #include "net/log/test_net_log_entry.h"
23 #include "net/log/test_net_log_util.h" 23 #include "net/log/test_net_log_util.h"
24 #include "net/socket/next_proto.h" 24 #include "net/socket/next_proto.h"
25 #include "net/socket/socket_test_util.h" 25 #include "net/socket/socket_test_util.h"
26 #include "net/spdy/buffered_spdy_framer.h" 26 #include "net/spdy/buffered_spdy_framer.h"
27 #include "net/spdy/spdy_http_utils.h" 27 #include "net/spdy/spdy_http_utils.h"
28 #include "net/spdy/spdy_protocol.h" 28 #include "net/spdy/spdy_protocol.h"
29 #include "net/spdy/spdy_session.h" 29 #include "net/spdy/spdy_session.h"
30 #include "net/spdy/spdy_stream_test_util.h" 30 #include "net/spdy/spdy_stream_test_util.h"
31 #include "net/spdy/spdy_test_util_common.h" 31 #include "net/spdy/spdy_test_util_common.h"
32 #include "net/test/gtest_util.h"
33 #include "testing/gmock/include/gmock/gmock.h"
32 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
33 35
36 using net::test::IsError;
37 using net::test::IsOk;
38
34 // TODO(ukai): factor out common part with spdy_http_stream_unittest.cc 39 // TODO(ukai): factor out common part with spdy_http_stream_unittest.cc
35 // 40 //
36 namespace net { 41 namespace net {
37 42
38 namespace test { 43 namespace test {
39 44
40 namespace { 45 namespace {
41 46
42 enum TestCase { 47 enum TestCase {
43 // Test using the SPDY/3.1 protocol. 48 // Test using the SPDY/3.1 protocol.
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 205
201 EXPECT_FALSE(stream->HasUrlFromHeaders()); 206 EXPECT_FALSE(stream->HasUrlFromHeaders());
202 207
203 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( 208 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
204 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); 209 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)));
205 EXPECT_EQ(ERR_IO_PENDING, 210 EXPECT_EQ(ERR_IO_PENDING,
206 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 211 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
207 EXPECT_TRUE(stream->HasUrlFromHeaders()); 212 EXPECT_TRUE(stream->HasUrlFromHeaders());
208 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 213 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
209 214
210 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 215 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
211 216
212 EXPECT_TRUE(delegate.send_headers_completed()); 217 EXPECT_TRUE(delegate.send_headers_completed());
213 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 218 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
214 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 219 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
215 delegate.TakeReceivedData()); 220 delegate.TakeReceivedData());
216 EXPECT_TRUE(data.AllWriteDataConsumed()); 221 EXPECT_TRUE(data.AllWriteDataConsumed());
217 } 222 }
218 223
219 // Delegate that receives trailers. 224 // Delegate that receives trailers.
220 class StreamDelegateWithTrailers : public test::StreamDelegateWithBody { 225 class StreamDelegateWithTrailers : public test::StreamDelegateWithBody {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 287
283 EXPECT_FALSE(stream->HasUrlFromHeaders()); 288 EXPECT_FALSE(stream->HasUrlFromHeaders());
284 289
285 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( 290 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
286 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); 291 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)));
287 EXPECT_EQ(ERR_IO_PENDING, 292 EXPECT_EQ(ERR_IO_PENDING,
288 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 293 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
289 EXPECT_TRUE(stream->HasUrlFromHeaders()); 294 EXPECT_TRUE(stream->HasUrlFromHeaders());
290 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 295 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
291 296
292 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 297 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
293 298
294 EXPECT_TRUE(delegate.send_headers_completed()); 299 EXPECT_TRUE(delegate.send_headers_completed());
295 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 300 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
296 const SpdyHeaderBlock& received_trailers = delegate.trailers(); 301 const SpdyHeaderBlock& received_trailers = delegate.trailers();
297 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo"); 302 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo");
298 EXPECT_EQ("bar", it->second); 303 EXPECT_EQ("bar", it->second);
299 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 304 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
300 delegate.TakeReceivedData()); 305 delegate.TakeReceivedData());
301 EXPECT_TRUE(data.AllWriteDataConsumed()); 306 EXPECT_TRUE(data.AllWriteDataConsumed());
302 } 307 }
303 308
304 TEST_P(SpdyStreamTest, PushedStream) { 309 TEST_P(SpdyStreamTest, PushedStream) {
305 AddReadEOF(); 310 AddReadEOF();
306 311
307 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), 312 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
308 GetNumWrites()); 313 GetNumWrites());
309 MockConnect connect_data(SYNCHRONOUS, OK); 314 MockConnect connect_data(SYNCHRONOUS, OK);
310 data.set_connect_data(connect_data); 315 data.set_connect_data(connect_data);
311 316
312 session_deps_.socket_factory->AddSocketDataProvider(&data); 317 session_deps_.socket_factory->AddSocketDataProvider(&data);
313 318
314 base::WeakPtr<SpdySession> spdy_session(CreateDefaultSpdySession()); 319 base::WeakPtr<SpdySession> spdy_session(CreateDefaultSpdySession());
315 320
316 // Conjure up a stream. 321 // Conjure up a stream.
317 SpdyStreamRequest stream_request; 322 SpdyStreamRequest stream_request;
318 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session, 323 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session,
319 GURL(), DEFAULT_PRIORITY, 324 GURL(), DEFAULT_PRIORITY,
320 BoundNetLog(), CompletionCallback()); 325 BoundNetLog(), CompletionCallback());
321 ASSERT_EQ(OK, result); 326 ASSERT_THAT(result, IsOk());
322 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream(); 327 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream();
323 ActivatePushStream(spdy_session.get(), stream.get()); 328 ActivatePushStream(spdy_session.get(), stream.get());
324 329
325 EXPECT_FALSE(stream->HasUrlFromHeaders()); 330 EXPECT_FALSE(stream->HasUrlFromHeaders());
326 331
327 // Set required request headers. 332 // Set required request headers.
328 SpdyHeaderBlock request_headers; 333 SpdyHeaderBlock request_headers;
329 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); 334 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers);
330 stream->OnPushPromiseHeadersReceived(request_headers); 335 stream->OnPushPromiseHeadersReceived(request_headers);
331 336
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 415
411 EXPECT_FALSE(stream->HasUrlFromHeaders()); 416 EXPECT_FALSE(stream->HasUrlFromHeaders());
412 417
413 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( 418 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
414 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); 419 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)));
415 EXPECT_EQ(ERR_IO_PENDING, 420 EXPECT_EQ(ERR_IO_PENDING,
416 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 421 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
417 EXPECT_TRUE(stream->HasUrlFromHeaders()); 422 EXPECT_TRUE(stream->HasUrlFromHeaders());
418 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 423 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
419 424
420 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 425 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
421 426
422 const SpdyStreamId stream_id = delegate.stream_id(); 427 const SpdyStreamId stream_id = delegate.stream_id();
423 428
424 EXPECT_TRUE(delegate.send_headers_completed()); 429 EXPECT_TRUE(delegate.send_headers_completed());
425 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 430 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
426 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 431 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
427 delegate.TakeReceivedData()); 432 delegate.TakeReceivedData());
428 EXPECT_TRUE(data.AllWriteDataConsumed()); 433 EXPECT_TRUE(data.AllWriteDataConsumed());
429 434
430 // Check that the NetLog was filled reasonably. 435 // Check that the NetLog was filled reasonably.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 493
489 EXPECT_FALSE(stream->HasUrlFromHeaders()); 494 EXPECT_FALSE(stream->HasUrlFromHeaders());
490 495
491 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( 496 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
492 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); 497 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)));
493 EXPECT_EQ(ERR_IO_PENDING, 498 EXPECT_EQ(ERR_IO_PENDING,
494 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 499 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
495 EXPECT_TRUE(stream->HasUrlFromHeaders()); 500 EXPECT_TRUE(stream->HasUrlFromHeaders());
496 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 501 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
497 502
498 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 503 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
499 504
500 EXPECT_TRUE(delegate.send_headers_completed()); 505 EXPECT_TRUE(delegate.send_headers_completed());
501 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 506 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
502 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 507 EXPECT_EQ(std::string(), delegate.TakeReceivedData());
503 EXPECT_TRUE(data.AllWriteDataConsumed()); 508 EXPECT_TRUE(data.AllWriteDataConsumed());
504 } 509 }
505 510
506 // Make sure that large blocks of data are properly split up into 511 // Make sure that large blocks of data are properly split up into
507 // frame-sized chunks for a bidirectional (i.e., non-HTTP-like) 512 // frame-sized chunks for a bidirectional (i.e., non-HTTP-like)
508 // stream. 513 // stream.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 551
547 EXPECT_FALSE(stream->HasUrlFromHeaders()); 552 EXPECT_FALSE(stream->HasUrlFromHeaders());
548 553
549 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( 554 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
550 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); 555 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)));
551 EXPECT_EQ(ERR_IO_PENDING, 556 EXPECT_EQ(ERR_IO_PENDING,
552 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 557 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
553 EXPECT_TRUE(stream->HasUrlFromHeaders()); 558 EXPECT_TRUE(stream->HasUrlFromHeaders());
554 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 559 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
555 560
556 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 561 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
557 562
558 EXPECT_TRUE(delegate.send_headers_completed()); 563 EXPECT_TRUE(delegate.send_headers_completed());
559 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 564 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
560 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 565 EXPECT_EQ(std::string(), delegate.TakeReceivedData());
561 EXPECT_TRUE(data.AllWriteDataConsumed()); 566 EXPECT_TRUE(data.AllWriteDataConsumed());
562 } 567 }
563 568
564 // Receiving a header with uppercase ASCII should result in a protocol 569 // Receiving a header with uppercase ASCII should result in a protocol
565 // error. 570 // error.
566 TEST_P(SpdyStreamTest, UpperCaseHeaders) { 571 TEST_P(SpdyStreamTest, UpperCaseHeaders) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 605
601 EXPECT_FALSE(stream->HasUrlFromHeaders()); 606 EXPECT_FALSE(stream->HasUrlFromHeaders());
602 607
603 std::unique_ptr<SpdyHeaderBlock> headers( 608 std::unique_ptr<SpdyHeaderBlock> headers(
604 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); 609 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)));
605 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 610 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
606 NO_MORE_DATA_TO_SEND)); 611 NO_MORE_DATA_TO_SEND));
607 EXPECT_TRUE(stream->HasUrlFromHeaders()); 612 EXPECT_TRUE(stream->HasUrlFromHeaders());
608 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 613 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
609 614
610 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, delegate.WaitForClose()); 615 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
611 } 616 }
612 617
613 // Receiving a header with uppercase ASCII should result in a protocol 618 // Receiving a header with uppercase ASCII should result in a protocol
614 // error even for a push stream. 619 // error even for a push stream.
615 TEST_P(SpdyStreamTest, UpperCaseHeadersOnPush) { 620 TEST_P(SpdyStreamTest, UpperCaseHeadersOnPush) {
616 GURL url(kStreamUrl); 621 GURL url(kStreamUrl);
617 622
618 std::unique_ptr<SpdySerializedFrame> syn( 623 std::unique_ptr<SpdySerializedFrame> syn(
619 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 624 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
620 AddWrite(*syn); 625 AddWrite(*syn);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 std::unique_ptr<SpdyHeaderBlock> headers( 663 std::unique_ptr<SpdyHeaderBlock> headers(
659 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); 664 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)));
660 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 665 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
661 NO_MORE_DATA_TO_SEND)); 666 NO_MORE_DATA_TO_SEND));
662 EXPECT_TRUE(stream->HasUrlFromHeaders()); 667 EXPECT_TRUE(stream->HasUrlFromHeaders());
663 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 668 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
664 669
665 data.RunUntilPaused(); 670 data.RunUntilPaused();
666 671
667 base::WeakPtr<SpdyStream> push_stream; 672 base::WeakPtr<SpdyStream> push_stream;
668 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); 673 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
669 EXPECT_FALSE(push_stream); 674 EXPECT_FALSE(push_stream);
670 675
671 data.Resume(); 676 data.Resume();
672 677
673 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 678 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
674 } 679 }
675 680
676 // Receiving a header with uppercase ASCII in a HEADERS frame should 681 // Receiving a header with uppercase ASCII in a HEADERS frame should
677 // result in a protocol error. 682 // result in a protocol error.
678 TEST_P(SpdyStreamTest, UpperCaseHeadersInHeadersFrame) { 683 TEST_P(SpdyStreamTest, UpperCaseHeadersInHeadersFrame) {
679 GURL url(kStreamUrl); 684 GURL url(kStreamUrl);
680 685
681 std::unique_ptr<SpdySerializedFrame> syn( 686 std::unique_ptr<SpdySerializedFrame> syn(
682 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 687 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
683 AddWrite(*syn); 688 AddWrite(*syn);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 std::unique_ptr<SpdyHeaderBlock> headers( 733 std::unique_ptr<SpdyHeaderBlock> headers(
729 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); 734 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)));
730 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 735 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
731 NO_MORE_DATA_TO_SEND)); 736 NO_MORE_DATA_TO_SEND));
732 EXPECT_TRUE(stream->HasUrlFromHeaders()); 737 EXPECT_TRUE(stream->HasUrlFromHeaders());
733 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 738 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
734 739
735 data.RunUntilPaused(); 740 data.RunUntilPaused();
736 741
737 base::WeakPtr<SpdyStream> push_stream; 742 base::WeakPtr<SpdyStream> push_stream;
738 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); 743 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
739 EXPECT_TRUE(push_stream); 744 EXPECT_TRUE(push_stream);
740 745
741 data.Resume(); 746 data.Resume();
742 data.RunUntilPaused(); 747 data.RunUntilPaused();
743 748
744 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); 749 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
745 EXPECT_FALSE(push_stream); 750 EXPECT_FALSE(push_stream);
746 751
747 data.Resume(); 752 data.Resume();
748 753
749 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 754 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
750 } 755 }
751 756
752 // Receiving a duplicate header in a HEADERS frame should result in a 757 // Receiving a duplicate header in a HEADERS frame should result in a
753 // protocol error. 758 // protocol error.
754 TEST_P(SpdyStreamTest, DuplicateHeaders) { 759 TEST_P(SpdyStreamTest, DuplicateHeaders) {
755 GURL url(kStreamUrl); 760 GURL url(kStreamUrl);
756 761
757 std::unique_ptr<SpdySerializedFrame> syn( 762 std::unique_ptr<SpdySerializedFrame> syn(
758 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 763 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
759 AddWrite(*syn); 764 AddWrite(*syn);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 std::unique_ptr<SpdyHeaderBlock> headers( 809 std::unique_ptr<SpdyHeaderBlock> headers(
805 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); 810 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)));
806 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 811 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
807 NO_MORE_DATA_TO_SEND)); 812 NO_MORE_DATA_TO_SEND));
808 EXPECT_TRUE(stream->HasUrlFromHeaders()); 813 EXPECT_TRUE(stream->HasUrlFromHeaders());
809 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); 814 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec());
810 815
811 data.RunUntilPaused(); 816 data.RunUntilPaused();
812 817
813 base::WeakPtr<SpdyStream> push_stream; 818 base::WeakPtr<SpdyStream> push_stream;
814 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); 819 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
815 EXPECT_TRUE(push_stream); 820 EXPECT_TRUE(push_stream);
816 821
817 data.Resume(); 822 data.Resume();
818 data.RunUntilPaused(); 823 data.RunUntilPaused();
819 824
820 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); 825 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk());
821 EXPECT_FALSE(push_stream); 826 EXPECT_FALSE(push_stream);
822 827
823 data.Resume(); 828 data.Resume();
824 829
825 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 830 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
826 } 831 }
827 832
828 // Call IncreaseSendWindowSize on a stream with a large enough delta 833 // Call IncreaseSendWindowSize on a stream with a large enough delta
829 // to overflow an int32_t. The SpdyStream should handle that case 834 // to overflow an int32_t. The SpdyStream should handle that case
830 // gracefully. 835 // gracefully.
831 TEST_P(SpdyStreamTest, IncreaseSendWindowSizeOverflow) { 836 TEST_P(SpdyStreamTest, IncreaseSendWindowSizeOverflow) {
832 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost( 837 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyPost(
833 kStreamUrl, 1, kPostBodyLength, LOWEST, NULL, 0)); 838 kStreamUrl, 1, kPostBodyLength, LOWEST, NULL, 0));
834 AddWrite(*req); 839 AddWrite(*req);
835 840
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 int32_t old_send_window_size = stream->send_window_size(); 879 int32_t old_send_window_size = stream->send_window_size();
875 ASSERT_GT(old_send_window_size, 0); 880 ASSERT_GT(old_send_window_size, 0);
876 int32_t delta_window_size = 881 int32_t delta_window_size =
877 std::numeric_limits<int32_t>::max() - old_send_window_size + 1; 882 std::numeric_limits<int32_t>::max() - old_send_window_size + 1;
878 stream->IncreaseSendWindowSize(delta_window_size); 883 stream->IncreaseSendWindowSize(delta_window_size);
879 EXPECT_EQ(NULL, stream.get()); 884 EXPECT_EQ(NULL, stream.get());
880 885
881 data.Resume(); 886 data.Resume();
882 base::RunLoop().RunUntilIdle(); 887 base::RunLoop().RunUntilIdle();
883 888
884 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, delegate.WaitForClose()); 889 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
885 } 890 }
886 891
887 // Functions used with 892 // Functions used with
888 // RunResumeAfterUnstall{RequestResponse,Bidirectional}Test(). 893 // RunResumeAfterUnstall{RequestResponse,Bidirectional}Test().
889 894
890 void StallStream(const base::WeakPtr<SpdyStream>& stream) { 895 void StallStream(const base::WeakPtr<SpdyStream>& stream) {
891 // Reduce the send window size to 0 to stall. 896 // Reduce the send window size to 0 to stall.
892 while (stream->send_window_size() > 0) { 897 while (stream->send_window_size() > 0) {
893 stream->DecreaseSendWindowSize( 898 stream->DecreaseSendWindowSize(
894 std::min(kMaxSpdyFrameChunkSize, stream->send_window_size())); 899 std::min(kMaxSpdyFrameChunkSize, stream->send_window_size()));
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 StallStream(stream); 970 StallStream(stream);
966 971
967 base::RunLoop().RunUntilIdle(); 972 base::RunLoop().RunUntilIdle();
968 973
969 EXPECT_TRUE(stream->send_stalled_by_flow_control()); 974 EXPECT_TRUE(stream->send_stalled_by_flow_control());
970 975
971 unstall_function.Run(stream, kPostBodyLength); 976 unstall_function.Run(stream, kPostBodyLength);
972 977
973 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 978 EXPECT_FALSE(stream->send_stalled_by_flow_control());
974 979
975 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 980 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
976 981
977 EXPECT_TRUE(delegate.send_headers_completed()); 982 EXPECT_TRUE(delegate.send_headers_completed());
978 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 983 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
979 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 984 EXPECT_EQ(std::string(), delegate.TakeReceivedData());
980 EXPECT_TRUE(data.AllWriteDataConsumed()); 985 EXPECT_TRUE(data.AllWriteDataConsumed());
981 } 986 }
982 987
983 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseRequestResponse) { 988 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseRequestResponse) {
984 RunResumeAfterUnstallRequestResponseTest( 989 RunResumeAfterUnstallRequestResponseTest(
985 base::Bind(&IncreaseStreamSendWindowSize)); 990 base::Bind(&IncreaseStreamSendWindowSize));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 1056
1052 data.Resume(); 1057 data.Resume();
1053 base::RunLoop().RunUntilIdle(); 1058 base::RunLoop().RunUntilIdle();
1054 1059
1055 EXPECT_TRUE(stream->send_stalled_by_flow_control()); 1060 EXPECT_TRUE(stream->send_stalled_by_flow_control());
1056 1061
1057 unstall_function.Run(stream, kPostBodyLength); 1062 unstall_function.Run(stream, kPostBodyLength);
1058 1063
1059 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 1064 EXPECT_FALSE(stream->send_stalled_by_flow_control());
1060 1065
1061 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 1066 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1062 1067
1063 EXPECT_TRUE(delegate.send_headers_completed()); 1068 EXPECT_TRUE(delegate.send_headers_completed());
1064 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 1069 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
1065 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 1070 EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
1066 delegate.TakeReceivedData()); 1071 delegate.TakeReceivedData());
1067 EXPECT_TRUE(data.AllWriteDataConsumed()); 1072 EXPECT_TRUE(data.AllWriteDataConsumed());
1068 } 1073 }
1069 1074
1070 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseBidirectional) { 1075 TEST_P(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseBidirectional) {
1071 RunResumeAfterUnstallBidirectionalTest( 1076 RunResumeAfterUnstallBidirectionalTest(
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 data.RunUntilPaused(); 1149 data.RunUntilPaused();
1145 EXPECT_EQ(reply_frame_len, stream->raw_received_bytes()); 1150 EXPECT_EQ(reply_frame_len, stream->raw_received_bytes());
1146 1151
1147 // DATA 1152 // DATA
1148 data.Resume(); 1153 data.Resume();
1149 data.RunUntilPaused(); 1154 data.RunUntilPaused();
1150 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1155 EXPECT_EQ(response_len, stream->raw_received_bytes());
1151 1156
1152 // FIN 1157 // FIN
1153 data.Resume(); 1158 data.Resume();
1154 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); 1159 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1155 } 1160 }
1156 1161
1157 } // namespace test 1162 } // namespace test
1158 1163
1159 } // namespace net 1164 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_session_unittest.cc ('k') | net/spdy/spdy_test_util_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698