Files
grafana/pkg/tsdb/jaeger/jaeger_test.go
Gareth Dawson 977e923555 Jaeger: Migrate "search" query type to backend (#103399)
* jaeger backend migration

* move processing to JaegerClient.Search

* fix upload query error source type

* suggestions

* lint

* fix link to traceid query

* fix tests

* fix tests

* use consistent types

* add tests for TransformSearchResponse fn

* test search function

* fix filtering using tags

* suggestion

* remove unnecessary arguments

* use logfmt parser for tags

* test

* test

* use logfmt for query tags

* update

* go fmt

* run backend for all queryTypes

* run make update-workspace

* assign owner to logfmt pkg in go.mod

* apply suggestions

* update tests

* trigger workflows?
2025-05-07 09:34:04 +01:00

97 lines
2.2 KiB
Go

package jaeger
import (
"context"
"encoding/json"
"testing"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/httpclient"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDataSourceInstanceSettings_TraceIdTimeEnabled(t *testing.T) {
tests := []struct {
name string
jsonData string
expectedEnabled bool
expectError bool
}{
{
name: "traceIdTimeParams enabled",
jsonData: `{
"traceIdTimeParams": {
"enabled": true
}
}`,
expectedEnabled: true,
expectError: false,
},
{
name: "traceIdTimeParams disabled",
jsonData: `{
"traceIdTimeParams": {
"enabled": false
}
}`,
expectedEnabled: false,
expectError: false,
},
{
name: "traceIdTimeParams not specified",
jsonData: `{}`,
expectedEnabled: false,
expectError: false,
},
{
name: "traceIdTimeParams without enabled",
jsonData: `{"traceIdTimeParams":{}}`,
expectedEnabled: false,
expectError: false,
},
{
name: "Invalid JSON",
jsonData: `{invalid json`,
expectedEnabled: false,
expectError: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Create instance settings
settings := backend.DataSourceInstanceSettings{
JSONData: []byte(tt.jsonData),
URL: "http://localhost:16686",
}
// Create instance factory
factory := newInstanceSettings(httpclient.NewProvider())
instance, err := factory(context.Background(), settings)
if tt.expectError {
assert.Error(t, err)
return
}
require.NoError(t, err)
require.NotNil(t, instance)
// Get the datasource info
dsInfo, ok := instance.(*datasourceInfo)
require.True(t, ok)
require.NotNil(t, dsInfo)
// Verify the client's traceIdTimeEnabled parameter
var jsonData SettingsJSONData
if err := json.Unmarshal(dsInfo.JaegerClient.settings.JSONData, &jsonData); err != nil {
t.Fatalf("failed to parse settings JSON data: %v", err)
}
assert.Equal(t, tt.expectedEnabled, jsonData.TraceIdTimeParams.Enabled)
})
}
}