Commit d53f380e authored by Ian Lance Taylor's avatar Ian Lance Taylor

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: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 9e229920
......@@ -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)
......
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