Text file
src/cmd/go/testdata/script/test_chatty_parallel_success.txt
1 # Run parallel chatty tests. Assert on CONT lines. This test makes sure that
2 # multiple parallel outputs have the appropriate CONT lines between them.
3 go test -parallel 3 chatty_parallel_test.go -v
4 stdout -count=2 '^=== CONT TestChattyParallel/sub-0\n chatty_parallel_test.go:32: this is sub-0$'
5 stdout -count=2 '^=== CONT TestChattyParallel/sub-1\n chatty_parallel_test.go:32: this is sub-1$'
6 stdout -count=2 '^=== CONT TestChattyParallel/sub-2\n chatty_parallel_test.go:32: this is sub-2$'
7
8 # Run parallel chatty tests with -json. Assert on CONT lines as above - make
9 # sure there are CONT lines before each output line.
10 go test -json -parallel 3 chatty_parallel_test.go -v
11 stdout -count=2 '{"Time":"[0-9TZ:.+-]{20,40}","Action":"output","Package":"command-line-arguments","Test":"TestChattyParallel/sub-0","Output":"=== CONT TestChattyParallel/sub-0\\n"}\n{"Time":"[0-9TZ:.+-]{20,40}","Action":"output","Package":"command-line-arguments","Test":"TestChattyParallel/sub-0","Output":" chatty_parallel_test.go:32: this is sub-0\\n"}'
12 stdout -count=2 '{"Time":"[0-9TZ:.+-]{20,40}","Action":"output","Package":"command-line-arguments","Test":"TestChattyParallel/sub-1","Output":"=== CONT TestChattyParallel/sub-1\\n"}\n{"Time":"[0-9TZ:.+-]{20,40}","Action":"output","Package":"command-line-arguments","Test":"TestChattyParallel/sub-1","Output":" chatty_parallel_test.go:32: this is sub-1\\n"}'
13 stdout -count=2 '{"Time":"[0-9TZ:.+-]{20,40}","Action":"output","Package":"command-line-arguments","Test":"TestChattyParallel/sub-2","Output":"=== CONT TestChattyParallel/sub-2\\n"}\n{"Time":"[0-9TZ:.+-]{20,40}","Action":"output","Package":"command-line-arguments","Test":"TestChattyParallel/sub-2","Output":" chatty_parallel_test.go:32: this is sub-2\\n"}'
14
15 -- chatty_parallel_test.go --
16 package chatty_parallel_test
17
18 import (
19 "testing"
20 "fmt"
21 "flag"
22 )
23
24 // This test ensures the order of CONT lines in parallel chatty tests.
25 func TestChattyParallel(t *testing.T) {
26 t.Parallel()
27
28 // The number of concurrent tests running. This is closely tied to the
29 // -parallel test flag, so we grab it from the flag rather than setting it
30 // to some constant.
31 parallel := flag.Lookup("test.parallel").Value.(flag.Getter).Get().(int)
32
33 // ready is a synchronization mechanism that causes subtests to execute
34 // round robin.
35 ready := make([]chan bool, parallel)
36 for i := range ready {
37 ready[i] = make(chan bool, 1)
38 }
39 ready[0] <- true
40
41 for i := range ready {
42 i := i
43 t.Run(fmt.Sprintf("sub-%d", i), func(t *testing.T) {
44 t.Parallel()
45 for j := 0; j < 2; j++ {
46 <-ready[i]
47 t.Logf("this is sub-%d", i)
48 ready[(i+1)%len(ready)] <- true
49 }
50 })
51 }
52 }
53
View as plain text