aboutsummaryrefslogtreecommitdiff
path: root/misc/cgo/errors
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2019-05-30 18:32:27 -0400
committerIan Lance Taylor <iant@golang.org>2019-05-31 00:51:48 +0000
commitd53f380e620c59cb3f30736584879c3c104ee488 (patch)
tree68fd6ee455359a2f3bdd3d111fbb2564cc02bfa7 /misc/cgo/errors
parent9e2299207a4ed4de49eae173903ae88ee8da6065 (diff)
downloadgo-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.go25
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)