mirror of
https://github.com/golang/go
synced 2024-11-25 03:17:58 -07:00
Revert "testing: add TB.SetGOMAXPROCS function"
This reverts CL 519235. Reason for revert: Proposal is still in incoming. For #62020 Change-Id: Icccb930209f36097f5d930c01eda6b5042bdddc1 Reviewed-on: https://go-review.googlesource.com/c/go/+/573516 Reviewed-by: Than McIntosh <thanm@google.com> Auto-Submit: Ian Lance Taylor <iant@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
parent
b5e377cedc
commit
27f41bb153
@ -1,4 +0,0 @@
|
|||||||
pkg testing, type TB interface, SetGOMAXPROCS(int) #62020
|
|
||||||
pkg testing, method (*T) SetGOMAXPROCS(int) #62020
|
|
||||||
pkg testing, method (*B) SetGOMAXPROCS(int) #62020
|
|
||||||
pkg testing, method (*F) SetGOMAXPROCS(int) #62020
|
|
@ -1 +0,0 @@
|
|||||||
The [`SetGOMAXPROCS`](/pkg/testing#T.SetGOMAXPROCS) method changes GOMAXPROCS for the duration of a single test.
|
|
@ -890,7 +890,6 @@ type TB interface {
|
|||||||
Logf(format string, args ...any)
|
Logf(format string, args ...any)
|
||||||
Name() string
|
Name() string
|
||||||
Setenv(key, value string)
|
Setenv(key, value string)
|
||||||
SetGOMAXPROCS(n int)
|
|
||||||
Skip(args ...any)
|
Skip(args ...any)
|
||||||
SkipNow()
|
SkipNow()
|
||||||
Skipf(format string, args ...any)
|
Skipf(format string, args ...any)
|
||||||
@ -917,9 +916,8 @@ var _ TB = (*B)(nil)
|
|||||||
// may be called simultaneously from multiple goroutines.
|
// may be called simultaneously from multiple goroutines.
|
||||||
type T struct {
|
type T struct {
|
||||||
common
|
common
|
||||||
isEnvSet bool
|
isEnvSet bool
|
||||||
isGOMAXPROCSSet bool
|
context *testContext // For running tests and subtests.
|
||||||
context *testContext // For running tests and subtests.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *common) private() {}
|
func (c *common) private() {}
|
||||||
@ -1308,19 +1306,6 @@ func (c *common) Setenv(key, value string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetGOMAXPROCS calls runtime.GOMAXPROCS(n) and uses Cleanup to
|
|
||||||
// restore the value of GOMAXPROCS after the test.
|
|
||||||
//
|
|
||||||
// Because GOMAXPROCS affects the whole process, it cannot be used
|
|
||||||
// in parallel tests or tests with parallel ancestors.
|
|
||||||
func (c *common) SetGOMAXPROCS(n int) {
|
|
||||||
c.checkFuzzFn("SetGOMAXPROCS")
|
|
||||||
prev := runtime.GOMAXPROCS(n)
|
|
||||||
c.Cleanup(func() {
|
|
||||||
runtime.GOMAXPROCS(prev)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// panicHanding controls the panic handling used by runCleanup.
|
// panicHanding controls the panic handling used by runCleanup.
|
||||||
type panicHandling int
|
type panicHandling int
|
||||||
|
|
||||||
@ -1461,9 +1446,6 @@ func (t *T) Parallel() {
|
|||||||
if t.isEnvSet {
|
if t.isEnvSet {
|
||||||
panic("testing: t.Parallel called after t.Setenv; cannot set environment variables in parallel tests")
|
panic("testing: t.Parallel called after t.Setenv; cannot set environment variables in parallel tests")
|
||||||
}
|
}
|
||||||
if t.isGOMAXPROCSSet {
|
|
||||||
panic("testing: t.Parallel called after t.SetGOMAXPROCS; cannot set GOMAXPROCS in parallel tests")
|
|
||||||
}
|
|
||||||
t.isParallel = true
|
t.isParallel = true
|
||||||
if t.parent.barrier == nil {
|
if t.parent.barrier == nil {
|
||||||
// T.Parallel has no effect when fuzzing.
|
// T.Parallel has no effect when fuzzing.
|
||||||
@ -1545,33 +1527,6 @@ func (t *T) Setenv(key, value string) {
|
|||||||
t.common.Setenv(key, value)
|
t.common.Setenv(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetGOMAXPROCS calls runtime.GOMAXPROCS(n) and uses Cleanup to
|
|
||||||
// restore the value of GOMAXPROCS after the test.
|
|
||||||
//
|
|
||||||
// Because GOMAXPROCS affects the whole process, it cannot be used
|
|
||||||
// in parallel tests or tests with parallel ancestors.
|
|
||||||
func (t *T) SetGOMAXPROCS(n int) {
|
|
||||||
// Non-parallel subtests that have parallel ancestors may still
|
|
||||||
// run in parallel with other tests: they are only non-parallel
|
|
||||||
// with respect to the other subtests of the same parent.
|
|
||||||
// Since SetGOMAXPROCS affects the whole process, we need to disallow it
|
|
||||||
// if the current test or any parent is parallel.
|
|
||||||
isParallel := false
|
|
||||||
for c := &t.common; c != nil; c = c.parent {
|
|
||||||
if c.isParallel {
|
|
||||||
isParallel = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if isParallel {
|
|
||||||
panic("testing: t.SetGOMAXPROCS called after t.Parallel; cannot set GOMAXPROCS in parallel tests")
|
|
||||||
}
|
|
||||||
|
|
||||||
t.isGOMAXPROCSSet = true
|
|
||||||
|
|
||||||
t.common.SetGOMAXPROCS(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
// InternalTest is an internal type but exported because it is cross-package;
|
// InternalTest is an internal type but exported because it is cross-package;
|
||||||
// it is part of the implementation of the "go test" command.
|
// it is part of the implementation of the "go test" command.
|
||||||
type InternalTest struct {
|
type InternalTest struct {
|
||||||
|
@ -13,7 +13,6 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"runtime"
|
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
@ -259,102 +258,6 @@ func TestSetenvWithParallelGrandParentBeforeSetenv(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetGOMAXPROCS(t *testing.T) {
|
|
||||||
if runtime.GOARCH == "wasm" {
|
|
||||||
t.Skip("not supported on wasm yet")
|
|
||||||
}
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
newP int
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "overriding value",
|
|
||||||
newP: 1,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
p := runtime.GOMAXPROCS(0)
|
|
||||||
t.Run(test.name, func(t *testing.T) {
|
|
||||||
t.SetGOMAXPROCS(test.newP + 1)
|
|
||||||
if runtime.GOMAXPROCS(0) != test.newP+1 {
|
|
||||||
t.Fatalf("unexpected value after t.SetGOMAXPROCS: got %d, want %d", runtime.GOMAXPROCS(0), test.newP+1)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if runtime.GOMAXPROCS(0) != p {
|
|
||||||
t.Fatalf("unexpected value after t.SetGOMAXPROCS cleanup: got %d, want %d", runtime.GOMAXPROCS(0), p)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetGOMAXPROCSWithParallelAfterSetGOMAXPROCS(t *testing.T) {
|
|
||||||
if runtime.GOARCH == "wasm" {
|
|
||||||
t.Skip("not supported on wasm yet")
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
want := "testing: t.Parallel called after t.SetGOMAXPROCS; cannot set GOMAXPROCS in parallel tests"
|
|
||||||
if got := recover(); got != want {
|
|
||||||
t.Fatalf("expected panic; got %#v want %q", got, want)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
p := runtime.GOMAXPROCS(0)
|
|
||||||
t.SetGOMAXPROCS(p + 1)
|
|
||||||
t.Parallel()
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetGOMAXPROCSWithParallelBeforeSetGOMAXPROCS(t *testing.T) {
|
|
||||||
if runtime.GOARCH == "wasm" {
|
|
||||||
t.Skip("not supported on wasm yet")
|
|
||||||
}
|
|
||||||
defer func() {
|
|
||||||
want := "testing: t.SetGOMAXPROCS called after t.Parallel; cannot set GOMAXPROCS in parallel tests"
|
|
||||||
if got := recover(); got != want {
|
|
||||||
t.Fatalf("expected panic; got %#v want %q", got, want)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
t.Parallel()
|
|
||||||
p := runtime.GOMAXPROCS(0)
|
|
||||||
t.SetGOMAXPROCS(p + 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetGOMAXPROCSWithParallelParentBeforeSetGOMAXPROCS(t *testing.T) {
|
|
||||||
if runtime.GOARCH == "wasm" {
|
|
||||||
t.Skip("not supported on wasm yet")
|
|
||||||
}
|
|
||||||
t.Parallel()
|
|
||||||
t.Run("child", func(t *testing.T) {
|
|
||||||
defer func() {
|
|
||||||
want := "testing: t.SetGOMAXPROCS called after t.Parallel; cannot set GOMAXPROCS in parallel tests"
|
|
||||||
if got := recover(); got != want {
|
|
||||||
t.Fatalf("expected panic; got %#v want %q", got, want)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
p := runtime.GOMAXPROCS(0)
|
|
||||||
t.SetGOMAXPROCS(p + 1)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetGOMAXPROCSWithParallelGrandParentBeforeSetGOMAXPROCS(t *testing.T) {
|
|
||||||
if runtime.GOARCH == "wasm" {
|
|
||||||
t.Skip("not supported on wasm yet")
|
|
||||||
}
|
|
||||||
t.Parallel()
|
|
||||||
t.Run("child", func(t *testing.T) {
|
|
||||||
t.Run("grand-child", func(t *testing.T) {
|
|
||||||
defer func() {
|
|
||||||
want := "testing: t.SetGOMAXPROCS called after t.Parallel; cannot set GOMAXPROCS in parallel tests"
|
|
||||||
if got := recover(); got != want {
|
|
||||||
t.Fatalf("expected panic; got %#v want %q", got, want)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
p := runtime.GOMAXPROCS(0)
|
|
||||||
t.SetGOMAXPROCS(p + 1)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// testingTrueInInit is part of TestTesting.
|
// testingTrueInInit is part of TestTesting.
|
||||||
var testingTrueInInit = false
|
var testingTrueInInit = false
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user