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.
5 // Regression test for an issue found in development.
7 // The issue is that EvUserTaskEnd events don't carry the
8 // task type with them, so the parser needs to track that
9 // information. But if the parser just tracks the string ID
10 // and not the string itself, that string ID may not be valid
11 // for use in future generations.
17 "internal/trace/v2/event/go122"
18 testgen "internal/trace/v2/internal/testgen/go122"
25 func gen(t *testgen.Trace) {
28 // A running goroutine emits a task begin.
29 b1 := g1.Batch(trace.ThreadID(0), 0)
30 b1.Event("ProcStatus", trace.ProcID(0), go122.ProcRunning)
31 b1.Event("GoStatus", trace.GoID(1), trace.ThreadID(0), go122.GoRunning)
32 b1.Event("UserTaskBegin", trace.TaskID(2), trace.NoTask, "my task", testgen.NoStack)
36 // That same goroutine emits a task end in the following generation.
37 b2 := g2.Batch(trace.ThreadID(0), 5)
38 b2.Event("ProcStatus", trace.ProcID(0), go122.ProcRunning)
39 b2.Event("GoStatus", trace.GoID(1), trace.ThreadID(0), go122.GoRunning)
40 b2.Event("UserTaskEnd", trace.TaskID(2), testgen.NoStack)