mirror of
https://github.com/hanzoai/traces.git
synced 2026-10-30 18:20:41 +00:00
* [Generator] Add DRAIN span_name sanitizer * Fix linter * Fix formatting * Update default manifest * Fix build error in update-fixtures * Remove bad test * Remove misleading comment * Add per-tenant override for drain mode * Do a machines job * Address PR feedback * Address PR review: rename drain_mode config and improve sanitizer - Rename `drain_mode` to `span_name_sanitization` across all config, legacy config, interfaces, and overrides for better user-facing clarity - Add explicit default value "disabled" in RegisterFlagsAndApplyDefaults - Add ValidateSpanNameSanitization function in validation/fields.go - Rename metrics to remove DRAIN reference: `drain_spans_compacted_total` -> `spans_sanitized_total` `post_drain_demand_estimate` -> `post_sanitization_demand_estimate` - Pass configured staleDuration to NewDrainSanitizer instead of hardcoded 15min, consistent with other registry components - Extract "span_name" magic string to labelSpanName constant - Update all tests with new names and signatures * Update manifest * Use empty string as disabled * Update CHANGELOG.md Co-authored-by: Suraj Nath <[email protected]> * Update manifest --------- Co-authored-by: Suraj Nath <[email protected]>
62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/grafana/tempo/pkg/drain"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestFixtures(t *testing.T) {
|
|
files, err := os.ReadDir("..")
|
|
if err != nil {
|
|
t.Fatalf("failed to read testdata directory: %v", err)
|
|
}
|
|
|
|
for _, file := range files {
|
|
if file.IsDir() {
|
|
continue
|
|
}
|
|
if !strings.HasSuffix(file.Name(), ".json") {
|
|
continue
|
|
}
|
|
|
|
t.Run(file.Name(), func(t *testing.T) {
|
|
linesJSON, err := os.ReadFile(filepath.Join("..", file.Name()))
|
|
if err != nil {
|
|
t.Fatalf("failed to read file: %v", err)
|
|
}
|
|
var lines []string
|
|
err = json.Unmarshal(linesJSON, &lines)
|
|
if err != nil {
|
|
t.Fatalf("failed to unmarshal file: %v", err)
|
|
}
|
|
drain := drain.New("test-tenant", drain.DefaultConfig())
|
|
patternMapping := make(map[string]string)
|
|
for _, line := range lines {
|
|
cluster := drain.Train(line)
|
|
if cluster == nil {
|
|
patternMapping[line] = "<nil> (possibly too many tokens)"
|
|
} else {
|
|
patternMapping[line] = cluster.String()
|
|
}
|
|
}
|
|
|
|
expectedBytes, err := os.ReadFile(filepath.Join("..", strings.TrimSuffix(file.Name(), ".json")+".drain"))
|
|
if err != nil {
|
|
t.Fatalf("failed to read file: %v", err)
|
|
}
|
|
var expected TestData
|
|
err = json.Unmarshal(expectedBytes, &expected)
|
|
if err != nil {
|
|
t.Fatalf("failed to unmarshal file: %v", err)
|
|
}
|
|
require.Equal(t, expected.PatternMapping, patternMapping)
|
|
})
|
|
}
|
|
}
|