You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
semconvkit: add invariant test for histogram-exclusion rule (#8370)
Fixes #8353
This commit is contained in:
@@ -4,8 +4,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -42,6 +44,45 @@ func errorType(err error) {}
|
||||
}
|
||||
}
|
||||
|
||||
// TestNoInvalidObservableHistogramTypes asserts that the semconv code
|
||||
// generator never emits types containing "HistogramObservable" or
|
||||
// "ObservableObservable", which would indicate the histogram-exclusion
|
||||
// rule in metric.go.j2 was accidentally removed or bypassed.
|
||||
func TestNoInvalidObservableHistogramTypes(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
semconvDir := filepath.Join("..", "..", "..", "semconv")
|
||||
|
||||
forbidden := [][]byte{
|
||||
[]byte("HistogramObservable"),
|
||||
[]byte("ObservableObservable"),
|
||||
}
|
||||
|
||||
err := filepath.WalkDir(semconvDir, func(path string, d os.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if d.IsDir() || filepath.Base(path) != "metric.go" || !strings.HasSuffix(filepath.Base(filepath.Dir(path)), "conv") {
|
||||
return nil
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, term := range forbidden {
|
||||
if bytes.Contains(data, term) {
|
||||
t.Errorf("%s: contains forbidden substring %q", path, term)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("WalkDir(%q) error = %v", semconvDir, err)
|
||||
}
|
||||
}
|
||||
|
||||
func writeGoFile(t *testing.T, dir, pkg, src string) {
|
||||
t.Helper()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user