Index: net/quic/quic_connection_test.cc |
diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc |
index 535282a178b63f638665d9e34c77615f55e9923a..42ecdbba9da95c2f7abfe1b863969e15fef99dbe 100644 |
--- a/net/quic/quic_connection_test.cc |
+++ b/net/quic/quic_connection_test.cc |
@@ -617,6 +617,7 @@ class TestConnection : public QuicConnection { |
} |
using QuicConnection::SelectMutualVersion; |
+ using QuicConnection::set_defer_send_in_response_to_packets; |
private: |
TestPacketWriter* writer() { |
@@ -641,19 +642,29 @@ class FecQuicConnectionDebugVisitor : public QuicConnectionDebugVisitor { |
QuicPacketHeader revived_header_; |
}; |
-// Run tests with combinations of {QuicVersion, fec_send_policy}. |
+enum class AckResponse { kDefer, kImmediate }; |
+ |
+// Run tests with combinations of {QuicVersion, fec_send_policy, |
+// AckResponse}. |
struct TestParams { |
- TestParams(QuicVersion version, FecSendPolicy fec_send_policy) |
- : version(version), fec_send_policy(fec_send_policy) {} |
+ TestParams(QuicVersion version, |
+ FecSendPolicy fec_send_policy, |
+ AckResponse ack_response) |
+ : version(version), |
+ fec_send_policy(fec_send_policy), |
+ ack_response(ack_response) {} |
friend ostream& operator<<(ostream& os, const TestParams& p) { |
os << "{ client_version: " << QuicVersionToString(p.version) |
- << " fec_send_policy: " << p.fec_send_policy << " }"; |
+ << " fec_send_policy: " << p.fec_send_policy << " ack_response: " |
+ << (p.ack_response == AckResponse::kDefer ? "defer" : "immediate") |
+ << " }"; |
return os; |
} |
QuicVersion version; |
FecSendPolicy fec_send_policy; |
+ AckResponse ack_response; |
}; |
// Constructs various test permutations. |
@@ -661,8 +672,13 @@ vector<TestParams> GetTestParams() { |
vector<TestParams> params; |
QuicVersionVector all_supported_versions = QuicSupportedVersions(); |
for (size_t i = 0; i < all_supported_versions.size(); ++i) { |
- params.push_back(TestParams(all_supported_versions[i], FEC_ANY_TRIGGER)); |
- params.push_back(TestParams(all_supported_versions[i], FEC_ALARM_TRIGGER)); |
+ for (FecSendPolicy fec_send_policy : {FEC_ANY_TRIGGER, FEC_ALARM_TRIGGER}) { |
+ for (AckResponse ack_response : |
+ {AckResponse::kDefer, AckResponse::kImmediate}) { |
+ params.push_back(TestParams(all_supported_versions[i], fec_send_policy, |
+ ack_response)); |
+ } |
+ } |
} |
return params; |
} |
@@ -696,6 +712,8 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
frame2_(1, false, 3, StringPiece(data2)), |
packet_number_length_(PACKET_6BYTE_PACKET_NUMBER), |
connection_id_length_(PACKET_8BYTE_CONNECTION_ID) { |
+ connection_.set_defer_send_in_response_to_packets(GetParam().ack_response == |
+ AckResponse::kDefer); |
FLAGS_quic_always_log_bugs_for_tests = true; |
connection_.set_visitor(&visitor_); |
connection_.SetSendAlgorithm(send_algorithm_); |
@@ -762,6 +780,9 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
void ProcessPacket(QuicPathId path_id, QuicPacketNumber number) { |
EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(1); |
ProcessDataPacket(path_id, number, 0, !kEntropyFlag); |
+ if (connection_.GetSendAlarm()->IsSet()) { |
+ connection_.GetSendAlarm()->Fire(); |
+ } |
} |
QuicPacketEntropyHash ProcessFramePacket(QuicFrame frame) { |
@@ -785,6 +806,9 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
self_address, peer_address, |
QuicEncryptedPacket(serialized_packet.encrypted_buffer, |
serialized_packet.encrypted_length)); |
+ if (connection_.GetSendAlarm()->IsSet()) { |
+ connection_.GetSendAlarm()->Fire(); |
+ } |
return serialized_packet.entropy_hash; |
} |
@@ -834,6 +858,9 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
connection_.ProcessUdpPacket( |
kSelfAddress, kPeerAddress, |
QuicEncryptedPacket(buffer, encrypted_length, false)); |
+ if (connection_.GetSendAlarm()->IsSet()) { |
+ connection_.GetSendAlarm()->Fire(); |
+ } |
return encrypted_length; |
} |
@@ -946,6 +973,9 @@ class QuicConnectionTest : public ::testing::TestWithParam<TestParams> { |
connection_.ProcessUdpPacket( |
kSelfAddress, kPeerAddress, |
QuicEncryptedPacket(buffer, encrypted_length, false)); |
+ if (connection_.GetSendAlarm()->IsSet()) { |
+ connection_.GetSendAlarm()->Fire(); |
+ } |
return encrypted_length; |
} |