Commit a93e9f0f authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/dist: spin up fewer test dir runners

5 shards, each of which spins up NumCPU processes,
each of which is running at GOMAXPROCS=NumCPU,
is too much for one machine. It makes my laptop unusable.

It might also be in part responsible for test flakes
that require a moderately responsive system,
like #18589 (backedge scheduling) and #19276 (locklinear).

It's possible that Go should be a better neighbor in general;
that's #17969. In the meantime, fix this corner of the world.

Builders snapshot the world and run shards on different
machines, so keeping sharding high for them is good.

This is a partial reversion of CL 18199.

Fixes #20141.

Change-Id: I123cf9436f4f4da3550372896265c38117b78071
Reviewed-on: https://go-review.googlesource.com/42431Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 18fb670e
...@@ -597,7 +597,13 @@ func (t *tester) registerTests() { ...@@ -597,7 +597,13 @@ func (t *tester) registerTests() {
t.registerTest("bench_go1", "../test/bench/go1", "go", "test", t.timeout(600), t.runFlag("")) t.registerTest("bench_go1", "../test/bench/go1", "go", "test", t.timeout(600), t.runFlag(""))
} }
if t.goos != "android" && !t.iOS() { if t.goos != "android" && !t.iOS() {
const nShards = 5 // Only start multiple test dir shards on builders,
// where they get distributed to multiple machines.
// See issue 20141.
nShards := 1
if os.Getenv("GO_BUILDER_NAME") != "" {
nShards = 10
}
for shard := 0; shard < nShards; shard++ { for shard := 0; shard < nShards; shard++ {
shard := shard shard := shard
t.tests = append(t.tests, distTest{ t.tests = append(t.tests, distTest{
...@@ -1143,7 +1149,7 @@ func (t *tester) testDirTest(dt *distTest, shard, shards int) error { ...@@ -1143,7 +1149,7 @@ func (t *tester) testDirTest(dt *distTest, shard, shards int) error {
runtest.Do(func() { runtest.Do(func() {
const exe = "runtest.exe" // named exe for Windows, but harmless elsewhere const exe = "runtest.exe" // named exe for Windows, but harmless elsewhere
cmd := t.dirCmd("test", "go", "build", "-o", exe, "run.go") cmd := t.dirCmd("test", "go", "build", "-o", exe, "run.go")
cmd.Env = append(os.Environ(), "GOOS="+t.gohostos, "GOARCH="+t.gohostarch, "GOMAXPROCS=") cmd.Env = append(os.Environ(), "GOOS="+t.gohostos, "GOARCH="+t.gohostarch)
runtest.exe = filepath.Join(cmd.Dir, exe) runtest.exe = filepath.Join(cmd.Dir, exe)
if err := cmd.Run(); err != nil { if err := cmd.Run(); err != nil {
runtest.err = err runtest.err = err
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment