diff options
| author | Jay Conrod <jayconrod@google.com> | 2021-02-09 10:30:02 -0500 |
|---|---|---|
| committer | Jay Conrod <jayconrod@google.com> | 2021-02-10 18:21:02 +0000 |
| commit | b9c88eaab915874bc004f579940b10fe48bba36b (patch) | |
| tree | e1cf4c7b9700c794a45fbd057712a62da11b71f1 /src/testing | |
| parent | 9b967d12a9f1a13c79104b834a17c4356585cc7a (diff) | |
| download | go-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.go | 22 |
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 |
