From: Jay Conrod Date: Tue, 9 Feb 2021 15:30:02 +0000 (-0500) Subject: [dev.fuzz] testing/internal/testdeps: use signal.NotifyContext X-Git-Tag: go1.18beta1~1282^2~98 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b9c88eaab915874bc004f579940b10fe48bba36b;p=gostls13.git [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 Run-TryBot: Jay Conrod TryBot-Result: Go Bot Reviewed-by: Katie Hockman --- 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