diff options
| author | Ian Lance Taylor <iant@golang.org> | 2019-05-30 18:32:27 -0400 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2019-05-31 00:51:48 +0000 |
| commit | d53f380e620c59cb3f30736584879c3c104ee488 (patch) | |
| tree | 68fd6ee455359a2f3bdd3d111fbb2564cc02bfa7 /misc/cgo/errors | |
| parent | 9e2299207a4ed4de49eae173903ae88ee8da6065 (diff) | |
| download | go-d53f380e620c59cb3f30736584879c3c104ee488.tar.xz | |
misc/cgo/errors: limit number of parallel executions
Fixes #32328
Change-Id: Iee71ecb247f2c439804c2ff03a6ed7b7f5a8b562
Reviewed-on: https://go-review.googlesource.com/c/go/+/179603
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'misc/cgo/errors')
| -rw-r--r-- | misc/cgo/errors/ptr_test.go | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/misc/cgo/errors/ptr_test.go b/misc/cgo/errors/ptr_test.go index 12846cae44..d1ef191bf5 100644 --- a/misc/cgo/errors/ptr_test.go +++ b/misc/cgo/errors/ptr_test.go @@ -553,18 +553,23 @@ func main() { } ` +var csem = make(chan bool, 16) + func testOne(t *testing.T, pt ptrTest, exe string) { t.Parallel() - newcmd := func(cgocheck string) *exec.Cmd { + // Run the tests in parallel, but don't run too many + // executions in parallel, to avoid overloading the system. + runcmd := func(cgocheck string) ([]byte, error) { + csem <- true + defer func() { <-csem }() cmd := exec.Command(exe, pt.name) cmd.Env = append(os.Environ(), "GODEBUG=cgocheck="+cgocheck) - return cmd + return cmd.CombinedOutput() } if pt.expensive { - cmd := newcmd("1") - buf, err := cmd.CombinedOutput() + buf, err := runcmd("1") if err != nil { t.Logf("%s", buf) if pt.fail { @@ -576,12 +581,12 @@ func testOne(t *testing.T, pt ptrTest, exe string) { } - cmd := newcmd("") + cgocheck := "" if pt.expensive { - cmd = newcmd("2") + cgocheck = "2" } - buf, err := cmd.CombinedOutput() + buf, err := runcmd(cgocheck) if pt.fail { if err == nil { t.Logf("%s", buf) @@ -598,8 +603,7 @@ func testOne(t *testing.T, pt ptrTest, exe string) { if !pt.expensive { // Make sure it passes with the expensive checks. - cmd := newcmd("2") - buf, err := cmd.CombinedOutput() + buf, err := runcmd("2") if err != nil { t.Logf("%s", buf) t.Fatalf("failed unexpectedly with expensive checks: %v", err) @@ -608,8 +612,7 @@ func testOne(t *testing.T, pt ptrTest, exe string) { } if pt.fail { - cmd := newcmd("0") - buf, err := cmd.CombinedOutput() + buf, err := runcmd("0") if err != nil { t.Logf("%s", buf) t.Fatalf("failed unexpectedly with GODEBUG=cgocheck=0: %v", err) |
