aboutsummaryrefslogtreecommitdiff
path: root/src/testing
diff options
context:
space:
mode:
authorJay Conrod <jayconrod@google.com>2021-02-09 10:30:02 -0500
committerJay Conrod <jayconrod@google.com>2021-02-10 18:21:02 +0000
commitb9c88eaab915874bc004f579940b10fe48bba36b (patch)
treee1cf4c7b9700c794a45fbd057712a62da11b71f1 /src/testing
parent9b967d12a9f1a13c79104b834a17c4356585cc7a (diff)
downloadgo-b9c88eaab915874bc004f579940b10fe48bba36b.tar.xz
[dev.fuzz] testing/internal/testdeps: use signal.NotifyContext
In RunFuzzWorker and CoordinateFuzzing, use signal.NotifyContext (new in 1.16) to cancel the context in response to SIGINT. This is shorter and more correct than what we were doing before. Change-Id: Id7e9a58e9dd992dffb86e4e0f2e3efd117d03c47 Reviewed-on: https://go-review.googlesource.com/c/go/+/290691 Trust: Jay Conrod <jayconrod@google.com> Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Katie Hockman <katie@golang.org>
Diffstat (limited to 'src/testing')
-rw-r--r--src/testing/internal/testdeps/deps.go22
1 files changed, 6 insertions, 16 deletions
diff --git a/src/testing/internal/testdeps/deps.go b/src/testing/internal/testdeps/deps.go
index 3d43170721..1333944d5e 100644
--- a/src/testing/internal/testdeps/deps.go
+++ b/src/testing/internal/testdeps/deps.go
@@ -140,14 +140,9 @@ func (TestDeps) CoordinateFuzzing(timeout time.Duration, parallel int, seed []fu
if timeout > 0 {
ctx, cancel = context.WithTimeout(ctx, timeout)
}
- interruptC := make(chan os.Signal, 1)
- signal.Notify(interruptC, os.Interrupt)
- go func() {
- <-interruptC
- cancel()
- }()
- defer func() { interruptC <- os.Interrupt }()
-
+ ctx, stop := signal.NotifyContext(ctx, os.Interrupt)
+ defer stop()
+ defer cancel()
err := fuzz.CoordinateFuzzing(ctx, parallel, seed, corpusDir, cacheDir)
if err == ctx.Err() {
return nil
@@ -163,14 +158,9 @@ func (TestDeps) RunFuzzWorker(fn func([]byte) error) error {
// If only the coordinator process is interrupted, it tells each worker
// process to stop by closing its "fuzz_in" pipe.
ctx, cancel := context.WithCancel(context.Background())
- interruptC := make(chan os.Signal, 1)
- signal.Notify(interruptC, os.Interrupt)
- go func() {
- <-interruptC
- cancel()
- }()
- defer func() { interruptC <- os.Interrupt }()
-
+ ctx, stop := signal.NotifyContext(ctx, os.Interrupt)
+ defer stop()
+ defer cancel()
err := fuzz.RunFuzzWorker(ctx, fn)
if err == ctx.Err() {
return nil