소스 검색

context: deflake example

Got a trybot failure in
https://storage.googleapis.com/go-build-log/8aee0b8b/linux-amd64_38d0be3e.log

Change-Id: I867a658968a0088c9f3f76ff235816e4179f0bec
Reviewed-on: https://go-review.googlesource.com/47095
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Brad Fitzpatrick 8 년 전
부모
커밋
c81e7f25cb
1개의 변경된 파일5개의 추가작업 그리고 2개의 파일을 삭제
  1. 5 2
      context/withtimeout_test.go

+ 5 - 2
context/withtimeout_test.go

@@ -11,12 +11,15 @@ import (
 	"golang.org/x/net/context"
 	"golang.org/x/net/context"
 )
 )
 
 
+var workComplete <-chan int
+
 func ExampleWithTimeout() {
 func ExampleWithTimeout() {
 	// Pass a context with a timeout to tell a blocking function that it
 	// Pass a context with a timeout to tell a blocking function that it
 	// should abandon its work after the timeout elapses.
 	// should abandon its work after the timeout elapses.
-	ctx, _ := context.WithTimeout(context.Background(), 100*time.Millisecond)
+	ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
 	select {
 	select {
-	case <-time.After(200 * time.Millisecond):
+	case <-workComplete:
+		cancel()
 		fmt.Println("overslept")
 		fmt.Println("overslept")
 	case <-ctx.Done():
 	case <-ctx.Done():
 		fmt.Println(ctx.Err()) // prints "context deadline exceeded"
 		fmt.Println(ctx.Err()) // prints "context deadline exceeded"