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

Unified Diff: net/tools/quic/stateless_rejector_test.cc

Issue 2322233004: Landing Recent QUIC changes until Sun Sep 4 03:41:00 (Closed)
Patch Set: Remove simulation files from the build. Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/tools/quic/stateless_rejector.cc ('k') | net/tools/quic/test_tools/mock_quic_server_session_visitor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/quic/stateless_rejector_test.cc
diff --git a/net/tools/quic/stateless_rejector_test.cc b/net/tools/quic/stateless_rejector_test.cc
index 5ec2f19104c2f0c51e414edeead6da530eaabf83..d773ff53de792afcc835318abfb96f34c301dbe2 100644
--- a/net/tools/quic/stateless_rejector_test.cc
+++ b/net/tools/quic/stateless_rejector_test.cc
@@ -7,6 +7,7 @@
#include <memory>
#include <vector>
+#include "base/memory/ptr_util.h"
#include "base/strings/stringprintf.h"
#include "net/quic/core/crypto/crypto_handshake_message.h"
#include "net/quic/core/crypto/proof_source.h"
@@ -80,15 +81,16 @@ class StatelessRejectorTest : public ::testing::TestWithParam<TestParams> {
config_peer_(&config_),
compressed_certs_cache_(
QuicCompressedCertsCache::kQuicCompressedCertsCacheSize),
- rejector_(GetParam().version,
- AllSupportedVersions(),
- &config_,
- &compressed_certs_cache_,
- &clock_,
- QuicRandom::GetInstance(),
- kDefaultMaxPacketSize,
- IPEndPoint(net::test::Loopback4(), 12345),
- IPEndPoint(net::test::Loopback4(), 443)) {
+ rejector_(base::MakeUnique<StatelessRejector>(
+ GetParam().version,
+ AllSupportedVersions(),
+ &config_,
+ &compressed_certs_cache_,
+ &clock_,
+ QuicRandom::GetInstance(),
+ kDefaultMaxPacketSize,
+ IPEndPoint(net::test::Loopback4(), 12345),
+ IPEndPoint(net::test::Loopback4(), 443))) {
FLAGS_enable_quic_stateless_reject_support =
GetParam().flags == ENABLED || GetParam().flags == CHEAP_DISABLED;
FLAGS_quic_use_cheap_stateless_rejects =
@@ -130,14 +132,26 @@ class StatelessRejectorTest : public ::testing::TestWithParam<TestParams> {
}
protected:
+ class ProcessDoneCallback : public StatelessRejector::ProcessDoneCallback {
+ public:
+ explicit ProcessDoneCallback(StatelessRejectorTest* test) : test_(test) {}
+ void Run(std::unique_ptr<StatelessRejector> rejector) override {
+ test_->rejector_ = std::move(rejector);
+ }
+
+ private:
+ StatelessRejectorTest* test_;
+ };
+
QuicFlagSaver flags_; // Save/restore all QUIC flag values.
+
std::unique_ptr<ProofSource> proof_source_;
MockClock clock_;
QuicCryptoServerConfig config_;
QuicCryptoServerConfigPeer config_peer_;
QuicCompressedCertsCache compressed_certs_cache_;
QuicCryptoServerConfig::ConfigOptions config_options_;
- StatelessRejector rejector_;
+ std::unique_ptr<StatelessRejector> rejector_;
// Values used in CHLO messages
string scid_hex_;
@@ -160,16 +174,21 @@ TEST_P(StatelessRejectorTest, InvalidChlo) {
"COPT", "SREJ",
nullptr);
// clang-format on
- rejector_.OnChlo(GetParam().version, kConnectionId,
- kServerDesignateConnectionId, client_hello);
+ rejector_->OnChlo(GetParam().version, kConnectionId,
+ kServerDesignateConnectionId, client_hello);
if (GetParam().flags != ENABLED || GetParam().version <= QUIC_VERSION_32) {
- EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_.state());
+ EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_->state());
return;
}
- EXPECT_EQ(StatelessRejector::FAILED, rejector_.state());
- EXPECT_EQ(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER, rejector_.error());
+ // The StatelessRejector is undecided - proceed with async processing
+ ASSERT_EQ(StatelessRejector::UNKNOWN, rejector_->state());
+ StatelessRejector::Process(std::move(rejector_),
+ base::MakeUnique<ProcessDoneCallback>(this));
+
+ EXPECT_EQ(StatelessRejector::FAILED, rejector_->state());
+ EXPECT_EQ(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER, rejector_->error());
}
TEST_P(StatelessRejectorTest, ValidChloWithoutSrejSupport) {
@@ -186,9 +205,9 @@ TEST_P(StatelessRejectorTest, ValidChloWithoutSrejSupport) {
nullptr);
// clang-format on
- rejector_.OnChlo(GetParam().version, kConnectionId,
- kServerDesignateConnectionId, client_hello);
- EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_.state());
+ rejector_->OnChlo(GetParam().version, kConnectionId,
+ kServerDesignateConnectionId, client_hello);
+ EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_->state());
}
TEST_P(StatelessRejectorTest, RejectChlo) {
@@ -208,14 +227,20 @@ TEST_P(StatelessRejectorTest, RejectChlo) {
nullptr);
// clang-format on
- rejector_.OnChlo(GetParam().version, kConnectionId,
- kServerDesignateConnectionId, client_hello);
+ rejector_->OnChlo(GetParam().version, kConnectionId,
+ kServerDesignateConnectionId, client_hello);
if (GetParam().flags != ENABLED || GetParam().version <= QUIC_VERSION_32) {
- EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_.state());
+ EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_->state());
return;
}
- ASSERT_EQ(StatelessRejector::REJECTED, rejector_.state());
- const CryptoHandshakeMessage& reply = rejector_.reply();
+
+ // The StatelessRejector is undecided - proceed with async processing
+ ASSERT_EQ(StatelessRejector::UNKNOWN, rejector_->state());
+ StatelessRejector::Process(std::move(rejector_),
+ base::MakeUnique<ProcessDoneCallback>(this));
+
+ ASSERT_EQ(StatelessRejector::REJECTED, rejector_->state());
+ const CryptoHandshakeMessage& reply = rejector_->reply();
EXPECT_EQ(kSREJ, reply.tag());
const uint32_t* reject_reasons;
size_t num_reject_reasons;
@@ -248,13 +273,19 @@ TEST_P(StatelessRejectorTest, AcceptChlo) {
nullptr);
// clang-format on
- rejector_.OnChlo(GetParam().version, kConnectionId,
- kServerDesignateConnectionId, client_hello);
+ rejector_->OnChlo(GetParam().version, kConnectionId,
+ kServerDesignateConnectionId, client_hello);
if (GetParam().flags != ENABLED || GetParam().version <= QUIC_VERSION_32) {
- EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_.state());
+ EXPECT_EQ(StatelessRejector::UNSUPPORTED, rejector_->state());
return;
}
- EXPECT_EQ(StatelessRejector::ACCEPTED, rejector_.state());
+
+ // The StatelessRejector is undecided - proceed with async processing
+ ASSERT_EQ(StatelessRejector::UNKNOWN, rejector_->state());
+ StatelessRejector::Process(std::move(rejector_),
+ base::MakeUnique<ProcessDoneCallback>(this));
+
+ EXPECT_EQ(StatelessRejector::ACCEPTED, rejector_->state());
}
} // namespace
« no previous file with comments | « net/tools/quic/stateless_rejector.cc ('k') | net/tools/quic/test_tools/mock_quic_server_session_visitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698