| // Copyright 2025 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package main | |
| import "os" | |
| // The number of times the main (profiling) goroutine should yield | |
| // in order to allow the leaking goroutines to get stuck. | |
| const yieldCount = 10 | |
| var cmds = map[string]func(){} | |
| func register(name string, f func()) { | |
| if cmds[name] != nil { | |
| panic("duplicate registration: " + name) | |
| } | |
| cmds[name] = f | |
| } | |
| func registerInit(name string, f func()) { | |
| if len(os.Args) >= 2 && os.Args[1] == name { | |
| f() | |
| } | |
| } | |
| func main() { | |
| if len(os.Args) < 2 { | |
| println("usage: " + os.Args[0] + " name-of-test") | |
| return | |
| } | |
| f := cmds[os.Args[1]] | |
| if f == nil { | |
| println("unknown function: " + os.Args[1]) | |
| return | |
| } | |
| f() | |
| } | |