utils: add a method to reset RTTStats for connection migration (#4930)

This commit is contained in:
Marten Seemann
2025-01-26 09:37:31 +01:00
committed by GitHub
parent c63c4e6990
commit 9765f54dd2
2 changed files with 31 additions and 0 deletions

View File

@@ -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
}

View File

@@ -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())
}