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
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"testing"
|
"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) {
|
func writeGoFile(t *testing.T, dir, pkg, src string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user