diff options
author | Austin Clements <austin@google.com> | 2019-04-25 14:10:29 -0400 |
---|---|---|
committer | Austin Clements <austin@google.com> | 2019-11-02 21:51:23 +0000 |
commit | 7955ecebfc85851d43913f9358fa5f6a7bbb7c59 (patch) | |
tree | 2e03ab5bcb7c94d53871ee776e9c7aea775142b6 /src/runtime/proc_test.go | |
parent | 177a36a5dc29854489825e8113ecb2cbb7070690 (diff) | |
download | go-7955ecebfc85851d43913f9358fa5f6a7bbb7c59.tar.gz go-7955ecebfc85851d43913f9358fa5f6a7bbb7c59.zip |
runtime: add a test for asynchronous safe points
This adds a test of preempting a loop containing no synchronous safe
points for STW and stack scanning.
We couldn't add this test earlier because it requires scheduler, STW,
and stack scanning preemption to all be working.
For #10958, #24543.
Change-Id: I73292db78ca3d14aab11bdafd26d03986920ef0a
Reviewed-on: https://go-review.googlesource.com/c/go/+/201777
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/runtime/proc_test.go')
-rw-r--r-- | src/runtime/proc_test.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/runtime/proc_test.go b/src/runtime/proc_test.go index 9b80ce31e5..acee7a1819 100644 --- a/src/runtime/proc_test.go +++ b/src/runtime/proc_test.go @@ -356,6 +356,17 @@ func TestPreemptionGC(t *testing.T) { atomic.StoreUint32(&stop, 1) } +func TestAsyncPreempt(t *testing.T) { + if !runtime.PreemptMSupported { + t.Skip("asynchronous preemption not supported on this platform") + } + output := runTestProg(t, "testprog", "AsyncPreempt") + want := "OK\n" + if output != want { + t.Fatalf("want %s, got %s\n", want, output) + } +} + func TestGCFairness(t *testing.T) { output := runTestProg(t, "testprog", "GCFairness") want := "OK\n" |