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

Unified Diff: net/quic/core/quic_connection_test.cc

Issue 2236973002: Landing Recent QUIC changes until 4AM, Aug 7, 2016 UTC-4 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: flip quic_sequencer_buffer_retire_block_in_time to true Created 4 years, 4 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/quic/core/quic_connection.cc ('k') | net/quic/core/quic_crypto_client_stream.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/core/quic_connection_test.cc
diff --git a/net/quic/core/quic_connection_test.cc b/net/quic/core/quic_connection_test.cc
index fbeae117b3b356e71778ea015a0de7d1e6e691ad..e63abd802df7a7ec6bc84e86539d00de062b0fb9 100644
--- a/net/quic/core/quic_connection_test.cc
+++ b/net/quic/core/quic_connection_test.cc
@@ -662,7 +662,7 @@ struct TestParams {
// Constructs various test permutations.
vector<TestParams> GetTestParams() {
vector<TestParams> params;
- QuicVersionVector all_supported_versions = QuicSupportedVersions();
+ QuicVersionVector all_supported_versions = AllSupportedVersions();
for (size_t i = 0; i < all_supported_versions.size(); ++i) {
for (AckResponse ack_response :
{AckResponse::kDefer, AckResponse::kImmediate}) {
@@ -712,7 +712,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> {
FLAGS_quic_always_log_bugs_for_tests = true;
connection_.set_visitor(&visitor_);
connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_);
- connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_);
+ connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get());
framer_.set_received_entropy_calculator(&entropy_calculator_);
peer_framer_.set_received_entropy_calculator(&peer_entropy_calculator_);
EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _))
@@ -734,6 +734,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> {
.WillRepeatedly(Return(QuicBandwidth::Zero()));
EXPECT_CALL(*send_algorithm_, InSlowStart()).Times(AnyNumber());
EXPECT_CALL(*send_algorithm_, InRecovery()).Times(AnyNumber());
+ EXPECT_CALL(*send_algorithm_, OnApplicationLimited(_)).Times(AnyNumber());
EXPECT_CALL(visitor_, WillingAndAbleToWrite()).Times(AnyNumber());
EXPECT_CALL(visitor_, HasPendingHandshake()).Times(AnyNumber());
EXPECT_CALL(visitor_, OnCanWrite()).Times(AnyNumber());
@@ -1068,7 +1069,7 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> {
MockEntropyCalculator peer_entropy_calculator_;
MockSendAlgorithm* send_algorithm_;
- MockLossAlgorithm* loss_algorithm_;
+ std::unique_ptr<MockLossAlgorithm> loss_algorithm_;
MockClock clock_;
MockRandom random_generator_;
SimpleBufferAllocator buffer_allocator_;
@@ -1155,13 +1156,8 @@ TEST_P(QuicConnectionTest, ClientAddressChangeAndPacketReordered) {
// Decrease packet number to simulate out-of-order packets.
QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 4);
- if (FLAGS_quic_do_not_migrate_on_old_packet) {
- // This is an old packet, do not migrate.
- EXPECT_CALL(visitor_, OnConnectionMigration(PORT_CHANGE)).Times(0);
- } else {
- // A connection migration is observed.
- EXPECT_CALL(visitor_, OnConnectionMigration(PORT_CHANGE));
- }
+ // This is an old packet, do not migrate.
+ EXPECT_CALL(visitor_, OnConnectionMigration(PORT_CHANGE)).Times(0);
ProcessFramePacketWithAddresses(QuicFrame(&stream_frame), kSelfAddress,
kPeerAddress);
}
@@ -1949,7 +1945,13 @@ TEST_P(QuicConnectionTest, OnCanWrite) {
&connection_, &TestConnection::SendStreamData3)),
IgnoreResult(InvokeWithoutArgs(
&connection_, &TestConnection::SendStreamData5))));
- EXPECT_CALL(visitor_, WillingAndAbleToWrite()).WillOnce(Return(true));
+ {
+ InSequence seq;
+ EXPECT_CALL(visitor_, WillingAndAbleToWrite()).WillOnce(Return(true));
+ EXPECT_CALL(visitor_, WillingAndAbleToWrite())
+ .WillRepeatedly(Return(false));
+ }
+
EXPECT_CALL(*send_algorithm_, TimeUntilSend(_, _))
.WillRepeatedly(testing::Return(QuicTime::Delta::Zero()));
@@ -4272,7 +4274,7 @@ TEST_P(QuicConnectionTest, EntropyCalculationForTruncatedAck) {
}
TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacket) {
- connection_.SetSupportedVersions(QuicSupportedVersions());
+ connection_.SetSupportedVersions(AllSupportedVersions());
set_perspective(Perspective::IS_SERVER);
peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
@@ -4308,7 +4310,7 @@ TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacket) {
}
TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacketSocketBlocked) {
- connection_.SetSupportedVersions(QuicSupportedVersions());
+ connection_.SetSupportedVersions(AllSupportedVersions());
set_perspective(Perspective::IS_SERVER);
peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
@@ -4350,7 +4352,7 @@ TEST_P(QuicConnectionTest, ServerSendsVersionNegotiationPacketSocketBlocked) {
TEST_P(QuicConnectionTest,
ServerSendsVersionNegotiationPacketSocketBlockedDataBuffered) {
- connection_.SetSupportedVersions(QuicSupportedVersions());
+ connection_.SetSupportedVersions(AllSupportedVersions());
set_perspective(Perspective::IS_SERVER);
peer_framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
@@ -4385,7 +4387,7 @@ TEST_P(QuicConnectionTest, ClientHandlesVersionNegotiation) {
// Send a version negotiation packet.
std::unique_ptr<QuicEncryptedPacket> encrypted(
framer_.BuildVersionNegotiationPacket(connection_id_,
- QuicSupportedVersions()));
+ AllSupportedVersions()));
std::unique_ptr<QuicReceivedPacket> received(
ConstructReceivedPacket(*encrypted, QuicTime::Zero()));
connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received);
@@ -4421,7 +4423,7 @@ TEST_P(QuicConnectionTest, BadVersionNegotiation) {
ConnectionCloseSource::FROM_SELF));
std::unique_ptr<QuicEncryptedPacket> encrypted(
framer_.BuildVersionNegotiationPacket(connection_id_,
- QuicSupportedVersions()));
+ AllSupportedVersions()));
std::unique_ptr<QuicReceivedPacket> received(
ConstructReceivedPacket(*encrypted, QuicTime::Zero()));
connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, *received);
@@ -4504,7 +4506,7 @@ TEST_P(QuicConnectionTest, ProcessFramesIfPacketClosedConnection) {
}
TEST_P(QuicConnectionTest, SelectMutualVersion) {
- connection_.SetSupportedVersions(QuicSupportedVersions());
+ connection_.SetSupportedVersions(AllSupportedVersions());
// Set the connection to speak the lowest quic version.
connection_.set_version(QuicVersionMin());
EXPECT_EQ(QuicVersionMin(), connection_.version());
@@ -4990,6 +4992,52 @@ TEST_P(QuicConnectionTest, AlwaysGetPacketTooLarge) {
connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr);
}
+// Verify that if connection has no outstanding data, it notifies the send
+// algorithm after the write.
+TEST_P(QuicConnectionTest, SendDataAndBecomeApplicationLimited) {
+ FLAGS_quic_enable_app_limited_check = true;
+
+ EXPECT_CALL(*send_algorithm_, OnApplicationLimited(_)).Times(1);
+ {
+ InSequence seq;
+ EXPECT_CALL(visitor_, WillingAndAbleToWrite()).WillRepeatedly(Return(true));
+ EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
+ .WillOnce(Return(true));
+ EXPECT_CALL(visitor_, WillingAndAbleToWrite())
+ .WillRepeatedly(Return(false));
+ }
+
+ connection_.SendStreamData3();
+}
+
+// Verify that the connection does not become app-limited if there is
+// outstanding data to send after the write.
+TEST_P(QuicConnectionTest, NotBecomeApplicationLimitedIfMoreDataAvailable) {
+ FLAGS_quic_enable_app_limited_check = true;
+
+ EXPECT_CALL(*send_algorithm_, OnApplicationLimited(_)).Times(0);
+ {
+ InSequence seq;
+ EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _))
+ .WillOnce(Return(true));
+ EXPECT_CALL(visitor_, WillingAndAbleToWrite()).WillRepeatedly(Return(true));
+ }
+
+ connection_.SendStreamData3();
+}
+
+// Verify that the connection does not become app-limited after blocked write
+// even if there is outstanding data to send after the write.
+TEST_P(QuicConnectionTest, NotBecomeApplicationLimitedDueToWriteBlock) {
+ FLAGS_quic_enable_app_limited_check = true;
+
+ EXPECT_CALL(*send_algorithm_, OnApplicationLimited(_)).Times(0);
+ EXPECT_CALL(visitor_, WillingAndAbleToWrite()).WillRepeatedly(Return(true));
+ BlockOnNextWrite();
+
+ connection_.SendStreamData3();
+}
+
} // namespace
} // namespace test
} // namespace net
« no previous file with comments | « net/quic/core/quic_connection.cc ('k') | net/quic/core/quic_crypto_client_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698