mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-27 20:42:00 +08:00

* chore(linter): add more linters and deprecate zap * chore(linter): add more linters and deprecate zap * chore(linter): add more linters and deprecate zap * chore(linter): add more linters and deprecate zap
85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
package telemetrymetadata
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"log/slog"
|
|
"regexp"
|
|
"testing"
|
|
|
|
"github.com/SigNoz/signoz/pkg/telemetrylogs"
|
|
"github.com/SigNoz/signoz/pkg/telemetrymetrics"
|
|
"github.com/SigNoz/signoz/pkg/telemetrystore"
|
|
"github.com/SigNoz/signoz/pkg/telemetrystore/telemetrystoretest"
|
|
"github.com/SigNoz/signoz/pkg/telemetrytraces"
|
|
"github.com/SigNoz/signoz/pkg/types/telemetrytypes"
|
|
cmock "github.com/srikanthccv/ClickHouse-go-mock"
|
|
)
|
|
|
|
type regexMatcher struct {
|
|
}
|
|
|
|
func (m *regexMatcher) Match(expectedSQL, actualSQL string) error {
|
|
re, err := regexp.Compile(expectedSQL)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if !re.MatchString(actualSQL) {
|
|
return fmt.Errorf("expected query to contain %s, got %s", expectedSQL, actualSQL)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func TestGetKeys(t *testing.T) {
|
|
mockTelemetryStore := telemetrystoretest.New(telemetrystore.Config{}, ®exMatcher{})
|
|
mock := mockTelemetryStore.Mock()
|
|
|
|
metadata := NewTelemetryMetaStore(
|
|
slog.New(slog.NewTextHandler(io.Discard, nil)),
|
|
mockTelemetryStore,
|
|
telemetrytraces.DBName,
|
|
telemetrytraces.TagAttributesV2TableName,
|
|
telemetrytraces.SpanIndexV3TableName,
|
|
telemetrymetrics.DBName,
|
|
telemetrymetrics.AttributesMetadataTableName,
|
|
telemetrylogs.DBName,
|
|
telemetrylogs.LogsV2TableName,
|
|
telemetrylogs.TagAttributesV2TableName,
|
|
DBName,
|
|
AttributesMetadataLocalTableName,
|
|
)
|
|
|
|
rows := cmock.NewRows([]cmock.ColumnType{
|
|
{Name: "statement", Type: "String"},
|
|
}, [][]any{{"CREATE TABLE signoz_traces.signoz_index_v3"}})
|
|
|
|
mock.
|
|
ExpectSelect("SHOW CREATE TABLE signoz_traces.distributed_signoz_index_v3").
|
|
WillReturnRows(rows)
|
|
|
|
query := `SELECT.*`
|
|
|
|
mock.ExpectQuery(query).
|
|
WithArgs("%http.method%", telemetrytypes.FieldContextSpan.TagType(), telemetrytypes.FieldDataTypeString.TagDataType(), 10).
|
|
WillReturnRows(cmock.NewRows([]cmock.ColumnType{
|
|
{Name: "tag_key", Type: "String"},
|
|
{Name: "tag_type", Type: "String"},
|
|
{Name: "tag_data_type", Type: "String"},
|
|
{Name: "priority", Type: "UInt8"},
|
|
}, [][]any{{"http.method", "tag", "String", 1}, {"http.method", "tag", "String", 1}}))
|
|
keys, err := metadata.GetKeys(context.Background(), &telemetrytypes.FieldKeySelector{
|
|
Signal: telemetrytypes.SignalTraces,
|
|
FieldContext: telemetrytypes.FieldContextSpan,
|
|
FieldDataType: telemetrytypes.FieldDataTypeString,
|
|
Name: "http.method",
|
|
Limit: 10,
|
|
})
|
|
|
|
if err != nil {
|
|
t.Fatalf("Failed to get keys: %v", err)
|
|
}
|
|
|
|
t.Logf("Keys: %v", keys)
|
|
}
|