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

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

Issue 2801603003: Add SpdyString alias for std::string in net/spdy. (Closed)
Patch Set: Created 3 years, 8 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_stream_test_util.cc ('k') | net/spdy/spdy_test_util_common.h » ('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 <algorithm> 9 #include <algorithm>
10 #include <cstddef> 10 #include <cstddef>
11 #include <limits> 11 #include <limits>
12 #include <memory> 12 #include <memory>
13 #include <string>
14 #include <utility> 13 #include <utility>
15 #include <vector> 14 #include <vector>
16 15
17 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
18 #include "base/run_loop.h" 17 #include "base/run_loop.h"
19 #include "net/base/completion_callback.h" 18 #include "net/base/completion_callback.h"
20 #include "net/base/request_priority.h" 19 #include "net/base/request_priority.h"
21 #include "net/log/net_log_event_type.h" 20 #include "net/log/net_log_event_type.h"
22 #include "net/log/test_net_log.h" 21 #include "net/log/test_net_log.h"
23 #include "net/log/test_net_log_entry.h" 22 #include "net/log/test_net_log_entry.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 SpdyHeaderBlock headers( 188 SpdyHeaderBlock headers(
190 spdy_util_.ConstructPostHeaderBlock(kDefaultUrl, kPostBodyLength)); 189 spdy_util_.ConstructPostHeaderBlock(kDefaultUrl, kPostBodyLength));
191 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND), 190 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND),
192 IsError(ERR_IO_PENDING)); 191 IsError(ERR_IO_PENDING));
193 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 192 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
194 193
195 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 194 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
196 195
197 EXPECT_TRUE(delegate.send_headers_completed()); 196 EXPECT_TRUE(delegate.send_headers_completed());
198 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 197 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
199 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 198 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
200 delegate.TakeReceivedData()); 199 delegate.TakeReceivedData());
201 EXPECT_TRUE(data.AllWriteDataConsumed()); 200 EXPECT_TRUE(data.AllWriteDataConsumed());
202 } 201 }
203 202
204 // Delegate that receives trailers. 203 // Delegate that receives trailers.
205 class StreamDelegateWithTrailers : public test::StreamDelegateWithBody { 204 class StreamDelegateWithTrailers : public test::StreamDelegateWithBody {
206 public: 205 public:
207 StreamDelegateWithTrailers(const base::WeakPtr<SpdyStream>& stream, 206 StreamDelegateWithTrailers(const base::WeakPtr<SpdyStream>& stream,
208 SpdyStringPiece data) 207 SpdyStringPiece data)
209 : StreamDelegateWithBody(stream, data) {} 208 : StreamDelegateWithBody(stream, data) {}
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 IsError(ERR_IO_PENDING)); 269 IsError(ERR_IO_PENDING));
271 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 270 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
272 271
273 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 272 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
274 273
275 EXPECT_TRUE(delegate.send_headers_completed()); 274 EXPECT_TRUE(delegate.send_headers_completed());
276 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 275 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
277 const SpdyHeaderBlock& received_trailers = delegate.trailers(); 276 const SpdyHeaderBlock& received_trailers = delegate.trailers();
278 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo"); 277 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo");
279 EXPECT_EQ("bar", it->second); 278 EXPECT_EQ("bar", it->second);
280 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 279 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
281 delegate.TakeReceivedData()); 280 delegate.TakeReceivedData());
282 EXPECT_TRUE(data.AllWriteDataConsumed()); 281 EXPECT_TRUE(data.AllWriteDataConsumed());
283 } 282 }
284 283
285 TEST_F(SpdyStreamTest, PushedStream) { 284 TEST_F(SpdyStreamTest, PushedStream) {
286 SpdySerializedFrame req( 285 SpdySerializedFrame req(
287 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 286 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
288 AddWrite(req); 287 AddWrite(req);
289 288
290 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 289 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND), 416 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND),
418 IsError(ERR_IO_PENDING)); 417 IsError(ERR_IO_PENDING));
419 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 418 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
420 419
421 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 420 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
422 421
423 const SpdyStreamId stream_id = delegate.stream_id(); 422 const SpdyStreamId stream_id = delegate.stream_id();
424 423
425 EXPECT_TRUE(delegate.send_headers_completed()); 424 EXPECT_TRUE(delegate.send_headers_completed());
426 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 425 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
427 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 426 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
428 delegate.TakeReceivedData()); 427 delegate.TakeReceivedData());
429 EXPECT_TRUE(data.AllWriteDataConsumed()); 428 EXPECT_TRUE(data.AllWriteDataConsumed());
430 429
431 // Check that the NetLog was filled reasonably. 430 // Check that the NetLog was filled reasonably.
432 TestNetLogEntry::List entries; 431 TestNetLogEntry::List entries;
433 log.GetEntries(&entries); 432 log.GetEntries(&entries);
434 EXPECT_LT(0u, entries.size()); 433 EXPECT_LT(0u, entries.size());
435 434
436 // Check that we logged SPDY_STREAM_ERROR correctly. 435 // Check that we logged SPDY_STREAM_ERROR correctly.
437 int pos = ExpectLogContainsSomewhere( 436 int pos = ExpectLogContainsSomewhere(
438 entries, 0, NetLogEventType::HTTP2_STREAM_ERROR, NetLogEventPhase::NONE); 437 entries, 0, NetLogEventType::HTTP2_STREAM_ERROR, NetLogEventPhase::NONE);
439 438
440 int stream_id2; 439 int stream_id2;
441 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &stream_id2)); 440 ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &stream_id2));
442 EXPECT_EQ(static_cast<int>(stream_id), stream_id2); 441 EXPECT_EQ(static_cast<int>(stream_id), stream_id2);
443 } 442 }
444 443
445 // Make sure that large blocks of data are properly split up into frame-sized 444 // Make sure that large blocks of data are properly split up into frame-sized
446 // chunks for a request/response (i.e., an HTTP-like) stream. 445 // chunks for a request/response (i.e., an HTTP-like) stream.
447 TEST_F(SpdyStreamTest, SendLargeDataAfterOpenRequestResponse) { 446 TEST_F(SpdyStreamTest, SendLargeDataAfterOpenRequestResponse) {
448 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 447 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
449 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0)); 448 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0));
450 AddWrite(req); 449 AddWrite(req);
451 450
452 std::string chunk_data(kMaxSpdyFrameChunkSize, 'x'); 451 SpdyString chunk_data(kMaxSpdyFrameChunkSize, 'x');
453 SpdySerializedFrame chunk(spdy_util_.ConstructSpdyDataFrame( 452 SpdySerializedFrame chunk(spdy_util_.ConstructSpdyDataFrame(
454 1, chunk_data.data(), chunk_data.length(), false)); 453 1, chunk_data.data(), chunk_data.length(), false));
455 AddWrite(chunk); 454 AddWrite(chunk);
456 AddWrite(chunk); 455 AddWrite(chunk);
457 456
458 SpdySerializedFrame last_chunk(spdy_util_.ConstructSpdyDataFrame( 457 SpdySerializedFrame last_chunk(spdy_util_.ConstructSpdyDataFrame(
459 1, chunk_data.data(), chunk_data.length(), true)); 458 1, chunk_data.data(), chunk_data.length(), true));
460 AddWrite(last_chunk); 459 AddWrite(last_chunk);
461 460
462 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0)); 461 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
463 AddRead(resp); 462 AddRead(resp);
464 463
465 AddReadEOF(); 464 AddReadEOF();
466 465
467 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), 466 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
468 GetNumWrites()); 467 GetNumWrites());
469 MockConnect connect_data(SYNCHRONOUS, OK); 468 MockConnect connect_data(SYNCHRONOUS, OK);
470 data.set_connect_data(connect_data); 469 data.set_connect_data(connect_data);
471 session_deps_.socket_factory->AddSocketDataProvider(&data); 470 session_deps_.socket_factory->AddSocketDataProvider(&data);
472 471
473 AddSSLSocketData(); 472 AddSSLSocketData();
474 473
475 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 474 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
476 475
477 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 476 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
478 SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource()); 477 SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource());
479 ASSERT_TRUE(stream); 478 ASSERT_TRUE(stream);
480 479
481 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); 480 SpdyString body_data(3 * kMaxSpdyFrameChunkSize, 'x');
482 StreamDelegateWithBody delegate(stream, body_data); 481 StreamDelegateWithBody delegate(stream, body_data);
483 stream->SetDelegate(&delegate); 482 stream->SetDelegate(&delegate);
484 483
485 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); 484 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
486 485
487 SpdyHeaderBlock headers( 486 SpdyHeaderBlock headers(
488 spdy_util_.ConstructPostHeaderBlock(kDefaultUrl, kPostBodyLength)); 487 spdy_util_.ConstructPostHeaderBlock(kDefaultUrl, kPostBodyLength));
489 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND), 488 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND),
490 IsError(ERR_IO_PENDING)); 489 IsError(ERR_IO_PENDING));
491 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 490 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
492 491
493 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 492 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
494 493
495 EXPECT_TRUE(delegate.send_headers_completed()); 494 EXPECT_TRUE(delegate.send_headers_completed());
496 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 495 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
497 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 496 EXPECT_EQ(SpdyString(), delegate.TakeReceivedData());
498 EXPECT_TRUE(data.AllWriteDataConsumed()); 497 EXPECT_TRUE(data.AllWriteDataConsumed());
499 } 498 }
500 499
501 // Make sure that large blocks of data are properly split up into frame-sized 500 // Make sure that large blocks of data are properly split up into frame-sized
502 // chunks for a bidirectional (i.e., non-HTTP-like) stream. 501 // chunks for a bidirectional (i.e., non-HTTP-like) stream.
503 TEST_F(SpdyStreamTest, SendLargeDataAfterOpenBidirectional) { 502 TEST_F(SpdyStreamTest, SendLargeDataAfterOpenBidirectional) {
504 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 503 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
505 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0)); 504 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0));
506 AddWrite(req); 505 AddWrite(req);
507 506
508 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0)); 507 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
509 AddRead(resp); 508 AddRead(resp);
510 509
511 std::string chunk_data(kMaxSpdyFrameChunkSize, 'x'); 510 SpdyString chunk_data(kMaxSpdyFrameChunkSize, 'x');
512 SpdySerializedFrame chunk(spdy_util_.ConstructSpdyDataFrame( 511 SpdySerializedFrame chunk(spdy_util_.ConstructSpdyDataFrame(
513 1, chunk_data.data(), chunk_data.length(), false)); 512 1, chunk_data.data(), chunk_data.length(), false));
514 AddWrite(chunk); 513 AddWrite(chunk);
515 AddWrite(chunk); 514 AddWrite(chunk);
516 AddWrite(chunk); 515 AddWrite(chunk);
517 516
518 AddReadEOF(); 517 AddReadEOF();
519 518
520 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), 519 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(),
521 GetNumWrites()); 520 GetNumWrites());
522 MockConnect connect_data(SYNCHRONOUS, OK); 521 MockConnect connect_data(SYNCHRONOUS, OK);
523 data.set_connect_data(connect_data); 522 data.set_connect_data(connect_data);
524 session_deps_.socket_factory->AddSocketDataProvider(&data); 523 session_deps_.socket_factory->AddSocketDataProvider(&data);
525 524
526 AddSSLSocketData(); 525 AddSSLSocketData();
527 526
528 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); 527 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession());
529 528
530 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 529 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
531 SPDY_BIDIRECTIONAL_STREAM, session, url_, LOWEST, NetLogWithSource()); 530 SPDY_BIDIRECTIONAL_STREAM, session, url_, LOWEST, NetLogWithSource());
532 ASSERT_TRUE(stream); 531 ASSERT_TRUE(stream);
533 532
534 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); 533 SpdyString body_data(3 * kMaxSpdyFrameChunkSize, 'x');
535 StreamDelegateSendImmediate delegate(stream, body_data); 534 StreamDelegateSendImmediate delegate(stream, body_data);
536 stream->SetDelegate(&delegate); 535 stream->SetDelegate(&delegate);
537 536
538 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); 537 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
539 538
540 SpdyHeaderBlock headers( 539 SpdyHeaderBlock headers(
541 spdy_util_.ConstructPostHeaderBlock(kDefaultUrl, kPostBodyLength)); 540 spdy_util_.ConstructPostHeaderBlock(kDefaultUrl, kPostBodyLength));
542 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND), 541 EXPECT_THAT(stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND),
543 IsError(ERR_IO_PENDING)); 542 IsError(ERR_IO_PENDING));
544 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 543 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
545 544
546 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 545 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
547 546
548 EXPECT_TRUE(delegate.send_headers_completed()); 547 EXPECT_TRUE(delegate.send_headers_completed());
549 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 548 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
550 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 549 EXPECT_EQ(SpdyString(), delegate.TakeReceivedData());
551 EXPECT_TRUE(data.AllWriteDataConsumed()); 550 EXPECT_TRUE(data.AllWriteDataConsumed());
552 } 551 }
553 552
554 // Receiving a header with uppercase ASCII should result in a protocol error. 553 // Receiving a header with uppercase ASCII should result in a protocol error.
555 TEST_F(SpdyStreamTest, UpperCaseHeaders) { 554 TEST_F(SpdyStreamTest, UpperCaseHeaders) {
556 SpdySerializedFrame req( 555 SpdySerializedFrame req(
557 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 556 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
558 AddWrite(req); 557 AddWrite(req);
559 558
560 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; 559 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"};
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); 779 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
781 780
782 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); 781 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
783 EXPECT_THAT( 782 EXPECT_THAT(
784 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), 783 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND),
785 IsError(ERR_IO_PENDING)); 784 IsError(ERR_IO_PENDING));
786 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 785 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
787 786
788 EXPECT_THAT(delegate.WaitForClose(), IsOk()); 787 EXPECT_THAT(delegate.WaitForClose(), IsOk());
789 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 788 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
790 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 789 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
791 delegate.TakeReceivedData()); 790 delegate.TakeReceivedData());
792 791
793 // Finish async network reads and writes. 792 // Finish async network reads and writes.
794 base::RunLoop().RunUntilIdle(); 793 base::RunLoop().RunUntilIdle();
795 794
796 EXPECT_TRUE(data.AllWriteDataConsumed()); 795 EXPECT_TRUE(data.AllWriteDataConsumed());
797 EXPECT_TRUE(data.AllReadDataConsumed()); 796 EXPECT_TRUE(data.AllReadDataConsumed());
798 } 797 }
799 798
800 TEST_F(SpdyStreamTest, HeadersMustPreceedData) { 799 TEST_F(SpdyStreamTest, HeadersMustPreceedData) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); 889 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
891 890
892 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); 891 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
893 EXPECT_THAT( 892 EXPECT_THAT(
894 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND), 893 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND),
895 IsError(ERR_IO_PENDING)); 894 IsError(ERR_IO_PENDING));
896 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 895 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
897 896
898 EXPECT_THAT(delegate.WaitForClose(), IsOk()); 897 EXPECT_THAT(delegate.WaitForClose(), IsOk());
899 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 898 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
900 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 899 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
901 delegate.TakeReceivedData()); 900 delegate.TakeReceivedData());
902 901
903 // Finish async network reads and writes. 902 // Finish async network reads and writes.
904 base::RunLoop().RunUntilIdle(); 903 base::RunLoop().RunUntilIdle();
905 904
906 EXPECT_TRUE(data.AllWriteDataConsumed()); 905 EXPECT_TRUE(data.AllWriteDataConsumed());
907 EXPECT_TRUE(data.AllReadDataConsumed()); 906 EXPECT_TRUE(data.AllReadDataConsumed());
908 } 907 }
909 908
910 TEST_F(SpdyStreamTest, TrailersMustNotFollowTrailers) { 909 TEST_F(SpdyStreamTest, TrailersMustNotFollowTrailers) {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 1068
1070 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); 1069 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty());
1071 1070
1072 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); 1071 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
1073 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), 1072 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers),
1074 NO_MORE_DATA_TO_SEND)); 1073 NO_MORE_DATA_TO_SEND));
1075 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); 1074 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec());
1076 1075
1077 EXPECT_THAT(delegate.WaitForClose(), IsOk()); 1076 EXPECT_THAT(delegate.WaitForClose(), IsOk());
1078 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); 1077 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey()));
1079 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 1078 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
1080 delegate.TakeReceivedData()); 1079 delegate.TakeReceivedData());
1081 1080
1082 // Finish async network reads and writes. 1081 // Finish async network reads and writes.
1083 base::RunLoop().RunUntilIdle(); 1082 base::RunLoop().RunUntilIdle();
1084 1083
1085 EXPECT_TRUE(data.AllWriteDataConsumed()); 1084 EXPECT_TRUE(data.AllWriteDataConsumed());
1086 EXPECT_TRUE(data.AllReadDataConsumed()); 1085 EXPECT_TRUE(data.AllReadDataConsumed());
1087 } 1086 }
1088 1087
1089 TEST_F(SpdyStreamTest, StatusMustBeNumber) { 1088 TEST_F(SpdyStreamTest, StatusMustBeNumber) {
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
1381 EXPECT_TRUE(stream->send_stalled_by_flow_control()); 1380 EXPECT_TRUE(stream->send_stalled_by_flow_control());
1382 1381
1383 unstall_function.Run(stream, kPostBodyLength); 1382 unstall_function.Run(stream, kPostBodyLength);
1384 1383
1385 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 1384 EXPECT_FALSE(stream->send_stalled_by_flow_control());
1386 1385
1387 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1386 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1388 1387
1389 EXPECT_TRUE(delegate.send_headers_completed()); 1388 EXPECT_TRUE(delegate.send_headers_completed());
1390 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 1389 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
1391 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); 1390 EXPECT_EQ(SpdyString(), delegate.TakeReceivedData());
1392 EXPECT_TRUE(data.AllWriteDataConsumed()); 1391 EXPECT_TRUE(data.AllWriteDataConsumed());
1393 } 1392 }
1394 1393
1395 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseRequestResponse) { 1394 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseRequestResponse) {
1396 RunResumeAfterUnstallRequestResponseTest( 1395 RunResumeAfterUnstallRequestResponseTest(
1397 base::Bind(&IncreaseStreamSendWindowSize)); 1396 base::Bind(&IncreaseStreamSendWindowSize));
1398 } 1397 }
1399 1398
1400 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustRequestResponse) { 1399 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustRequestResponse) {
1401 RunResumeAfterUnstallRequestResponseTest( 1400 RunResumeAfterUnstallRequestResponseTest(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1462 EXPECT_TRUE(stream->send_stalled_by_flow_control()); 1461 EXPECT_TRUE(stream->send_stalled_by_flow_control());
1463 1462
1464 unstall_function.Run(stream, kPostBodyLength); 1463 unstall_function.Run(stream, kPostBodyLength);
1465 1464
1466 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 1465 EXPECT_FALSE(stream->send_stalled_by_flow_control());
1467 1466
1468 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1467 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1469 1468
1470 EXPECT_TRUE(delegate.send_headers_completed()); 1469 EXPECT_TRUE(delegate.send_headers_completed());
1471 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status")); 1470 EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
1472 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), 1471 EXPECT_EQ(SpdyString(kPostBody, kPostBodyLength),
1473 delegate.TakeReceivedData()); 1472 delegate.TakeReceivedData());
1474 EXPECT_TRUE(data.AllWriteDataConsumed()); 1473 EXPECT_TRUE(data.AllWriteDataConsumed());
1475 } 1474 }
1476 1475
1477 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseBidirectional) { 1476 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeIncreaseBidirectional) {
1478 RunResumeAfterUnstallBidirectionalTest( 1477 RunResumeAfterUnstallBidirectionalTest(
1479 base::Bind(&IncreaseStreamSendWindowSize)); 1478 base::Bind(&IncreaseStreamSendWindowSize));
1480 } 1479 }
1481 1480
1482 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustBidirectional) { 1481 TEST_F(SpdyStreamTest, ResumeAfterSendWindowSizeAdjustBidirectional) {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1552 EXPECT_EQ(response_len, stream->raw_received_bytes()); 1551 EXPECT_EQ(response_len, stream->raw_received_bytes());
1553 1552
1554 // FIN 1553 // FIN
1555 data.Resume(); 1554 data.Resume();
1556 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); 1555 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED));
1557 } 1556 }
1558 1557
1559 } // namespace test 1558 } // namespace test
1560 1559
1561 } // namespace net 1560 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream_test_util.cc ('k') | net/spdy/spdy_test_util_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698