diff options
| author | Ian Lance Taylor <iant@golang.org> | 2019-04-30 21:06:01 -0700 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2019-05-27 17:58:39 +0000 |
| commit | 1531192272dfdebc61050a8dafa626ff4b36b3a4 (patch) | |
| tree | 0aa06e1e8bb19d77f20e8580c3d7479fd82c6f00 /src | |
| parent | d97bd5d07ac4e7b342053b335428ff9c97212f9f (diff) | |
| download | go-1531192272dfdebc61050a8dafa626ff4b36b3a4.tar.xz | |
runtime: remove VDSO fallback test and benchmarks
These tests assume that it is OK to switch between time implementations,
but the clock_gettime call uses CLOCK_MONOTONIC and the fallback call,
gettimeofday, uses CLOCK_REALTIME. Disabling the clock_gettime call means
that calls to nanotime will start returning very different values.
This breaks the new timer code, which assumes that nanotime will return
a consistently increasing value.
This test is not very useful in any case as it doesn't check the results.
Removing this file also removes BenchmarkTimeNow, which is a duplicate
of BenchmarkNow in the time package.
Updates #27707
Fixes #32109
Change-Id: I6a884af07f75822d724193c5eed94742f524f07d
Reviewed-on: https://go-review.googlesource.com/c/go/+/174679
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/runtime/vdso_linux_test.go | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/src/runtime/vdso_linux_test.go b/src/runtime/vdso_linux_test.go deleted file mode 100644 index ad083c61b4..0000000000 --- a/src/runtime/vdso_linux_test.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux -// +build 386 amd64 arm arm64 ppc64 ppc64le - -package runtime_test - -import ( - "testing" - "time" - _ "unsafe" -) - -// These tests are a little risky because they overwrite the vdsoClockgettimeSym value. -// It's normally initialized at startup and remains unchanged after that. - -//go:linkname vdsoClockgettimeSym runtime.vdsoClockgettimeSym -var vdsoClockgettimeSym uintptr - -func TestClockVDSOAndFallbackPaths(t *testing.T) { - // Check that we can call walltime() and nanotime() with and without their (1st) fast-paths. - // This just checks that fast and fallback paths can be called, rather than testing their - // results. - // - // Call them indirectly via time.Now(), so we don't need auxiliary .s files to allow us to - // use go:linkname to refer to the functions directly. - - save := vdsoClockgettimeSym - if save == 0 { - t.Log("vdsoClockgettime symbol not found; fallback path will be used by default") - } - - // Call with fast-path enabled (if vDSO symbol found at startup) - time.Now() - - // Call with fast-path disabled - vdsoClockgettimeSym = 0 - time.Now() - vdsoClockgettimeSym = save -} - -func BenchmarkClockVDSOAndFallbackPaths(b *testing.B) { - run := func(b *testing.B) { - for i := 0; i < b.N; i++ { - // Call via time.Now() - see comment in test above. - time.Now() - } - } - - save := vdsoClockgettimeSym - b.Run("vDSO", run) - vdsoClockgettimeSym = 0 - b.Run("Fallback", run) - vdsoClockgettimeSym = save -} - -func BenchmarkTimeNow(b *testing.B) { - for i := 0; i < b.N; i++ { - time.Now() - } -} |
