diff options
author | Michael Matloob <matloob@golang.org> | 2024-05-01 14:17:24 -0400 |
---|---|---|
committer | Michael Matloob <matloob@golang.org> | 2024-05-08 16:49:53 +0000 |
commit | ad27916c24860576a2aec4cff6a295c340aafe3c (patch) | |
tree | 83990eb5cda5825c1b49615590375c5082bb0ec4 | |
parent | 328aa9e39f3a5da785daa015d673f19ded9e13ae (diff) | |
download | go-ad27916c24860576a2aec4cff6a295c340aafe3c.tar.gz go-ad27916c24860576a2aec4cff6a295c340aafe3c.zip |
cmd/go: rename flag counters and add buildmode values separately
Rename the subcommand flag counter names from
go/flag/<subcommand>/<flagname> to go/<subcommand>/flag/<flagname>.
Also remove the special case that adds counters for buildmode flag
values and instead add an additional counter for the flag values.
The new counter has the form go/<subcommand>/flag/buildmode:<flagvalue>.
We use a new CountFlagValue function that's been added to the
internal/telemetry package to help with this.
Finally add the go/invocations counter
Change-Id: I995b6b0009ba0f58faeb3e2a75f3b137e4136209
Reviewed-on: https://go-review.googlesource.com/c/go/+/583917
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Robert Findley <rfindley@google.com>
-rw-r--r-- | src/cmd/go/main.go | 12 | ||||
-rw-r--r-- | src/cmd/internal/telemetry/telemetry.go | 15 | ||||
-rw-r--r-- | src/cmd/internal/telemetry/telemetry_bootstrap.go | 13 |
3 files changed, 26 insertions, 14 deletions
diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go index 86f3c65a92..72656dd903 100644 --- a/src/cmd/go/main.go +++ b/src/cmd/go/main.go @@ -98,6 +98,7 @@ func main() { flag.Usage = base.Usage flag.Parse() + telemetry.Inc("go/invocations") telemetry.CountFlags("go/flag:", *flag.CommandLine) args := flag.Args() @@ -252,14 +253,9 @@ func invoke(cmd *base.Command, args []string) { } else { base.SetFromGOFLAGS(&cmd.Flag) cmd.Flag.Parse(args[1:]) - prefix := "go/flag:" + strings.ReplaceAll(cfg.CmdName, " ", "-") + "-" - cmd.Flag.Visit(func(f *flag.Flag) { - counterName := prefix + f.Name - if f.Name == "buildmode" { // Special case: there is a limited set of buildmode values - counterName += "-" + f.Value.String() - } - telemetry.Inc(counterName) - }) + flagCounterPrefix := "go/" + strings.ReplaceAll(cfg.CmdName, " ", "-") + "/flag" + telemetry.CountFlags(flagCounterPrefix+":", cmd.Flag) + telemetry.CountFlagValue(flagCounterPrefix+"/", cmd.Flag, "buildmode") args = cmd.Flag.Args() } diff --git a/src/cmd/internal/telemetry/telemetry.go b/src/cmd/internal/telemetry/telemetry.go index d31f0eeff3..2420a07708 100644 --- a/src/cmd/internal/telemetry/telemetry.go +++ b/src/cmd/internal/telemetry/telemetry.go @@ -59,3 +59,18 @@ func NewStackCounter(name string, depth int) *counter.StackCounter { func CountFlags(prefix string, flagSet flag.FlagSet) { counter.CountFlags(prefix, flagSet) } + +// CountFlagValue creates a counter for the flag value +// if it is set and increments the counter. The name of the +// counter is the concatenation of prefix, the flagName, ":", +// and value.String() for the flag's value. +func CountFlagValue(prefix string, flagSet flag.FlagSet, flagName string) { + // TODO(matloob): Maybe pass in a list of flagNames if we end up counting + // values for more than one? + // TODO(matloob): Add this to x/telemetry? + flagSet.Visit(func(f *flag.Flag) { + if f.Name == flagName { + counter.New(prefix + f.Name + ":" + f.Value.String()).Inc() + } + }) +} diff --git a/src/cmd/internal/telemetry/telemetry_bootstrap.go b/src/cmd/internal/telemetry/telemetry_bootstrap.go index 2e127bec28..01549b6970 100644 --- a/src/cmd/internal/telemetry/telemetry_bootstrap.go +++ b/src/cmd/internal/telemetry/telemetry_bootstrap.go @@ -12,9 +12,10 @@ type dummyCounter struct{} func (dc dummyCounter) Inc() {} -func Start() {} -func StartWithUpload() {} -func Inc(name string) {} -func NewCounter(name string) dummyCounter { return dummyCounter{} } -func NewStackCounter(name string, depth int) dummyCounter { return dummyCounter{} } -func CountFlags(name string, flagSet flag.FlagSet) {} +func Start() {} +func StartWithUpload() {} +func Inc(name string) {} +func NewCounter(name string) dummyCounter { return dummyCounter{} } +func NewStackCounter(name string, depth int) dummyCounter { return dummyCounter{} } +func CountFlags(name string, flagSet flag.FlagSet) {} +func CountFlagValue(prefix string, flagSet flag.FlagSet, flagName string) {} |