diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-10-31 00:59:47 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2015-10-31 00:59:47 +0000 |
commit | af146490bb04205107cb23e301ec7a8ff927b5fc (patch) | |
tree | 13beeaed3698c61903fe93fb1ce70bd9b18d4e7f /libgo/go/time/sleep_test.go | |
parent | 725e1be3406315d9bcc8195d7eef0a7082b3c7cc (diff) | |
download | gcc-af146490bb04205107cb23e301ec7a8ff927b5fc.zip gcc-af146490bb04205107cb23e301ec7a8ff927b5fc.tar.gz gcc-af146490bb04205107cb23e301ec7a8ff927b5fc.tar.bz2 |
runtime: Remove now unnecessary pad field from ParFor.
It is not needed due to the removal of the ctx field.
Reviewed-on: https://go-review.googlesource.com/16525
From-SVN: r229616
Diffstat (limited to 'libgo/go/time/sleep_test.go')
-rw-r--r-- | libgo/go/time/sleep_test.go | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/libgo/go/time/sleep_test.go b/libgo/go/time/sleep_test.go index c21eb99..c286bd0 100644 --- a/libgo/go/time/sleep_test.go +++ b/libgo/go/time/sleep_test.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "runtime" - "sort" "strings" "sync" "sync/atomic" @@ -224,10 +223,11 @@ func TestAfterStop(t *testing.T) { func TestAfterQueuing(t *testing.T) { // This test flakes out on some systems, // so we'll try it a few times before declaring it a failure. - const attempts = 3 + const attempts = 5 err := errors.New("!=nil") for i := 0; i < attempts && err != nil; i++ { - if err = testAfterQueuing(t); err != nil { + delta := Duration(20+i*50) * Millisecond + if err = testAfterQueuing(t, delta); err != nil { t.Logf("attempt %v failed: %v", i, err) } } @@ -248,11 +248,7 @@ func await(slot int, result chan<- afterResult, ac <-chan Time) { result <- afterResult{slot, <-ac} } -func testAfterQueuing(t *testing.T) error { - Delta := 100 * Millisecond - if testing.Short() { - Delta = 20 * Millisecond - } +func testAfterQueuing(t *testing.T, delta Duration) error { // make the result channel buffered because we don't want // to depend on channel queueing semantics that might // possibly change in the future. @@ -260,18 +256,25 @@ func testAfterQueuing(t *testing.T) error { t0 := Now() for _, slot := range slots { - go await(slot, result, After(Duration(slot)*Delta)) + go await(slot, result, After(Duration(slot)*delta)) } - sort.Ints(slots) - for _, slot := range slots { + var order []int + var times []Time + for range slots { r := <-result - if r.slot != slot { - return fmt.Errorf("after slot %d, expected %d", r.slot, slot) + order = append(order, r.slot) + times = append(times, r.t) + } + for i := range order { + if i > 0 && order[i] < order[i-1] { + return fmt.Errorf("After calls returned out of order: %v", order) } - dt := r.t.Sub(t0) - target := Duration(slot) * Delta - if dt < target-Delta/2 || dt > target+Delta*10 { - return fmt.Errorf("After(%s) arrived at %s, expected [%s,%s]", target, dt, target-Delta/2, target+Delta*10) + } + for i, t := range times { + dt := t.Sub(t0) + target := Duration(order[i]) * delta + if dt < target-delta/2 || dt > target+delta*10 { + return fmt.Errorf("After(%s) arrived at %s, expected [%s,%s]", target, dt, target-delta/2, target+delta*10) } } return nil @@ -384,6 +387,10 @@ func TestOverflowSleep(t *testing.T) { // Test that a panic while deleting a timer does not leave // the timers mutex held, deadlocking a ticker.Stop in a defer. func TestIssue5745(t *testing.T) { + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm" { + t.Skipf("skipping on %s/%s, see issue 10043", runtime.GOOS, runtime.GOARCH) + } + ticker := NewTicker(Hour) defer func() { // would deadlock here before the fix due to |