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

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

Issue 2596703002: http2: Update priorities of pushed streams (Closed)
Patch Set: Created 4 years 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 (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 "net/spdy/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1280 EXPECT_THAT(callback2.WaitForResult(), IsOk()); 1280 EXPECT_THAT(callback2.WaitForResult(), IsOk());
1281 } 1281 }
1282 1282
1283 TEST_F(SpdySessionTest, CancelPushAfterSessionGoesAway) { 1283 TEST_F(SpdySessionTest, CancelPushAfterSessionGoesAway) {
1284 base::HistogramTester histogram_tester; 1284 base::HistogramTester histogram_tester;
1285 session_deps_.host_resolver->set_synchronous_mode(true); 1285 session_deps_.host_resolver->set_synchronous_mode(true);
1286 session_deps_.time_func = TheNearFuture; 1286 session_deps_.time_func = TheNearFuture;
1287 1287
1288 SpdySerializedFrame req( 1288 SpdySerializedFrame req(
1289 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); 1289 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true));
1290 SpdySerializedFrame rst( 1290 SpdySerializedFrame priority_a(
1291 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
1292 SpdySerializedFrame priority_b(
1293 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
1294 SpdySerializedFrame rst_a(
1291 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 1295 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
1292 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; 1296 MockWrite writes[] = {
1297 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
1298 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7),
1299 };
1293 1300
1294 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 1301 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
1295 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 1302 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
1296 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); 1303 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false));
1297 // In ascii "0" < "a". We use it to verify that we properly handle std::map 1304 // In ascii "0" < "a". We use it to verify that we properly handle std::map
1298 // iterators inside. See http://crbug.com/443490 1305 // iterators inside. See http://crbug.com/443490
1299 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush( 1306 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush(
1300 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); 1307 nullptr, 0, 4, 1, "https://www.example.org/0.dat"));
1301 MockRead reads[] = { 1308 MockRead reads[] = {
1302 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 2), 1309 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 3),
1303 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), 1310 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(push_b, 5),
1304 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7) // EOF 1311 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9) // EOF
1305 }; 1312 };
1306 1313
1307 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1314 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1308 session_deps_.socket_factory->AddSocketDataProvider(&data); 1315 session_deps_.socket_factory->AddSocketDataProvider(&data);
1309 1316
1310 AddSSLSocketData(); 1317 AddSSLSocketData();
1311 1318
1312 CreateNetworkSession(); 1319 CreateNetworkSession();
1313 CreateSecureSpdySession(); 1320 CreateSecureSpdySession();
1314 session_->set_push_delegate(&test_push_delegate_); 1321 session_->set_push_delegate(&test_push_delegate_);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1366 6, 1); 1373 6, 1);
1367 } 1374 }
1368 1375
1369 TEST_F(SpdySessionTest, CancelPushAfterExpired) { 1376 TEST_F(SpdySessionTest, CancelPushAfterExpired) {
1370 base::HistogramTester histogram_tester; 1377 base::HistogramTester histogram_tester;
1371 session_deps_.host_resolver->set_synchronous_mode(true); 1378 session_deps_.host_resolver->set_synchronous_mode(true);
1372 session_deps_.time_func = TheNearFuture; 1379 session_deps_.time_func = TheNearFuture;
1373 1380
1374 SpdySerializedFrame req( 1381 SpdySerializedFrame req(
1375 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); 1382 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true));
1376 SpdySerializedFrame rst( 1383 SpdySerializedFrame priority_a(
1384 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
1385 SpdySerializedFrame priority_b(
1386 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
1387 SpdySerializedFrame rst_a(
1377 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 1388 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
1378 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; 1389 MockWrite writes[] = {
1390 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
1391 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7),
1392 };
1379 1393
1380 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 1394 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
1381 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 1395 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
1382 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); 1396 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false));
1383 // In ascii "0" < "a". We use it to verify that we properly handle std::map 1397 // In ascii "0" < "a". We use it to verify that we properly handle std::map
1384 // iterators inside. See http://crbug.com/443490 1398 // iterators inside. See http://crbug.com/443490
1385 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush( 1399 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush(
1386 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); 1400 nullptr, 0, 4, 1, "https://www.example.org/0.dat"));
1387 MockRead reads[] = { 1401 MockRead reads[] = {
1388 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 2), 1402 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 3),
1389 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), 1403 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(push_b, 5),
1390 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7) // EOF 1404 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9) // EOF
1391 }; 1405 };
1392 1406
1393 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1407 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1394 session_deps_.socket_factory->AddSocketDataProvider(&data); 1408 session_deps_.socket_factory->AddSocketDataProvider(&data);
1395 1409
1396 AddSSLSocketData(); 1410 AddSSLSocketData();
1397 1411
1398 CreateNetworkSession(); 1412 CreateNetworkSession();
1399 CreateSecureSpdySession(); 1413 CreateSecureSpdySession();
1400 session_->set_push_delegate(&test_push_delegate_); 1414 session_->set_push_delegate(&test_push_delegate_);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 6, 1); 1467 6, 1);
1454 } 1468 }
1455 1469
1456 TEST_F(SpdySessionTest, CancelPushBeforeClaimed) { 1470 TEST_F(SpdySessionTest, CancelPushBeforeClaimed) {
1457 base::HistogramTester histogram_tester; 1471 base::HistogramTester histogram_tester;
1458 session_deps_.host_resolver->set_synchronous_mode(true); 1472 session_deps_.host_resolver->set_synchronous_mode(true);
1459 session_deps_.time_func = TheNearFuture; 1473 session_deps_.time_func = TheNearFuture;
1460 1474
1461 SpdySerializedFrame req( 1475 SpdySerializedFrame req(
1462 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); 1476 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true));
1463 SpdySerializedFrame rst( 1477 SpdySerializedFrame priority_a(
1478 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
1479 SpdySerializedFrame priority_b(
1480 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
1481 SpdySerializedFrame rst_a(
1464 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 1482 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
1465 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; 1483 MockWrite writes[] = {
1484 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
1485 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7),
1486 };
1466 1487
1467 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 1488 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
1468 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 1489 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
1469 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); 1490 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false));
1470 // In ascii "0" < "a". We use it to verify that we properly handle std::map 1491 // In ascii "0" < "a". We use it to verify that we properly handle std::map
1471 // iterators inside. See http://crbug.com/443490 1492 // iterators inside. See http://crbug.com/443490
1472 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush( 1493 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush(
1473 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); 1494 nullptr, 0, 4, 1, "https://www.example.org/0.dat"));
1474 MockRead reads[] = { 1495 MockRead reads[] = {
1475 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 2), 1496 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 3),
1476 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), 1497 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(push_b, 5),
1477 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7) // EOF 1498 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9) // EOF
1478 }; 1499 };
1479 1500
1480 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1501 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1481 session_deps_.socket_factory->AddSocketDataProvider(&data); 1502 session_deps_.socket_factory->AddSocketDataProvider(&data);
1482 1503
1483 AddSSLSocketData(); 1504 AddSSLSocketData();
1484 1505
1485 CreateNetworkSession(); 1506 CreateNetworkSession();
1486 CreateSecureSpdySession(); 1507 CreateSecureSpdySession();
1487 session_->set_push_delegate(&test_push_delegate_); 1508 session_->set_push_delegate(&test_push_delegate_);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1538 6, 1); 1559 6, 1);
1539 } 1560 }
1540 1561
1541 TEST_F(SpdySessionTest, DeleteExpiredPushStreams) { 1562 TEST_F(SpdySessionTest, DeleteExpiredPushStreams) {
1542 base::HistogramTester histogram_tester; 1563 base::HistogramTester histogram_tester;
1543 session_deps_.host_resolver->set_synchronous_mode(true); 1564 session_deps_.host_resolver->set_synchronous_mode(true);
1544 session_deps_.time_func = TheNearFuture; 1565 session_deps_.time_func = TheNearFuture;
1545 1566
1546 SpdySerializedFrame req( 1567 SpdySerializedFrame req(
1547 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); 1568 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true));
1548 SpdySerializedFrame rst( 1569 SpdySerializedFrame priority_a(
1570 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
1571 SpdySerializedFrame priority_b(
1572 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
1573 SpdySerializedFrame rst_a(
1549 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 1574 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
1550 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; 1575 MockWrite writes[] = {
1576 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
1577 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7),
1578 };
1551 1579
1552 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 1580 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
1553 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 1581 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
1554 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); 1582 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false));
1555 // In ascii "0" < "a". We use it to verify that we properly handle std::map 1583 // In ascii "0" < "a". We use it to verify that we properly handle std::map
1556 // iterators inside. See http://crbug.com/443490 1584 // iterators inside. See http://crbug.com/443490
1557 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush( 1585 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush(
1558 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); 1586 nullptr, 0, 4, 1, "https://www.example.org/0.dat"));
1559 MockRead reads[] = { 1587 MockRead reads[] = {
1560 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 2), 1588 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 3),
1561 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), 1589 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(push_b, 5),
1562 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7) // EOF 1590 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9) // EOF
1563 }; 1591 };
1564 1592
1565 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1593 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1566 session_deps_.socket_factory->AddSocketDataProvider(&data); 1594 session_deps_.socket_factory->AddSocketDataProvider(&data);
1567 1595
1568 AddSSLSocketData(); 1596 AddSSLSocketData();
1569 1597
1570 CreateNetworkSession(); 1598 CreateNetworkSession();
1571 CreateSecureSpdySession(); 1599 CreateSecureSpdySession();
1572 1600
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 6, 1); 1645 6, 1);
1618 } 1646 }
1619 1647
1620 TEST_F(SpdySessionTest, MetricsCollectionOnPushStreams) { 1648 TEST_F(SpdySessionTest, MetricsCollectionOnPushStreams) {
1621 base::HistogramTester histogram_tester; 1649 base::HistogramTester histogram_tester;
1622 session_deps_.host_resolver->set_synchronous_mode(true); 1650 session_deps_.host_resolver->set_synchronous_mode(true);
1623 session_deps_.time_func = TheNearFuture; 1651 session_deps_.time_func = TheNearFuture;
1624 1652
1625 SpdySerializedFrame req( 1653 SpdySerializedFrame req(
1626 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); 1654 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true));
1627 SpdySerializedFrame rst( 1655 SpdySerializedFrame priority_a(
1656 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
1657 SpdySerializedFrame priority_b(
1658 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
1659 SpdySerializedFrame priority_c(
1660 spdy_util_.ConstructSpdyPriority(6, 4, IDLE, true));
1661 SpdySerializedFrame rst_a(
1628 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 1662 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
1629 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; 1663 MockWrite writes[] = {
1664 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
1665 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7),
1666 CreateMockWrite(priority_c, 10),
1667 };
1630 1668
1631 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 1669 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
1632 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 1670 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
1633 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); 1671 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false));
1634 // In ascii "0" < "a". We use it to verify that we properly handle std::map 1672 // In ascii "0" < "a". We use it to verify that we properly handle std::map
1635 // iterators inside. See http://crbug.com/443490 1673 // iterators inside. See http://crbug.com/443490
1636 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush( 1674 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush(
1637 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); 1675 nullptr, 0, 4, 1, "https://www.example.org/0.dat"));
1638 SpdySerializedFrame push_c(spdy_util_.ConstructSpdyPush( 1676 SpdySerializedFrame push_c(spdy_util_.ConstructSpdyPush(
1639 nullptr, 0, 6, 1, "https://www.example.org/1.dat")); 1677 nullptr, 0, 6, 1, "https://www.example.org/1.dat"));
1640 SpdySerializedFrame push_c_body(spdy_util_.ConstructSpdyDataFrame(6, false)); 1678 SpdySerializedFrame push_c_body(spdy_util_.ConstructSpdyDataFrame(6, false));
1641 1679
1642 MockRead reads[] = { 1680 MockRead reads[] = {
1643 CreateMockRead(push_a, 1), 1681 CreateMockRead(push_a, 1),
1644 CreateMockRead(push_a_body, 2), 1682 CreateMockRead(push_a_body, 3),
1645 MockRead(ASYNC, ERR_IO_PENDING, 3), 1683 MockRead(ASYNC, ERR_IO_PENDING, 4),
1646 CreateMockRead(push_b, 4), 1684 CreateMockRead(push_b, 5),
1647 MockRead(ASYNC, ERR_IO_PENDING, 6), 1685 MockRead(ASYNC, ERR_IO_PENDING, 8),
1648 CreateMockRead(push_c, 7), 1686 CreateMockRead(push_c, 9),
1649 CreateMockRead(push_c_body, 8), 1687 CreateMockRead(push_c_body, 11),
1650 MockRead(ASYNC, ERR_IO_PENDING, 9), 1688 MockRead(ASYNC, ERR_IO_PENDING, 12),
1651 MockRead(ASYNC, 0, 10) // EOF 1689 MockRead(ASYNC, 0, 13) // EOF
1652 }; 1690 };
1653 1691
1654 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1692 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1655 session_deps_.socket_factory->AddSocketDataProvider(&data); 1693 session_deps_.socket_factory->AddSocketDataProvider(&data);
1656 1694
1657 AddSSLSocketData(); 1695 AddSSLSocketData();
1658 1696
1659 CreateNetworkSession(); 1697 CreateNetworkSession();
1660 CreateSecureSpdySession(); 1698 CreateSecureSpdySession();
1661 1699
(...skipping 3219 matching lines...) Expand 10 before | Expand all | Expand 10 after
4881 new_settings[SETTINGS_MAX_CONCURRENT_STREAMS] = 4919 new_settings[SETTINGS_MAX_CONCURRENT_STREAMS] =
4882 SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 2); 4920 SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 2);
4883 SpdySerializedFrame settings_frame( 4921 SpdySerializedFrame settings_frame(
4884 spdy_util_.ConstructSpdySettings(new_settings)); 4922 spdy_util_.ConstructSpdySettings(new_settings));
4885 SpdySerializedFrame pushed(spdy_util_.ConstructSpdyPush( 4923 SpdySerializedFrame pushed(spdy_util_.ConstructSpdyPush(
4886 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 4924 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
4887 MockRead reads[] = { 4925 MockRead reads[] = {
4888 CreateMockRead(settings_frame, 0), 4926 CreateMockRead(settings_frame, 0),
4889 MockRead(ASYNC, ERR_IO_PENDING, 3), 4927 MockRead(ASYNC, ERR_IO_PENDING, 3),
4890 CreateMockRead(pushed, 4), 4928 CreateMockRead(pushed, 4),
4891 MockRead(ASYNC, ERR_IO_PENDING, 5), 4929 MockRead(ASYNC, ERR_IO_PENDING, 6),
4892 MockRead(ASYNC, 0, 6), 4930 MockRead(ASYNC, 0, 7),
4893 }; 4931 };
4894 4932
4895 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); 4933 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck());
4896 SpdySerializedFrame req( 4934 SpdySerializedFrame req(
4897 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 4935 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4936 SpdySerializedFrame priority(
4937 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
4898 MockWrite writes[] = { 4938 MockWrite writes[] = {
4899 CreateMockWrite(settings_ack, 1), CreateMockWrite(req, 2), 4939 CreateMockWrite(settings_ack, 1), CreateMockWrite(req, 2),
4940 CreateMockWrite(priority, 5),
4900 }; 4941 };
4901 4942
4902 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 4943 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
4903 session_deps_.socket_factory->AddSocketDataProvider(&data); 4944 session_deps_.socket_factory->AddSocketDataProvider(&data);
4904 4945
4905 AddSSLSocketData(); 4946 AddSSLSocketData();
4906 4947
4907 CreateNetworkSession(); 4948 CreateNetworkSession();
4908 CreateSecureSpdySession(); 4949 CreateSecureSpdySession();
4909 4950
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
4961 EXPECT_FALSE(session_); 5002 EXPECT_FALSE(session_);
4962 } 5003 }
4963 5004
4964 TEST_F(SpdySessionTest, RejectPushedStreamExceedingConcurrencyLimit) { 5005 TEST_F(SpdySessionTest, RejectPushedStreamExceedingConcurrencyLimit) {
4965 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 5006 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
4966 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 5007 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
4967 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush( 5008 SpdySerializedFrame push_b(spdy_util_.ConstructSpdyPush(
4968 nullptr, 0, 4, 1, "https://www.example.org/b.dat")); 5009 nullptr, 0, 4, 1, "https://www.example.org/b.dat"));
4969 MockRead reads[] = { 5010 MockRead reads[] = {
4970 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_a, 2), 5011 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_a, 2),
4971 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), 5012 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(push_b, 5),
4972 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7), 5013 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9),
4973 }; 5014 };
4974 5015
4975 SpdySerializedFrame req( 5016 SpdySerializedFrame req(
4976 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 5017 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4977 SpdySerializedFrame rst( 5018 SpdySerializedFrame priority_a(
5019 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
5020 SpdySerializedFrame priority_b(
5021 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
5022 SpdySerializedFrame rst_b(
4978 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); 5023 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM));
4979 MockWrite writes[] = { 5024 MockWrite writes[] = {
4980 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), 5025 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 3),
5026 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_b, 7),
4981 }; 5027 };
4982 5028
4983 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 5029 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
4984 session_deps_.socket_factory->AddSocketDataProvider(&data); 5030 session_deps_.socket_factory->AddSocketDataProvider(&data);
4985 5031
4986 AddSSLSocketData(); 5032 AddSSLSocketData();
4987 5033
4988 CreateNetworkSession(); 5034 CreateNetworkSession();
4989 CreateSecureSpdySession(); 5035 CreateSecureSpdySession();
4990 session_->set_max_concurrent_pushed_streams(1); 5036 session_->set_max_concurrent_pushed_streams(1);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
5047 // cross_origin_push contains HTTP resource for an origin different from the 5093 // cross_origin_push contains HTTP resource for an origin different from the
5048 // origin of kDefaultUrl, and should be accepted. 5094 // origin of kDefaultUrl, and should be accepted.
5049 SpdySerializedFrame cross_origin_push(spdy_util_.ConstructSpdyPush( 5095 SpdySerializedFrame cross_origin_push(spdy_util_.ConstructSpdyPush(
5050 nullptr, 0, 2, 1, kHttpURLFromAnotherOrigin)); 5096 nullptr, 0, 2, 1, kHttpURLFromAnotherOrigin));
5051 // cross_origin_https_push contains HTTPS resource, and should be refused. 5097 // cross_origin_https_push contains HTTPS resource, and should be refused.
5052 SpdySerializedFrame cross_origin_https_push(spdy_util_.ConstructSpdyPush( 5098 SpdySerializedFrame cross_origin_https_push(spdy_util_.ConstructSpdyPush(
5053 nullptr, 0, 4, 1, kHttpsURLFromAnotherOrigin)); 5099 nullptr, 0, 4, 1, kHttpsURLFromAnotherOrigin));
5054 MockRead reads[] = { 5100 MockRead reads[] = {
5055 MockRead(ASYNC, ERR_IO_PENDING, 1), 5101 MockRead(ASYNC, ERR_IO_PENDING, 1),
5056 CreateMockRead(cross_origin_push, 2), 5102 CreateMockRead(cross_origin_push, 2),
5057 MockRead(ASYNC, ERR_IO_PENDING, 3), 5103 MockRead(ASYNC, ERR_IO_PENDING, 4),
5058 CreateMockRead(cross_origin_https_push, 4), 5104 CreateMockRead(cross_origin_https_push, 5),
5059 MockRead(ASYNC, ERR_IO_PENDING, 6), 5105 MockRead(ASYNC, ERR_IO_PENDING, 7),
5060 MockRead(ASYNC, 0, 7), 5106 MockRead(ASYNC, 0, 8),
5061 }; 5107 };
5062 5108
5063 SpdySerializedFrame req( 5109 SpdySerializedFrame req(
5064 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 5110 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
5065 SpdySerializedFrame rst( 5111 SpdySerializedFrame priority_http(
5112 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
5113 SpdySerializedFrame rst_https(
5066 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); 5114 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM));
5067 MockWrite writes[] = { 5115 MockWrite writes[] = {
5068 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), 5116 CreateMockWrite(req, 0), CreateMockWrite(priority_http, 3),
5117 CreateMockWrite(rst_https, 6),
5069 }; 5118 };
5070 5119
5071 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 5120 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5072 session_deps_.socket_factory->AddSocketDataProvider(&data); 5121 session_deps_.socket_factory->AddSocketDataProvider(&data);
5073 5122
5074 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); 5123 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate());
5075 proxy_delegate->set_trusted_spdy_proxy( 5124 proxy_delegate->set_trusted_spdy_proxy(
5076 net::ProxyServer(net::ProxyServer::SCHEME_HTTPS, 5125 net::ProxyServer(net::ProxyServer::SCHEME_HTTPS,
5077 HostPortPair(GURL(kDefaultUrl).host(), 443))); 5126 HostPortPair(GURL(kDefaultUrl).host(), 443)));
5078 session_deps_.proxy_delegate = std::move(proxy_delegate); 5127 session_deps_.proxy_delegate = std::move(proxy_delegate);
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
5196 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( 5245 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush(
5197 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); 5246 nullptr, 0, 2, 1, "https://www.example.org/a.dat"));
5198 SpdyHeaderBlock push_headers; 5247 SpdyHeaderBlock push_headers;
5199 spdy_util_.AddUrlToHeaderBlock("https://www.example.org/b.dat", 5248 spdy_util_.AddUrlToHeaderBlock("https://www.example.org/b.dat",
5200 &push_headers); 5249 &push_headers);
5201 SpdySerializedFrame push_b( 5250 SpdySerializedFrame push_b(
5202 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 4, 1)); 5251 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 4, 1));
5203 SpdySerializedFrame headers_b( 5252 SpdySerializedFrame headers_b(
5204 spdy_util_.ConstructSpdyPushHeaders(4, nullptr, 0)); 5253 spdy_util_.ConstructSpdyPushHeaders(4, nullptr, 0));
5205 MockRead reads[] = { 5254 MockRead reads[] = {
5206 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_a, 2), 5255 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_a, 2),
5207 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), 5256 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(push_b, 5),
5208 MockRead(ASYNC, ERR_IO_PENDING, 5), CreateMockRead(headers_b, 6), 5257 MockRead(ASYNC, ERR_IO_PENDING, 7), CreateMockRead(headers_b, 8),
5209 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9), 5258 MockRead(ASYNC, ERR_IO_PENDING, 10), MockRead(ASYNC, 0, 11),
5210 }; 5259 };
5211 5260
5212 SpdySerializedFrame req( 5261 SpdySerializedFrame req(
5213 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 5262 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
5214 SpdySerializedFrame rst( 5263 SpdySerializedFrame priority_a(
5264 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
5265 SpdySerializedFrame priority_b(
5266 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true));
5267 SpdySerializedFrame rst_b(
5215 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); 5268 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM));
5216 MockWrite writes[] = { 5269 MockWrite writes[] = {
5217 CreateMockWrite(req, 0), CreateMockWrite(rst, 7), 5270 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 3),
5271 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_b, 9),
5218 }; 5272 };
5219 5273
5220 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 5274 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5221 session_deps_.socket_factory->AddSocketDataProvider(&data); 5275 session_deps_.socket_factory->AddSocketDataProvider(&data);
5222 5276
5223 AddSSLSocketData(); 5277 AddSSLSocketData();
5224 5278
5225 CreateNetworkSession(); 5279 CreateNetworkSession();
5226 CreateSecureSpdySession(); 5280 CreateSecureSpdySession();
5227 session_->set_max_concurrent_pushed_streams(1); 5281 session_->set_max_concurrent_pushed_streams(1);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
5285 TEST_F(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { 5339 TEST_F(SpdySessionTest, CancelReservedStreamOnHeadersReceived) {
5286 const char kPushedUrl[] = "https://www.example.org/a.dat"; 5340 const char kPushedUrl[] = "https://www.example.org/a.dat";
5287 SpdyHeaderBlock push_headers; 5341 SpdyHeaderBlock push_headers;
5288 spdy_util_.AddUrlToHeaderBlock(kPushedUrl, &push_headers); 5342 spdy_util_.AddUrlToHeaderBlock(kPushedUrl, &push_headers);
5289 SpdySerializedFrame push_promise( 5343 SpdySerializedFrame push_promise(
5290 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 2, 1)); 5344 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 2, 1));
5291 SpdySerializedFrame headers_frame( 5345 SpdySerializedFrame headers_frame(
5292 spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0)); 5346 spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0));
5293 MockRead reads[] = { 5347 MockRead reads[] = {
5294 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_promise, 2), 5348 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_promise, 2),
5295 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(headers_frame, 4), 5349 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(headers_frame, 5),
5296 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7), 5350 MockRead(ASYNC, ERR_IO_PENDING, 7), MockRead(ASYNC, 0, 8),
5297 }; 5351 };
5298 5352
5299 SpdySerializedFrame req( 5353 SpdySerializedFrame req(
5300 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 5354 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
5355 SpdySerializedFrame priority(
5356 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
5301 SpdySerializedFrame rst( 5357 SpdySerializedFrame rst(
5302 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); 5358 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL));
5303 MockWrite writes[] = { 5359 MockWrite writes[] = {
5304 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), 5360 CreateMockWrite(req, 0), CreateMockWrite(priority, 3),
5361 CreateMockWrite(rst, 6),
5305 }; 5362 };
5306 5363
5307 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 5364 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5308 session_deps_.socket_factory->AddSocketDataProvider(&data); 5365 session_deps_.socket_factory->AddSocketDataProvider(&data);
5309 5366
5310 AddSSLSocketData(); 5367 AddSSLSocketData();
5311 5368
5312 CreateNetworkSession(); 5369 CreateNetworkSession();
5313 CreateSecureSpdySession(); 5370 CreateSecureSpdySession();
5314 5371
(...skipping 24 matching lines...) Expand all
5339 5396
5340 // Run until pushed stream is created. 5397 // Run until pushed stream is created.
5341 data.Resume(); 5398 data.Resume();
5342 base::RunLoop().RunUntilIdle(); 5399 base::RunLoop().RunUntilIdle();
5343 EXPECT_EQ(2u, session_->num_active_streams()); 5400 EXPECT_EQ(2u, session_->num_active_streams());
5344 EXPECT_EQ(0u, session_->num_created_streams()); 5401 EXPECT_EQ(0u, session_->num_created_streams());
5345 EXPECT_EQ(1u, session_->num_pushed_streams()); 5402 EXPECT_EQ(1u, session_->num_pushed_streams());
5346 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 5403 EXPECT_EQ(0u, session_->num_active_pushed_streams());
5347 5404
5348 base::WeakPtr<SpdyStream> pushed_stream; 5405 base::WeakPtr<SpdyStream> pushed_stream;
5349 int rv = session_->GetPushStream(GURL(kPushedUrl), &pushed_stream, 5406 int rv = session_->GetPushStream(GURL(kPushedUrl), IDLE, &pushed_stream,
5350 NetLogWithSource()); 5407 NetLogWithSource());
5351 ASSERT_THAT(rv, IsOk()); 5408 ASSERT_THAT(rv, IsOk());
5352 ASSERT_TRUE(pushed_stream); 5409 ASSERT_TRUE(pushed_stream);
5353 test::StreamDelegateCloseOnHeaders delegate2(pushed_stream); 5410 test::StreamDelegateCloseOnHeaders delegate2(pushed_stream);
5354 pushed_stream->SetDelegate(&delegate2); 5411 pushed_stream->SetDelegate(&delegate2);
5355 5412
5356 // Receive headers for pushed stream. Delegate will cancel the stream, ensure 5413 // Receive headers for pushed stream. Delegate will cancel the stream, ensure
5357 // that all our counters are in consistent state. 5414 // that all our counters are in consistent state.
5358 data.Resume(); 5415 data.Resume();
5359 base::RunLoop().RunUntilIdle(); 5416 base::RunLoop().RunUntilIdle();
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
5882 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5939 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5883 "spdy_pooling.pem"); 5940 "spdy_pooling.pem");
5884 ssl_info.is_issued_by_known_root = true; 5941 ssl_info.is_issued_by_known_root = true;
5885 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); 5942 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin));
5886 5943
5887 EXPECT_TRUE(SpdySession::CanPool( 5944 EXPECT_TRUE(SpdySession::CanPool(
5888 &tss, ssl_info, "www.example.org", "mail.example.org")); 5945 &tss, ssl_info, "www.example.org", "mail.example.org"));
5889 } 5946 }
5890 5947
5891 } // namespace net 5948 } // namespace net
OLDNEW
« net/spdy/spdy_session.cc ('K') | « net/spdy/spdy_session.cc ('k') | net/spdy/spdy_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698