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

Side by Side Diff: net/tools/quic/quic_dispatcher_test.cc

Issue 2453113002: Fix object-lifetime issues in async GetProof callpaths (Closed)
Patch Set: Updated patchset dependency Created 4 years, 1 month 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/quic/test_tools/mock_crypto_client_stream.cc ('k') | net/tools/quic/stateless_rejector.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 (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/tools/quic/quic_dispatcher.h" 5 #include "net/tools/quic/quic_dispatcher.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <ostream> 8 #include <ostream>
9 #include <string> 9 #include <string>
10 10
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 } 1093 }
1094 return params; 1094 return params;
1095 } 1095 }
1096 1096
1097 // A dispatcher whose stateless rejector will always ACCEPTs CHLO. 1097 // A dispatcher whose stateless rejector will always ACCEPTs CHLO.
1098 class BufferedPacketStoreTest 1098 class BufferedPacketStoreTest
1099 : public QuicDispatcherTest, 1099 : public QuicDispatcherTest,
1100 public ::testing::WithParamInterface<BufferedPacketStoreTestParams> { 1100 public ::testing::WithParamInterface<BufferedPacketStoreTestParams> {
1101 public: 1101 public:
1102 BufferedPacketStoreTest() 1102 BufferedPacketStoreTest()
1103 : QuicDispatcherTest(), client_addr_(Loopback4(), 1234) { 1103 : QuicDispatcherTest(),
1104 client_addr_(Loopback4(), 1234),
1105 proof_(new QuicCryptoProof) {
1104 FLAGS_quic_buffer_packet_till_chlo = true; 1106 FLAGS_quic_buffer_packet_till_chlo = true;
1105 FLAGS_quic_use_cheap_stateless_rejects = 1107 FLAGS_quic_use_cheap_stateless_rejects =
1106 GetParam().support_cheap_stateless_reject; 1108 GetParam().support_cheap_stateless_reject;
1107 FLAGS_enable_quic_stateless_reject_support = 1109 FLAGS_enable_quic_stateless_reject_support =
1108 GetParam().enable_stateless_rejects_via_flag; 1110 GetParam().enable_stateless_rejects_via_flag;
1109 } 1111 }
1110 1112
1111 void SetUp() override { 1113 void SetUp() override {
1112 QuicDispatcherTest::SetUp(); 1114 QuicDispatcherTest::SetUp();
1113 clock_ = QuicDispatcherPeer::GetHelper(dispatcher_.get())->GetClock(); 1115 clock_ = QuicDispatcherPeer::GetHelper(dispatcher_.get())->GetClock();
1114 1116
1115 QuicVersion version = AllSupportedVersions().front(); 1117 QuicVersion version = AllSupportedVersions().front();
1116 CryptoHandshakeMessage chlo = CryptoTestUtils::GenerateDefaultInchoateCHLO( 1118 CryptoHandshakeMessage chlo = CryptoTestUtils::GenerateDefaultInchoateCHLO(
1117 clock_, version, &crypto_config_); 1119 clock_, version, &crypto_config_);
1118 chlo.SetVector(net::kCOPT, net::QuicTagVector{net::kSREJ}); 1120 chlo.SetVector(net::kCOPT, net::QuicTagVector{net::kSREJ});
1119 // Pass an inchoate CHLO. 1121 // Pass an inchoate CHLO.
1120 CryptoTestUtils::GenerateFullCHLO( 1122 CryptoTestUtils::GenerateFullCHLO(
1121 chlo, &crypto_config_, server_ip_, client_addr_, version, clock_, 1123 chlo, &crypto_config_, server_ip_, client_addr_, version, clock_,
1122 &proof_, QuicDispatcherPeer::GetCache(dispatcher_.get()), &full_chlo_); 1124 proof_, QuicDispatcherPeer::GetCache(dispatcher_.get()), &full_chlo_);
1123 } 1125 }
1124 1126
1125 string SerializeFullCHLO() { 1127 string SerializeFullCHLO() {
1126 return full_chlo_.GetSerialized().AsStringPiece().as_string(); 1128 return full_chlo_.GetSerialized().AsStringPiece().as_string();
1127 } 1129 }
1128 1130
1129 protected: 1131 protected:
1130 IPAddress server_ip_; 1132 IPAddress server_ip_;
1131 IPEndPoint client_addr_; 1133 IPEndPoint client_addr_;
1132 QuicCryptoProof proof_; 1134 scoped_refptr<QuicCryptoProof> proof_;
1133 const QuicClock* clock_; 1135 const QuicClock* clock_;
1134 CryptoHandshakeMessage full_chlo_; 1136 CryptoHandshakeMessage full_chlo_;
1135 }; 1137 };
1136 1138
1137 INSTANTIATE_TEST_CASE_P( 1139 INSTANTIATE_TEST_CASE_P(
1138 BufferedPacketStoreTests, 1140 BufferedPacketStoreTests,
1139 BufferedPacketStoreTest, 1141 BufferedPacketStoreTest,
1140 ::testing::ValuesIn(GetBufferedPacketStoreTestParams())); 1142 ::testing::ValuesIn(GetBufferedPacketStoreTestParams()));
1141 1143
1142 TEST_P(BufferedPacketStoreTest, ProcessNonChloPacketsUptoLimitAndProcessChlo) { 1144 TEST_P(BufferedPacketStoreTest, ProcessNonChloPacketsUptoLimitAndProcessChlo) {
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 } 1543 }
1542 1544
1543 // Test which exercises the async GetProof codepaths, especially in the context 1545 // Test which exercises the async GetProof codepaths, especially in the context
1544 // of stateless rejection. 1546 // of stateless rejection.
1545 class AsyncGetProofTest : public QuicDispatcherTest { 1547 class AsyncGetProofTest : public QuicDispatcherTest {
1546 public: 1548 public:
1547 AsyncGetProofTest() 1549 AsyncGetProofTest()
1548 : QuicDispatcherTest( 1550 : QuicDispatcherTest(
1549 std::unique_ptr<FakeProofSource>(new FakeProofSource())), 1551 std::unique_ptr<FakeProofSource>(new FakeProofSource())),
1550 client_addr_(net::test::Loopback4(), 1234), 1552 client_addr_(net::test::Loopback4(), 1234),
1551 crypto_config_peer_(&crypto_config_) { 1553 crypto_config_peer_(&crypto_config_),
1554 proof_(new QuicCryptoProof) {
1552 FLAGS_enable_async_get_proof = true; 1555 FLAGS_enable_async_get_proof = true;
1553 FLAGS_quic_buffer_packet_till_chlo = true; 1556 FLAGS_quic_buffer_packet_till_chlo = true;
1554 FLAGS_enable_quic_stateless_reject_support = true; 1557 FLAGS_enable_quic_stateless_reject_support = true;
1555 FLAGS_quic_use_cheap_stateless_rejects = true; 1558 FLAGS_quic_use_cheap_stateless_rejects = true;
1556 FLAGS_quic_create_session_after_insertion = true; 1559 FLAGS_quic_create_session_after_insertion = true;
1557 } 1560 }
1558 1561
1559 void SetUp() override { 1562 void SetUp() override {
1560 QuicDispatcherTest::SetUp(); 1563 QuicDispatcherTest::SetUp();
1561 1564
1562 clock_ = QuicDispatcherPeer::GetHelper(dispatcher_.get())->GetClock(); 1565 clock_ = QuicDispatcherPeer::GetHelper(dispatcher_.get())->GetClock();
1563 QuicVersion version = AllSupportedVersions().front(); 1566 QuicVersion version = AllSupportedVersions().front();
1564 chlo_ = CryptoTestUtils::GenerateDefaultInchoateCHLO(clock_, version, 1567 chlo_ = CryptoTestUtils::GenerateDefaultInchoateCHLO(clock_, version,
1565 &crypto_config_); 1568 &crypto_config_);
1566 chlo_.SetVector(net::kCOPT, net::QuicTagVector{net::kSREJ}); 1569 chlo_.SetVector(net::kCOPT, net::QuicTagVector{net::kSREJ});
1567 // Pass an inchoate CHLO. 1570 // Pass an inchoate CHLO.
1568 CryptoTestUtils::GenerateFullCHLO( 1571 CryptoTestUtils::GenerateFullCHLO(
1569 chlo_, &crypto_config_, server_ip_, client_addr_, version, clock_, 1572 chlo_, &crypto_config_, server_ip_, client_addr_, version, clock_,
1570 &proof_, QuicDispatcherPeer::GetCache(dispatcher_.get()), &full_chlo_); 1573 proof_, QuicDispatcherPeer::GetCache(dispatcher_.get()), &full_chlo_);
1571 1574
1572 GetFakeProofSource()->Activate(); 1575 GetFakeProofSource()->Activate();
1573 } 1576 }
1574 1577
1575 FakeProofSource* GetFakeProofSource() const { 1578 FakeProofSource* GetFakeProofSource() const {
1576 return static_cast<FakeProofSource*>(crypto_config_peer_.GetProofSource()); 1579 return static_cast<FakeProofSource*>(crypto_config_peer_.GetProofSource());
1577 } 1580 }
1578 1581
1579 string SerializeFullCHLO() { 1582 string SerializeFullCHLO() {
1580 return full_chlo_.GetSerialized().AsStringPiece().as_string(); 1583 return full_chlo_.GetSerialized().AsStringPiece().as_string();
(...skipping 29 matching lines...) Expand all
1610 CHECK(ok); 1613 CHECK(ok);
1611 return session; 1614 return session;
1612 } 1615 }
1613 1616
1614 protected: 1617 protected:
1615 const IPEndPoint client_addr_; 1618 const IPEndPoint client_addr_;
1616 1619
1617 private: 1620 private:
1618 QuicCryptoServerConfigPeer crypto_config_peer_; 1621 QuicCryptoServerConfigPeer crypto_config_peer_;
1619 IPAddress server_ip_; 1622 IPAddress server_ip_;
1620 QuicCryptoProof proof_; 1623 scoped_refptr<QuicCryptoProof> proof_;
1621 const QuicClock* clock_; 1624 const QuicClock* clock_;
1622 CryptoHandshakeMessage chlo_; 1625 CryptoHandshakeMessage chlo_;
1623 CryptoHandshakeMessage full_chlo_; 1626 CryptoHandshakeMessage full_chlo_;
1624 1627
1625 struct SessionInfo { 1628 struct SessionInfo {
1626 TestQuicSpdyServerSession* session; 1629 TestQuicSpdyServerSession* session;
1627 std::unique_ptr<MockQuicCryptoServerStream> crypto_stream; 1630 std::unique_ptr<MockQuicCryptoServerStream> crypto_stream;
1628 }; 1631 };
1629 std::map<QuicConnectionId, SessionInfo> sessions_; 1632 std::map<QuicConnectionId, SessionInfo> sessions_;
1630 }; 1633 };
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
2021 check.Call(2); 2024 check.Call(2);
2022 GetFakeProofSource()->InvokePendingCallback(0); 2025 GetFakeProofSource()->InvokePendingCallback(0);
2023 ASSERT_EQ(GetFakeProofSource()->NumPendingCallbacks(), 0); 2026 ASSERT_EQ(GetFakeProofSource()->NumPendingCallbacks(), 0);
2024 EXPECT_FALSE(store->HasBufferedPackets(conn_id)); 2027 EXPECT_FALSE(store->HasBufferedPackets(conn_id));
2025 EXPECT_FALSE(time_wait_list_manager_->IsConnectionIdInTimeWait(conn_id)); 2028 EXPECT_FALSE(time_wait_list_manager_->IsConnectionIdInTimeWait(conn_id));
2026 } 2029 }
2027 2030
2028 } // namespace 2031 } // namespace
2029 } // namespace test 2032 } // namespace test
2030 } // namespace net 2033 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/test_tools/mock_crypto_client_stream.cc ('k') | net/tools/quic/stateless_rejector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698