TEST_F(HybridSlowStartTest, Simple) {
QuicPacketSequenceNumber sequence_number = 1;
QuicPacketSequenceNumber end_sequence_number = 3;
- slowStart_->Reset(end_sequence_number);
+ slowStart_->StartReceiveRound(end_sequence_number);
- EXPECT_FALSE(slowStart_->EndOfRound(sequence_number++));
+ EXPECT_FALSE(slowStart_->IsEndOfRound(sequence_number++));
// Test duplicates.
- EXPECT_FALSE(slowStart_->EndOfRound(sequence_number));
+ EXPECT_FALSE(slowStart_->IsEndOfRound(sequence_number));
- EXPECT_FALSE(slowStart_->EndOfRound(sequence_number++));
- EXPECT_TRUE(slowStart_->EndOfRound(sequence_number++));
+ EXPECT_FALSE(slowStart_->IsEndOfRound(sequence_number++));
+ EXPECT_TRUE(slowStart_->IsEndOfRound(sequence_number++));
// Test without a new registered end_sequence_number;
- EXPECT_TRUE(slowStart_->EndOfRound(sequence_number++));
+ EXPECT_TRUE(slowStart_->IsEndOfRound(sequence_number++));
end_sequence_number = 20;
- slowStart_->Reset(end_sequence_number);
+ slowStart_->StartReceiveRound(end_sequence_number);
while (sequence_number < end_sequence_number) {
- EXPECT_FALSE(slowStart_->EndOfRound(sequence_number++));
+ EXPECT_FALSE(slowStart_->IsEndOfRound(sequence_number++));
}
- EXPECT_TRUE(slowStart_->EndOfRound(sequence_number++));
+ EXPECT_TRUE(slowStart_->IsEndOfRound(sequence_number++));
}
+// TODO(ianswett): Add tests which more realistically invoke the methods,
+// simulating how actual acks arrive and packets are sent.
TEST_F(HybridSlowStartTest, AckTrain) {
// At a typical RTT 60 ms, assuming that the inter arrival is 1 ms,
// we expect to be able to send a burst of 30 packet before we trigger the
QuicPacketSequenceNumber sequence_number = 2;
QuicPacketSequenceNumber end_sequence_number = 2;
for (int burst = 0; burst < kMaxLoopCount; ++burst) {
- slowStart_->Reset(end_sequence_number);
+ slowStart_->StartReceiveRound(end_sequence_number);
do {
clock_.AdvanceTime(one_ms_);
- slowStart_->Update(rtt_, rtt_);
- EXPECT_FALSE(slowStart_->Exit());
- } while (!slowStart_->EndOfRound(sequence_number++));
+ EXPECT_FALSE(slowStart_->ShouldExitSlowStart(rtt_, rtt_, 100));
+ } while (!slowStart_->IsEndOfRound(sequence_number++));
end_sequence_number *= 2; // Exponential growth.
}
- slowStart_->Reset(end_sequence_number);
+ slowStart_->StartReceiveRound(end_sequence_number);
- for (int n = 0; n < 29 && !slowStart_->EndOfRound(sequence_number++); ++n) {
+ for (int n = 0; n < 29 && !slowStart_->IsEndOfRound(sequence_number++); ++n) {
clock_.AdvanceTime(one_ms_);
- slowStart_->Update(rtt_, rtt_);
- EXPECT_FALSE(slowStart_->Exit());
+ EXPECT_FALSE(slowStart_->ShouldExitSlowStart(rtt_, rtt_, 100));
}
clock_.AdvanceTime(one_ms_);
- slowStart_->Update(rtt_, rtt_);
- EXPECT_TRUE(slowStart_->Exit());
+ EXPECT_TRUE(slowStart_->ShouldExitSlowStart(rtt_, rtt_, 100));
}
TEST_F(HybridSlowStartTest, Delay) {
const int kHybridStartMinSamples = 8; // Number of acks required to trigger.
QuicPacketSequenceNumber end_sequence_number = 1;
- slowStart_->Reset(end_sequence_number++);
+ slowStart_->StartReceiveRound(end_sequence_number++);
// Will not trigger since our lowest RTT in our burst is the same as the long
// term RTT provided.
for (int n = 0; n < kHybridStartMinSamples; ++n) {
- slowStart_->Update(rtt_.Add(QuicTime::Delta::FromMilliseconds(n)), rtt_);
- EXPECT_FALSE(slowStart_->Exit());
+ EXPECT_FALSE(slowStart_->ShouldExitSlowStart(
+ rtt_.Add(QuicTime::Delta::FromMilliseconds(n)), rtt_, 100));
}
- slowStart_->Reset(end_sequence_number++);
+ slowStart_->StartReceiveRound(end_sequence_number++);
for (int n = 1; n < kHybridStartMinSamples; ++n) {
- slowStart_->Update(rtt_.Add(QuicTime::Delta::FromMilliseconds(n + 4)),
- rtt_);
- EXPECT_FALSE(slowStart_->Exit());
+ EXPECT_FALSE(slowStart_->ShouldExitSlowStart(
+ rtt_.Add(QuicTime::Delta::FromMilliseconds(n + 5)), rtt_, 100));
}
// Expect to trigger since all packets in this burst was above the long term
// RTT provided.
- slowStart_->Update(rtt_.Add(QuicTime::Delta::FromMilliseconds(4)), rtt_);
- EXPECT_TRUE(slowStart_->Exit());
+ EXPECT_TRUE(slowStart_->ShouldExitSlowStart(
+ rtt_.Add(QuicTime::Delta::FromMilliseconds(5)), rtt_, 100));
}
} // namespace test