cmd/containerboot: speed up tests (#14883)

The test suite had grown to about 20s on my machine, but it doesn't
do much taxing work so was a good candidate to parallelise. Now runs
in under 2s on my machine.

Updates #cleanup

Change-Id: I2fcc6be9ca226c74c0cb6c906778846e959492e4
Signed-off-by: Tom Proctor <tomhjp@users.noreply.github.com>
This commit is contained in:
Tom Proctor 2025-04-08 23:34:23 +01:00 committed by GitHub
parent fd580611bd
commit de949b050e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 855 additions and 805 deletions

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,9 @@ import (
const tailscaleTunInterface = "tailscale0" const tailscaleTunInterface = "tailscale0"
// Modified using a build flag to speed up tests.
var testSleepDuration string
// This file contains functionality to run containerboot as a proxy that can // This file contains functionality to run containerboot as a proxy that can
// route cluster traffic to one or more tailnet targets, based on portmapping // route cluster traffic to one or more tailnet targets, based on portmapping
// rules read from a configfile. Currently (9/2024) this is only used for the // rules read from a configfile. Currently (9/2024) this is only used for the
@ -149,8 +152,13 @@ func (ep *egressProxy) configure(opts egressProxyRunOpts) {
ep.podIPv4 = opts.podIPv4 ep.podIPv4 = opts.podIPv4
ep.tailnetAddrs = opts.tailnetAddrs ep.tailnetAddrs = opts.tailnetAddrs
ep.client = &http.Client{} // default HTTP client ep.client = &http.Client{} // default HTTP client
ep.shortSleep = time.Second sleepDuration := time.Second
ep.longSleep = time.Second * 10 if d, err := time.ParseDuration(testSleepDuration); err == nil && d > 0 {
log.Printf("using test sleep duration %v", d)
sleepDuration = d
}
ep.shortSleep = sleepDuration
ep.longSleep = sleepDuration * 10
} }
// sync triggers an egress proxy config resync. The resync calculates the diff between config and status to determine if // sync triggers an egress proxy config resync. The resync calculates the diff between config and status to determine if

View File

@ -38,11 +38,11 @@ func startTailscaled(ctx context.Context, cfg *settings) (*local.Client, *os.Pro
} }
log.Printf("Starting tailscaled") log.Printf("Starting tailscaled")
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
return nil, nil, fmt.Errorf("starting tailscaled failed: %v", err) return nil, nil, fmt.Errorf("starting tailscaled failed: %w", err)
} }
// Wait for the socket file to appear, otherwise API ops will racily fail. // Wait for the socket file to appear, otherwise API ops will racily fail.
log.Printf("Waiting for tailscaled socket") log.Printf("Waiting for tailscaled socket at %s", cfg.Socket)
for { for {
if ctx.Err() != nil { if ctx.Err() != nil {
return nil, nil, errors.New("timed out waiting for tailscaled socket") return nil, nil, errors.New("timed out waiting for tailscaled socket")