mirror of
https://github.com/tailscale/tailscale.git
synced 2026-09-22 11:35:12 -04:00
testwrapper ran a separate, sequential "go test" invocation for each package pattern on its command line. That is fine for a single "./..." argument but not for callers that pass an explicit package list: CI jobs in the corp repo passing ~200 packages ran ~200 serial go test processes with no cross-package parallelism and a fixed set of never-cacheable lookups per process, and spent several times longer on process startup, package loading, cache lookups, and serial test binary links than on running tests. See tailscale/corp#48453 for the details. Locally, on 203 packages with a fully warm build and test cache, so measuring only the per-invocation overhead: old (203 go test processes): 26.4s new (1 go test process): 3.6s (7.3x faster) Our own Windows CI job hits the same path: its "sharded:N/M" mode expands to an explicit list of that shard's packages via listpkgs, so each shard ran one go test process per package, and Windows process startup is slower still. Each shard now runs as one invocation. Fixes tailscale/corp#48453 Updates tailscale/corp#47035 Change-Id: I3f796ff1724af40f93be9f918a7ddfde3bb45a91 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>