wgengine/magicsock: increase legacy ping timeout again

I based my estimation of the required timeout based on locally
observed behavior. But CI machines are worse than my local machine.
16s was enough to reduce flakiness but not eliminate it. Bump it up again.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
This commit is contained in:
Josh Bleecher Snyder 2021-02-10 11:49:30 -08:00 committed by Josh Bleecher Snyder
parent 1ec64bc94d
commit 635e4c7435
2 changed files with 22 additions and 4 deletions

13
util/cibuild/cibuild.go Normal file
View File

@ -0,0 +1,13 @@
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package cibuild reports runtime CI information.
package cibuild
import "os"
// On reports whether the current binary is executing on a CI system.
func On() bool {
return os.Getenv("GITHUB_ACTIONS") != ""
}

View File

@ -44,6 +44,7 @@ import (
"tailscale.com/types/netmap"
"tailscale.com/types/nettype"
"tailscale.com/types/wgkey"
"tailscale.com/util/cibuild"
"tailscale.com/wgengine/filter"
"tailscale.com/wgengine/tstun"
"tailscale.com/wgengine/wgcfg"
@ -929,10 +930,14 @@ func testTwoDevicePing(t *testing.T, d *devices) {
// In the normal case, pings succeed immediately.
// However, in the case of a handshake race, we need to retry.
// Typical retries take 5s. With very bad luck, we can need to retry
// multiple times. Give ourselves enough time for three retries
// plus a bit of processing time.
const pingTimeout = 16 * time.Second
// With very bad luck, we can need to retry multiple times.
allowedRetries := 3
if cibuild.On() {
// Allow extra retries on small/flaky/loaded CI machines.
allowedRetries *= 2
}
// Retries take 5s each. Add 1s for some processing time.
pingTimeout := 5*time.Second*time.Duration(allowedRetries) + time.Second
ping1 := func(t *testing.T) {
msg2to1 := tuntest.Ping(net.ParseIP("1.0.0.1"), net.ParseIP("1.0.0.2"))