cmd/stacks: match predicates against individual configurations

claimStacks currently concatenates all configurations associated with a
stack before evaluating a predicate. As a result, different terms of a
conjunction may match different configurations. For example, a stack
observed on linux/amd64 and darwin/arm64 incorrectly matches a predicate
requiring linux/arm64.

Evaluate the predicate separately for each stack/configuration pair, and
claim the stack if any individual configuration matches. Add coverage
for cross-configuration combinations.

Fixes golang/go#80660

Change-Id: Ie5200bab1d238dc85ef11c778eb682ce63b348e3
Reviewed-on: https://go-review.googlesource.com/c/telemetry/+/808383
Reviewed-by: race quite <quiterace@gmail.com>
Reviewed-by: Hongxiang Jiang <hxjiang@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
Auto-Submit: Hongxiang Jiang <hxjiang@golang.org>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2 files changed
tree: f6f3205ee43c8bb0884a31483b73b02c923de249
  1. cmd/
  2. config/
  3. counter/
  4. crashmonitor/
  5. godev/
  6. internal/
  7. .dockerignore
  8. .eslintrc.json
  9. .gitattributes
  10. .gitignore
  11. .prettierrc.json
  12. .stylelintrc.json
  13. codereview.cfg
  14. CONTRIBUTING.md
  15. dir.go
  16. doc.go
  17. go.mod
  18. go.sum
  19. LICENSE
  20. mode.go
  21. npm
  22. npx
  23. package-lock.json
  24. package.json
  25. PATENTS
  26. README.md
  27. start.go
  28. start_posix.go
  29. start_test.go
  30. start_windows.go
  31. tsconfig.json
  32. types_alias.go
README.md

Go Telemetry

This repository holds the Go Telemetry server code and libraries, used for hosting telemetry.go.dev and instrumenting Go toolchain programs with opt-in telemetry.

Warning: this repository is intended for use only in tools maintained by the Go team, including tools in the Go distribution and auxiliary tools like gopls or govulncheck. There are no compatibility guarantees for any of the packages here: public APIs will change in breaking ways as the telemetry integration is refined.

Notable Packages

Contributing

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://go.dev/doc/contribute.

The git repository is https://go.googlesource.com/telemetry.

The main issue tracker for the telemetry repository is located at https://go.dev/issues. Prefix your issue with “x/telemetry:” in the subject line, so it is easy to find.

Linting & Formatting

This repository uses eslint to format TS files, stylelint to format CSS files, and prettier to format TS, CSS, Markdown, and YAML files.

See the style guides:

It is encouraged that all TS and CSS code be run through formatters before submitting a change. However, it is not a strict requirement enforced by CI.

Installing npm Dependencies:

  1. Install docker
  2. Run ./npm install

Run ESLint, Stylelint, & Prettier

./npm run all