aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matloob <matloob@golang.org>2024-05-01 14:17:24 -0400
committerMichael Matloob <matloob@golang.org>2024-05-08 16:49:53 +0000
commitad27916c24860576a2aec4cff6a295c340aafe3c (patch)
tree83990eb5cda5825c1b49615590375c5082bb0ec4
parent328aa9e39f3a5da785daa015d673f19ded9e13ae (diff)
downloadgo-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.go12
-rw-r--r--src/cmd/internal/telemetry/telemetry.go15
-rw-r--r--src/cmd/internal/telemetry/telemetry_bootstrap.go13
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) {}