]> Cypherpunks.ru repositories - gostls13.git/blob - src/internal/trace/v2/testdata/testprog/annotations.go
internal/trace: implement goroutine analysis for v2 traces
[gostls13.git] / src / internal / trace / v2 / testdata / testprog / annotations.go
1 // Copyright 2023 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // Tests user tasks, regions, and logging.
6
7 //go:build ignore
8
9 package main
10
11 import (
12         "context"
13         "log"
14         "os"
15         "runtime/trace"
16         "sync"
17 )
18
19 func main() {
20         bgctx, cancel := context.WithCancel(context.Background())
21         defer cancel()
22
23         // Create a pre-existing region. This won't end up in the trace.
24         preExistingRegion := trace.StartRegion(bgctx, "pre-existing region")
25
26         // Start tracing.
27         if err := trace.Start(os.Stdout); err != nil {
28                 log.Fatalf("failed to start tracing: %v", err)
29         }
30
31         // Beginning of traced execution.
32         var wg sync.WaitGroup
33         ctx, task := trace.NewTask(bgctx, "task0") // EvUserTaskCreate("task0")
34         trace.StartRegion(ctx, "task0 region")
35
36         wg.Add(1)
37         go func() {
38                 defer wg.Done()
39                 defer task.End() // EvUserTaskEnd("task0")
40
41                 trace.StartRegion(ctx, "unended region")
42
43                 trace.WithRegion(ctx, "region0", func() {
44                         // EvUserRegionBegin("region0", start)
45                         trace.WithRegion(ctx, "region1", func() {
46                                 trace.Log(ctx, "key0", "0123456789abcdef") // EvUserLog("task0", "key0", "0....f")
47                         })
48                         // EvUserRegionEnd("region0", end)
49                 })
50         }()
51         wg.Wait()
52
53         preExistingRegion.End()
54         postExistingRegion := trace.StartRegion(bgctx, "post-existing region")
55
56         // End of traced execution.
57         trace.Stop()
58
59         postExistingRegion.End()
60 }