aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2019-04-30 21:06:01 -0700
committerIan Lance Taylor <iant@golang.org>2019-05-27 17:58:39 +0000
commit1531192272dfdebc61050a8dafa626ff4b36b3a4 (patch)
tree0aa06e1e8bb19d77f20e8580c3d7479fd82c6f00 /src
parentd97bd5d07ac4e7b342053b335428ff9c97212f9f (diff)
downloadgo-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.go63
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()
- }
-}