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

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

Issue 2675593002: Spdy{RstStream,GoAway}Status -> SpdyErrorCode. (Closed)
Patch Set: Merged master, which includes 145087791. Created 3 years, 10 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 | « no previous file | net/http/http_network_transaction_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 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 <string>
8 #include <utility> 9 #include <utility>
10 #include <vector>
9 11
10 #include "base/macros.h" 12 #include "base/macros.h"
11 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
12 #include "base/run_loop.h" 14 #include "base/run_loop.h"
13 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/string_piece.h" 16 #include "base/strings/string_piece.h"
15 #include "base/time/time.h" 17 #include "base/time/time.h"
16 #include "base/timer/mock_timer.h" 18 #include "base/timer/mock_timer.h"
17 #include "net/base/load_timing_info.h" 19 #include "net/base/load_timing_info.h"
18 #include "net/base/load_timing_info_test_util.h" 20 #include "net/base/load_timing_info_test_util.h"
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1207 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1206 delegate->GetTotalReceivedBytes()); 1208 delegate->GetTotalReceivedBytes());
1207 } 1209 }
1208 1210
1209 TEST_F(BidirectionalStreamTest, DeleteStreamAfterSendData) { 1211 TEST_F(BidirectionalStreamTest, DeleteStreamAfterSendData) {
1210 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 1212 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
1211 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); 1213 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0));
1212 SpdySerializedFrame data_frame(spdy_util_.ConstructSpdyDataFrame( 1214 SpdySerializedFrame data_frame(spdy_util_.ConstructSpdyDataFrame(
1213 1, kBodyData, kBodyDataSize, /*fin=*/false)); 1215 1, kBodyData, kBodyDataSize, /*fin=*/false));
1214 SpdySerializedFrame rst( 1216 SpdySerializedFrame rst(
1215 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1217 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1216 1218
1217 MockWrite writes[] = { 1219 MockWrite writes[] = {
1218 CreateMockWrite(req, 0), CreateMockWrite(data_frame, 3), 1220 CreateMockWrite(req, 0), CreateMockWrite(data_frame, 3),
1219 CreateMockWrite(rst, 5), 1221 CreateMockWrite(rst, 5),
1220 }; 1222 };
1221 1223
1222 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 1224 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1223 MockRead reads[] = { 1225 MockRead reads[] = {
1224 CreateMockRead(resp, 1), 1226 CreateMockRead(resp, 1),
1225 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause. 1227 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a pause.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1), 1267 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1),
1266 delegate->GetTotalSentBytes()); 1268 delegate->GetTotalSentBytes());
1267 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1269 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1268 delegate->GetTotalReceivedBytes()); 1270 delegate->GetTotalReceivedBytes());
1269 } 1271 }
1270 1272
1271 TEST_F(BidirectionalStreamTest, DeleteStreamDuringReadData) { 1273 TEST_F(BidirectionalStreamTest, DeleteStreamDuringReadData) {
1272 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 1274 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
1273 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0)); 1275 kDefaultUrl, 1, kBodyDataSize * 3, LOWEST, nullptr, 0));
1274 SpdySerializedFrame rst( 1276 SpdySerializedFrame rst(
1275 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1277 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1276 1278
1277 MockWrite writes[] = { 1279 MockWrite writes[] = {
1278 CreateMockWrite(req, 0), CreateMockWrite(rst, 4), 1280 CreateMockWrite(req, 0), CreateMockWrite(rst, 4),
1279 }; 1281 };
1280 1282
1281 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 1283 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1282 SpdySerializedFrame response_body_frame( 1284 SpdySerializedFrame response_body_frame(
1283 spdy_util_.ConstructSpdyDataFrame(1, false)); 1285 spdy_util_.ConstructSpdyDataFrame(1, false));
1284 1286
1285 MockRead reads[] = { 1287 MockRead reads[] = {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 EXPECT_EQ(CountReadBytes(reads, arraysize(reads) - 2), 1328 EXPECT_EQ(CountReadBytes(reads, arraysize(reads) - 2),
1327 delegate->GetTotalReceivedBytes()); 1329 delegate->GetTotalReceivedBytes());
1328 } 1330 }
1329 1331
1330 // Receiving a header with uppercase ASCII will result in a protocol error, 1332 // Receiving a header with uppercase ASCII will result in a protocol error,
1331 // which should be propagated via Delegate::OnFailed. 1333 // which should be propagated via Delegate::OnFailed.
1332 TEST_F(BidirectionalStreamTest, PropagateProtocolError) { 1334 TEST_F(BidirectionalStreamTest, PropagateProtocolError) {
1333 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 1335 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
1334 kDefaultUrl, 1, kBodyDataSize * 3, LOW, nullptr, 0)); 1336 kDefaultUrl, 1, kBodyDataSize * 3, LOW, nullptr, 0));
1335 SpdySerializedFrame rst( 1337 SpdySerializedFrame rst(
1336 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 1338 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
1337 1339
1338 MockWrite writes[] = { 1340 MockWrite writes[] = {
1339 CreateMockWrite(req, 0), CreateMockWrite(rst, 2), 1341 CreateMockWrite(req, 0), CreateMockWrite(rst, 2),
1340 }; 1342 };
1341 1343
1342 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; 1344 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"};
1343 SpdySerializedFrame resp( 1345 SpdySerializedFrame resp(
1344 spdy_util_.ConstructSpdyGetReply(kExtraHeaders, 1, 1)); 1346 spdy_util_.ConstructSpdyGetReply(kExtraHeaders, 1, 1));
1345 1347
1346 MockRead reads[] = { 1348 MockRead reads[] = {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 entry = entries[index]; 1395 entry = entries[index];
1394 int net_error = OK; 1396 int net_error = OK;
1395 EXPECT_TRUE(entry.params->GetInteger("net_error", &net_error)); 1397 EXPECT_TRUE(entry.params->GetInteger("net_error", &net_error));
1396 EXPECT_THAT(net_error, IsError(ERR_SPDY_PROTOCOL_ERROR)); 1398 EXPECT_THAT(net_error, IsError(ERR_SPDY_PROTOCOL_ERROR));
1397 } 1399 }
1398 1400
1399 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnHeadersReceived) { 1401 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnHeadersReceived) {
1400 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST)); 1402 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST));
1401 1403
1402 SpdySerializedFrame rst( 1404 SpdySerializedFrame rst(
1403 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1405 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1404 MockWrite writes[] = { 1406 MockWrite writes[] = {
1405 CreateMockWrite(req, 0), CreateMockWrite(rst, 2), 1407 CreateMockWrite(req, 0), CreateMockWrite(rst, 2),
1406 }; 1408 };
1407 1409
1408 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 1410 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
1409 SpdySerializedFrame resp( 1411 SpdySerializedFrame resp(
1410 spdy_util_.ConstructSpdyGetReply(kExtraResponseHeaders, 1, 1)); 1412 spdy_util_.ConstructSpdyGetReply(kExtraResponseHeaders, 1, 1));
1411 1413
1412 MockRead reads[] = { 1414 MockRead reads[] = {
1413 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3), 1415 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3),
(...skipping 28 matching lines...) Expand all
1442 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1), 1444 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1),
1443 delegate->GetTotalSentBytes()); 1445 delegate->GetTotalSentBytes());
1444 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1446 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1445 delegate->GetTotalReceivedBytes()); 1447 delegate->GetTotalReceivedBytes());
1446 } 1448 }
1447 1449
1448 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnDataRead) { 1450 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnDataRead) {
1449 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST)); 1451 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST));
1450 1452
1451 SpdySerializedFrame rst( 1453 SpdySerializedFrame rst(
1452 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1454 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1453 MockWrite writes[] = { 1455 MockWrite writes[] = {
1454 CreateMockWrite(req, 0), CreateMockWrite(rst, 3), 1456 CreateMockWrite(req, 0), CreateMockWrite(rst, 3),
1455 }; 1457 };
1456 1458
1457 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 1459 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
1458 SpdySerializedFrame resp( 1460 SpdySerializedFrame resp(
1459 spdy_util_.ConstructSpdyGetReply(kExtraResponseHeaders, 1, 1)); 1461 spdy_util_.ConstructSpdyGetReply(kExtraResponseHeaders, 1, 1));
1460 1462
1461 SpdySerializedFrame response_body_frame( 1463 SpdySerializedFrame response_body_frame(
1462 spdy_util_.ConstructSpdyDataFrame(1, false)); 1464 spdy_util_.ConstructSpdyDataFrame(1, false));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1495 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1), 1497 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1),
1496 delegate->GetTotalSentBytes()); 1498 delegate->GetTotalSentBytes());
1497 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1499 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1498 delegate->GetTotalReceivedBytes()); 1500 delegate->GetTotalReceivedBytes());
1499 } 1501 }
1500 1502
1501 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnTrailersReceived) { 1503 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnTrailersReceived) {
1502 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST)); 1504 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST));
1503 1505
1504 SpdySerializedFrame rst( 1506 SpdySerializedFrame rst(
1505 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1507 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1506 MockWrite writes[] = { 1508 MockWrite writes[] = {
1507 CreateMockWrite(req, 0), CreateMockWrite(rst, 4), 1509 CreateMockWrite(req, 0), CreateMockWrite(rst, 4),
1508 }; 1510 };
1509 1511
1510 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"}; 1512 const char* const kExtraResponseHeaders[] = {"header-name", "header-value"};
1511 SpdySerializedFrame resp( 1513 SpdySerializedFrame resp(
1512 spdy_util_.ConstructSpdyGetReply(kExtraResponseHeaders, 1, 1)); 1514 spdy_util_.ConstructSpdyGetReply(kExtraResponseHeaders, 1, 1));
1513 1515
1514 SpdySerializedFrame response_body_frame( 1516 SpdySerializedFrame response_body_frame(
1515 spdy_util_.ConstructSpdyDataFrame(1, false)); 1517 spdy_util_.ConstructSpdyDataFrame(1, false));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1), 1555 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes) - 1),
1554 delegate->GetTotalSentBytes()); 1556 delegate->GetTotalSentBytes());
1555 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), 1557 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)),
1556 delegate->GetTotalReceivedBytes()); 1558 delegate->GetTotalReceivedBytes());
1557 } 1559 }
1558 1560
1559 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnFailed) { 1561 TEST_F(BidirectionalStreamTest, DeleteStreamDuringOnFailed) {
1560 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST)); 1562 SpdySerializedFrame req(spdy_util_.ConstructSpdyGet(kDefaultUrl, 1, LOWEST));
1561 1563
1562 SpdySerializedFrame rst( 1564 SpdySerializedFrame rst(
1563 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 1565 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
1564 1566
1565 MockWrite writes[] = { 1567 MockWrite writes[] = {
1566 CreateMockWrite(req, 0), CreateMockWrite(rst, 2), 1568 CreateMockWrite(req, 0), CreateMockWrite(rst, 2),
1567 }; 1569 };
1568 1570
1569 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"}; 1571 const char* const kExtraHeaders[] = {"X-UpperCase", "yes"};
1570 SpdySerializedFrame resp( 1572 SpdySerializedFrame resp(
1571 spdy_util_.ConstructSpdyGetReply(kExtraHeaders, 1, 1)); 1573 spdy_util_.ConstructSpdyGetReply(kExtraHeaders, 1, 1));
1572 1574
1573 MockRead reads[] = { 1575 MockRead reads[] = {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1655 AlternativeServiceVector alternative_service_vector = 1657 AlternativeServiceVector alternative_service_vector =
1656 http_session_->http_server_properties()->GetAlternativeServices( 1658 http_session_->http_server_properties()->GetAlternativeServices(
1657 url::SchemeHostPort(default_url_)); 1659 url::SchemeHostPort(default_url_));
1658 ASSERT_EQ(1u, alternative_service_vector.size()); 1660 ASSERT_EQ(1u, alternative_service_vector.size());
1659 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol); 1661 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol);
1660 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); 1662 EXPECT_EQ("www.example.org", alternative_service_vector[0].host);
1661 EXPECT_EQ(443, alternative_service_vector[0].port); 1663 EXPECT_EQ(443, alternative_service_vector[0].port);
1662 } 1664 }
1663 1665
1664 } // namespace net 1666 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/http/http_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698