1
2
3
4
5 package trace_test
6
7 import (
8 "bytes"
9 "flag"
10 . "runtime/trace"
11 "testing"
12 "time"
13 )
14
15 var dumpTraces = flag.Bool("dump-traces", false, "dump traces to a file, even on success")
16
17
18
19
20
21 func TestTraceStartStop(t *testing.T) {
22 if IsEnabled() {
23 t.Skip("skipping because -test.trace is set")
24 }
25 buf := new(bytes.Buffer)
26 if err := Start(buf); err != nil {
27 t.Fatalf("failed to start tracing: %v", err)
28 }
29 Stop()
30 size := buf.Len()
31 if size == 0 {
32 t.Fatalf("trace is empty")
33 }
34 time.Sleep(100 * time.Millisecond)
35 if size != buf.Len() {
36 t.Fatalf("trace writes after stop: %v -> %v", size, buf.Len())
37 }
38 }
39
40 func TestTraceDoubleStart(t *testing.T) {
41 if IsEnabled() {
42 t.Skip("skipping because -test.trace is set")
43 }
44 Stop()
45 buf := new(bytes.Buffer)
46 if err := Start(buf); err != nil {
47 t.Fatalf("failed to start tracing: %v", err)
48 }
49 if err := Start(buf); err == nil {
50 t.Fatalf("succeed to start tracing second time")
51 }
52 Stop()
53 Stop()
54 }
55
View as plain text