]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: remove VDSO fallback test and benchmarks
authorIan Lance Taylor <iant@golang.org>
Wed, 1 May 2019 04:06:01 +0000 (21:06 -0700)
committerIan Lance Taylor <iant@golang.org>
Mon, 27 May 2019 17:58:39 +0000 (17:58 +0000)
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>
src/runtime/vdso_linux_test.go [deleted file]

diff --git a/src/runtime/vdso_linux_test.go b/src/runtime/vdso_linux_test.go
deleted file mode 100644 (file)
index ad083c6..0000000
+++ /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()
-       }
-}