summaryrefslogtreecommitdiff
path: root/src/pkg/time/internal_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/time/internal_test.go')
-rw-r--r--src/pkg/time/internal_test.go59
1 files changed, 0 insertions, 59 deletions
diff --git a/src/pkg/time/internal_test.go b/src/pkg/time/internal_test.go
deleted file mode 100644
index edd523bc8..000000000
--- a/src/pkg/time/internal_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2011 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.
-
-package time
-
-func init() {
- // force US/Pacific for time zone tests
- ForceUSPacificForTesting()
-}
-
-var Interrupt = interrupt
-var DaysIn = daysIn
-
-func empty(arg interface{}, seq uintptr) {}
-
-// Test that a runtimeTimer with a duration so large it overflows
-// does not cause other timers to hang.
-//
-// This test has to be in internal_test.go since it fiddles with
-// unexported data structures.
-func CheckRuntimeTimerOverflow() {
- // We manually create a runtimeTimer to bypass the overflow
- // detection logic in NewTimer: we're testing the underlying
- // runtime.addtimer function.
- r := &runtimeTimer{
- when: runtimeNano() + (1<<63 - 1),
- f: empty,
- arg: nil,
- }
- startTimer(r)
-
- // Start a goroutine that should send on t.C right away.
- t := NewTimer(1)
-
- defer func() {
- // Subsequent tests won't work correctly if we don't stop the
- // overflow timer and kick the timer proc back into service.
- //
- // The timer proc is now sleeping and can only be awoken by
- // adding a timer to the *beginning* of the heap. We can't
- // wake it up by calling NewTimer since other tests may have
- // left timers running that should have expired before ours.
- // Instead we zero the overflow timer duration and start it
- // once more.
- stopTimer(r)
- t.Stop()
- r.when = 0
- startTimer(r)
- }()
-
- // If the test fails, we will hang here until the timeout in the testing package
- // fires, which is 10 minutes. It would be nice to catch the problem sooner,
- // but there is no reliable way to guarantee that timerproc schedules without
- // doing something involving timerproc itself. Previous failed attempts have
- // tried calling runtime.Gosched and runtime.GC, but neither is reliable.
- // So we fall back to hope: We hope we don't hang here.
- <-t.C
-}