forked from quic-go/quic-go
utils: add a method to reset RTTStats for connection migration (#4930)
This commit is contained in:
@@ -108,3 +108,12 @@ func (r *RTTStats) SetInitialRTT(t time.Duration) {
|
||||
r.smoothedRTT = t
|
||||
r.latestRTT = t
|
||||
}
|
||||
|
||||
func (r *RTTStats) ResetForPathMigration() {
|
||||
r.hasMeasurement = false
|
||||
r.minRTT = 0
|
||||
r.latestRTT = 0
|
||||
r.smoothedRTT = 0
|
||||
r.meanDeviation = 0
|
||||
// max_ack_delay remains valid
|
||||
}
|
||||
|
||||
@@ -116,3 +116,25 @@ func TestRTTMeasurementAfterRestore(t *testing.T) {
|
||||
require.Equal(t, rtt, rttStats.LatestRTT())
|
||||
require.Equal(t, rtt, rttStats.SmoothedRTT())
|
||||
}
|
||||
|
||||
func TestRTTStatsResetForPathMigration(t *testing.T) {
|
||||
var rttStats RTTStats
|
||||
rttStats.SetMaxAckDelay(42 * time.Millisecond)
|
||||
rttStats.UpdateRTT(time.Second, 0)
|
||||
rttStats.UpdateRTT(10*time.Second, 0)
|
||||
require.Equal(t, time.Second, rttStats.MinRTT())
|
||||
require.Equal(t, 10*time.Second, rttStats.LatestRTT())
|
||||
require.NotZero(t, rttStats.SmoothedRTT())
|
||||
|
||||
rttStats.ResetForPathMigration()
|
||||
require.Zero(t, rttStats.MinRTT())
|
||||
require.Zero(t, rttStats.LatestRTT())
|
||||
require.Zero(t, rttStats.SmoothedRTT())
|
||||
require.Equal(t, 2*defaultInitialRTT, rttStats.PTO(false))
|
||||
// make sure that max_ack_delay was not reset
|
||||
require.Equal(t, 42*time.Millisecond, rttStats.MaxAckDelay())
|
||||
|
||||
rttStats.UpdateRTT(10*time.Millisecond, 0)
|
||||
require.Equal(t, 10*time.Millisecond, rttStats.SmoothedRTT())
|
||||
require.Equal(t, 10*time.Millisecond, rttStats.LatestRTT())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user