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

Side by Side Diff: net/http/bidirectional_stream_unittest.cc

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/http/bidirectional_stream.h" 5 #include "net/http/bidirectional_stream.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 // implemented. 69 // implemented.
70 EXPECT_TRUE(request_headers_sent); 70 EXPECT_TRUE(request_headers_sent);
71 if (callback_.is_null()) 71 if (callback_.is_null())
72 return; 72 return;
73 callback_.Run(OK); 73 callback_.Run(OK);
74 } 74 }
75 75
76 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override { 76 void OnHeadersReceived(const SpdyHeaderBlock& response_headers) override {
77 CHECK(!not_expect_callback_); 77 CHECK(!not_expect_callback_);
78 78
79 response_headers_ = response_headers; 79 response_headers_ = response_headers.Clone();
80 if (!do_not_start_read_) 80 if (!do_not_start_read_)
81 StartOrContinueReading(); 81 StartOrContinueReading();
82 } 82 }
83 83
84 void OnDataRead(int bytes_read) override { 84 void OnDataRead(int bytes_read) override {
85 CHECK(!not_expect_callback_); 85 CHECK(!not_expect_callback_);
86 86
87 ++on_data_read_count_; 87 ++on_data_read_count_;
88 CHECK_GE(bytes_read, OK); 88 CHECK_GE(bytes_read, OK);
89 data_received_.append(read_buf_->data(), bytes_read); 89 data_received_.append(read_buf_->data(), bytes_read);
90 if (!do_not_start_read_) 90 if (!do_not_start_read_)
91 StartOrContinueReading(); 91 StartOrContinueReading();
92 } 92 }
93 93
94 void OnDataSent() override { 94 void OnDataSent() override {
95 CHECK(!not_expect_callback_); 95 CHECK(!not_expect_callback_);
96 96
97 ++on_data_sent_count_; 97 ++on_data_sent_count_;
98 } 98 }
99 99
100 void OnTrailersReceived(const SpdyHeaderBlock& trailers) override { 100 void OnTrailersReceived(const SpdyHeaderBlock& trailers) override {
101 CHECK(!not_expect_callback_); 101 CHECK(!not_expect_callback_);
102 102
103 trailers_ = trailers; 103 trailers_ = trailers.Clone();
104 if (run_until_completion_) 104 if (run_until_completion_)
105 loop_->Quit(); 105 loop_->Quit();
106 } 106 }
107 107
108 void OnFailed(int error) override { 108 void OnFailed(int error) override {
109 CHECK(!not_expect_callback_); 109 CHECK(!not_expect_callback_);
110 CHECK_EQ(OK, error_); 110 CHECK_EQ(OK, error_);
111 CHECK_NE(OK, error); 111 CHECK_NE(OK, error);
112 112
113 error_ = error; 113 error_ = error;
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 483
484 // Deliver the rest. Note that user has not called a second ReadData. 484 // Deliver the rest. Note that user has not called a second ReadData.
485 sequenced_data_->Resume(); 485 sequenced_data_->Resume();
486 base::RunLoop().RunUntilIdle(); 486 base::RunLoop().RunUntilIdle();
487 // ReadData now. Read should complete synchronously. 487 // ReadData now. Read should complete synchronously.
488 rv = delegate->ReadData(); 488 rv = delegate->ReadData();
489 EXPECT_EQ(kUploadDataSize * 2, rv); 489 EXPECT_EQ(kUploadDataSize * 2, rv);
490 rv = delegate->ReadData(); 490 rv = delegate->ReadData();
491 EXPECT_EQ(OK, rv); // EOF. 491 EXPECT_EQ(OK, rv); // EOF.
492 492
493 const SpdyHeaderBlock response_headers = delegate->response_headers(); 493 const SpdyHeaderBlock& response_headers = delegate->response_headers();
494 EXPECT_EQ("200", response_headers.find(":status")->second); 494 EXPECT_EQ("200", response_headers.find(":status")->second);
495 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 495 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
496 EXPECT_EQ(1, delegate->on_data_read_count()); 496 EXPECT_EQ(1, delegate->on_data_read_count());
497 EXPECT_EQ(0, delegate->on_data_sent_count()); 497 EXPECT_EQ(0, delegate->on_data_sent_count());
498 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 498 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
499 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 499 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
500 delegate->GetTotalSentBytes()); 500 delegate->GetTotalSentBytes());
501 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 501 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
502 delegate->GetTotalReceivedBytes()); 502 delegate->GetTotalReceivedBytes());
503 } 503 }
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 974
975 // Deliver last DATA frame and EOF. There will be an additional 975 // Deliver last DATA frame and EOF. There will be an additional
976 // Delegate::OnReadComplete callback. 976 // Delegate::OnReadComplete callback.
977 sequenced_data_->Resume(); 977 sequenced_data_->Resume();
978 base::RunLoop().RunUntilIdle(); 978 base::RunLoop().RunUntilIdle();
979 979
980 EXPECT_EQ(2, delegate->on_data_read_count()); 980 EXPECT_EQ(2, delegate->on_data_read_count());
981 EXPECT_EQ(kUploadDataSize * 3, 981 EXPECT_EQ(kUploadDataSize * 3,
982 static_cast<int>(delegate->data_received().size())); 982 static_cast<int>(delegate->data_received().size()));
983 983
984 const SpdyHeaderBlock response_headers = delegate->response_headers(); 984 const SpdyHeaderBlock& response_headers = delegate->response_headers();
985 EXPECT_EQ("200", response_headers.find(":status")->second); 985 EXPECT_EQ("200", response_headers.find(":status")->second);
986 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 986 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
987 EXPECT_EQ(0, delegate->on_data_sent_count()); 987 EXPECT_EQ(0, delegate->on_data_sent_count());
988 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 988 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
989 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 989 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
990 delegate->GetTotalSentBytes()); 990 delegate->GetTotalSentBytes());
991 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 991 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
992 delegate->GetTotalReceivedBytes()); 992 delegate->GetTotalReceivedBytes());
993 } 993 }
994 994
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 1056
1057 // Deliver trailers. Remaining read should be completed, since OnClose is 1057 // Deliver trailers. Remaining read should be completed, since OnClose is
1058 // called right after OnTrailersReceived. The three DATA frames should be 1058 // called right after OnTrailersReceived. The three DATA frames should be
1059 // delivered in a single OnReadCompleted callback. 1059 // delivered in a single OnReadCompleted callback.
1060 sequenced_data_->Resume(); 1060 sequenced_data_->Resume();
1061 base::RunLoop().RunUntilIdle(); 1061 base::RunLoop().RunUntilIdle();
1062 1062
1063 EXPECT_EQ(1, delegate->on_data_read_count()); 1063 EXPECT_EQ(1, delegate->on_data_read_count());
1064 EXPECT_EQ(kUploadDataSize * 3, 1064 EXPECT_EQ(kUploadDataSize * 3,
1065 static_cast<int>(delegate->data_received().size())); 1065 static_cast<int>(delegate->data_received().size()));
1066 const SpdyHeaderBlock response_headers = delegate->response_headers(); 1066 const SpdyHeaderBlock& response_headers = delegate->response_headers();
1067 EXPECT_EQ("200", response_headers.find(":status")->second); 1067 EXPECT_EQ("200", response_headers.find(":status")->second);
1068 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 1068 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
1069 EXPECT_EQ("bar", delegate->trailers().find("foo")->second); 1069 EXPECT_EQ("bar", delegate->trailers().find("foo")->second);
1070 EXPECT_EQ(0, delegate->on_data_sent_count()); 1070 EXPECT_EQ(0, delegate->on_data_sent_count());
1071 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 1071 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
1072 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 1072 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
1073 delegate->GetTotalSentBytes()); 1073 delegate->GetTotalSentBytes());
1074 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1074 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1075 delegate->GetTotalReceivedBytes()); 1075 delegate->GetTotalReceivedBytes());
1076 } 1076 }
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1317 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1318 std::unique_ptr<CancelOrDeleteStreamDelegate> delegate( 1318 std::unique_ptr<CancelOrDeleteStreamDelegate> delegate(
1319 new CancelOrDeleteStreamDelegate( 1319 new CancelOrDeleteStreamDelegate(
1320 read_buffer.get(), kReadBufferSize, 1320 read_buffer.get(), kReadBufferSize,
1321 CancelOrDeleteStreamDelegate::Phase::ON_HEADERS_RECEIVED, 1321 CancelOrDeleteStreamDelegate::Phase::ON_HEADERS_RECEIVED,
1322 GetParam())); 1322 GetParam()));
1323 delegate->SetRunUntilCompletion(true); 1323 delegate->SetRunUntilCompletion(true);
1324 delegate->Start(std::move(request_info), http_session_.get()); 1324 delegate->Start(std::move(request_info), http_session_.get());
1325 // Makes sure delegate does not get called. 1325 // Makes sure delegate does not get called.
1326 base::RunLoop().RunUntilIdle(); 1326 base::RunLoop().RunUntilIdle();
1327 const SpdyHeaderBlock response_headers = delegate->response_headers(); 1327 const SpdyHeaderBlock& response_headers = delegate->response_headers();
1328 EXPECT_EQ("200", response_headers.find(":status")->second); 1328 EXPECT_EQ("200", response_headers.find(":status")->second);
1329 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 1329 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
1330 EXPECT_EQ(0u, delegate->data_received().size()); 1330 EXPECT_EQ(0u, delegate->data_received().size());
1331 EXPECT_EQ(0, delegate->on_data_sent_count()); 1331 EXPECT_EQ(0, delegate->on_data_sent_count());
1332 EXPECT_EQ(0, delegate->on_data_read_count()); 1332 EXPECT_EQ(0, delegate->on_data_read_count());
1333 1333
1334 // If stream is destroyed, do not call into stream. 1334 // If stream is destroyed, do not call into stream.
1335 if (!GetParam()) 1335 if (!GetParam())
1336 return; 1336 return;
1337 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 1337 EXPECT_EQ(0, delegate->GetTotalSentBytes());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1376 1376
1377 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1377 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1378 std::unique_ptr<CancelOrDeleteStreamDelegate> delegate( 1378 std::unique_ptr<CancelOrDeleteStreamDelegate> delegate(
1379 new CancelOrDeleteStreamDelegate( 1379 new CancelOrDeleteStreamDelegate(
1380 read_buffer.get(), kReadBufferSize, 1380 read_buffer.get(), kReadBufferSize,
1381 CancelOrDeleteStreamDelegate::Phase::ON_DATA_READ, GetParam())); 1381 CancelOrDeleteStreamDelegate::Phase::ON_DATA_READ, GetParam()));
1382 delegate->SetRunUntilCompletion(true); 1382 delegate->SetRunUntilCompletion(true);
1383 delegate->Start(std::move(request_info), http_session_.get()); 1383 delegate->Start(std::move(request_info), http_session_.get());
1384 // Makes sure delegate does not get called. 1384 // Makes sure delegate does not get called.
1385 base::RunLoop().RunUntilIdle(); 1385 base::RunLoop().RunUntilIdle();
1386 const SpdyHeaderBlock response_headers = delegate->response_headers(); 1386 const SpdyHeaderBlock& response_headers = delegate->response_headers();
1387 EXPECT_EQ("200", response_headers.find(":status")->second); 1387 EXPECT_EQ("200", response_headers.find(":status")->second);
1388 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 1388 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
1389 EXPECT_EQ(kUploadDataSize * 1, 1389 EXPECT_EQ(kUploadDataSize * 1,
1390 static_cast<int>(delegate->data_received().size())); 1390 static_cast<int>(delegate->data_received().size()));
1391 EXPECT_EQ(0, delegate->on_data_sent_count()); 1391 EXPECT_EQ(0, delegate->on_data_sent_count());
1392 1392
1393 // If stream is destroyed, do not call into stream. 1393 // If stream is destroyed, do not call into stream.
1394 if (!GetParam()) 1394 if (!GetParam())
1395 return; 1395 return;
1396 EXPECT_EQ(0, delegate->GetTotalSentBytes()); 1396 EXPECT_EQ(0, delegate->GetTotalSentBytes());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1441 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1441 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1442 std::unique_ptr<CancelOrDeleteStreamDelegate> delegate( 1442 std::unique_ptr<CancelOrDeleteStreamDelegate> delegate(
1443 new CancelOrDeleteStreamDelegate( 1443 new CancelOrDeleteStreamDelegate(
1444 read_buffer.get(), kReadBufferSize, 1444 read_buffer.get(), kReadBufferSize,
1445 CancelOrDeleteStreamDelegate::Phase::ON_TRAILERS_RECEIVED, 1445 CancelOrDeleteStreamDelegate::Phase::ON_TRAILERS_RECEIVED,
1446 GetParam())); 1446 GetParam()));
1447 delegate->SetRunUntilCompletion(true); 1447 delegate->SetRunUntilCompletion(true);
1448 delegate->Start(std::move(request_info), http_session_.get()); 1448 delegate->Start(std::move(request_info), http_session_.get());
1449 // Makes sure delegate does not get called. 1449 // Makes sure delegate does not get called.
1450 base::RunLoop().RunUntilIdle(); 1450 base::RunLoop().RunUntilIdle();
1451 const SpdyHeaderBlock response_headers = delegate->response_headers(); 1451 const SpdyHeaderBlock& response_headers = delegate->response_headers();
1452 EXPECT_EQ("200", response_headers.find(":status")->second); 1452 EXPECT_EQ("200", response_headers.find(":status")->second);
1453 EXPECT_EQ("header-value", response_headers.find("header-name")->second); 1453 EXPECT_EQ("header-value", response_headers.find("header-name")->second);
1454 EXPECT_EQ("bar", delegate->trailers().find("foo")->second); 1454 EXPECT_EQ("bar", delegate->trailers().find("foo")->second);
1455 EXPECT_EQ(0, delegate->on_data_sent_count()); 1455 EXPECT_EQ(0, delegate->on_data_sent_count());
1456 // OnDataRead may or may not have been fired before the stream is 1456 // OnDataRead may or may not have been fired before the stream is
1457 // canceled/deleted. 1457 // canceled/deleted.
1458 1458
1459 // If stream is destroyed, do not call into stream. 1459 // If stream is destroyed, do not call into stream.
1460 if (!GetParam()) 1460 if (!GetParam())
1461 return; 1461 return;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1558 request_info->priority = LOWEST; 1558 request_info->priority = LOWEST;
1559 request_info->end_stream_on_headers = true; 1559 request_info->end_stream_on_headers = true;
1560 1560
1561 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 1561 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
1562 MockTimer* timer = new MockTimer(); 1562 MockTimer* timer = new MockTimer();
1563 std::unique_ptr<TestDelegateBase> delegate(new TestDelegateBase( 1563 std::unique_ptr<TestDelegateBase> delegate(new TestDelegateBase(
1564 read_buffer.get(), kReadBufferSize, base::WrapUnique(timer))); 1564 read_buffer.get(), kReadBufferSize, base::WrapUnique(timer)));
1565 delegate->SetRunUntilCompletion(true); 1565 delegate->SetRunUntilCompletion(true);
1566 delegate->Start(std::move(request_info), http_session_.get()); 1566 delegate->Start(std::move(request_info), http_session_.get());
1567 1567
1568 const SpdyHeaderBlock response_headers = delegate->response_headers(); 1568 const SpdyHeaderBlock& response_headers = delegate->response_headers();
1569 EXPECT_EQ("200", response_headers.find(":status")->second); 1569 EXPECT_EQ("200", response_headers.find(":status")->second);
1570 EXPECT_EQ(alt_svc_header_value, response_headers.find("alt-svc")->second); 1570 EXPECT_EQ(alt_svc_header_value, response_headers.find("alt-svc")->second);
1571 EXPECT_EQ(0, delegate->on_data_sent_count()); 1571 EXPECT_EQ(0, delegate->on_data_sent_count());
1572 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol()); 1572 EXPECT_EQ(kProtoHTTP2, delegate->GetProtocol());
1573 EXPECT_EQ(kUploadData, delegate->data_received()); 1573 EXPECT_EQ(kUploadData, delegate->data_received());
1574 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), 1574 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)),
1575 delegate->GetTotalSentBytes()); 1575 delegate->GetTotalSentBytes());
1576 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1576 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1577 delegate->GetTotalReceivedBytes()); 1577 delegate->GetTotalReceivedBytes());
1578 1578
1579 AlternativeServiceVector alternative_service_vector = 1579 AlternativeServiceVector alternative_service_vector =
1580 http_session_->http_server_properties()->GetAlternativeServices(server); 1580 http_session_->http_server_properties()->GetAlternativeServices(server);
1581 ASSERT_EQ(1u, alternative_service_vector.size()); 1581 ASSERT_EQ(1u, alternative_service_vector.size());
1582 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoQUIC1SPDY3), 1582 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoQUIC1SPDY3),
1583 alternative_service_vector[0].protocol); 1583 alternative_service_vector[0].protocol);
1584 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); 1584 EXPECT_EQ("www.example.org", alternative_service_vector[0].host);
1585 EXPECT_EQ(443, alternative_service_vector[0].port); 1585 EXPECT_EQ(443, alternative_service_vector[0].port);
1586 } 1586 }
1587 1587
1588 } // namespace net 1588 } // namespace net
OLDNEW
« no previous file with comments | « components/cronet/ios/test/quic_test_server.cc ('k') | net/http/http_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698