d0ea82633f
* Jaeger: Migrate Services and Operations to the gRPC Jaeger endpoint (#112384) * add grpc feature toggle * move types into types.go * creates grpc client functions for services and operations * Call grpc services function when feature flag is enabled for health check * remove unnecessary double encoding * check for successful status code before decoding response and return nil in case of successful response * remove duplicate code * use variable * fix error type in testsz * Jaeger: Migrate search and Trace Search calls to use gRPC endpoint (#112610) * move all types into types package except for JagerClient * move all helper functions into utils package * change return type of search function to be frames and add grpc search functionality * fix tests * fix types and the way we check error response from grpc * change trace name and duration unit conversion * fix types and add tests * support queryAttributes * quick limit implementation in post processing * add todo for attributes / tags * make trace functionality ready to support grpc flow * add functions to process search response for a specific trace and create the Trace frame * tests for helper funtions * remove grpc querying for now! * change logic to be able to process and support multiple resource spans * remove logic for gRPC from grpc_client.go * add equivalent fields for logs and references * add tests for grpcTraceResponse function * fix types after merge with main * fix status code checks and return nil for error on successful responses * enable reading through config flag for trace search * create sigle key value type since they are similar for OTLP and non OTLP based formats * reference right type * convert events and links into references and logs * add status code, status message and kind to data frame * fix tests to accomodate new format * remove unused function and add more tests * remove edit flag for jsonc golden test files * add clarifying comment * fix tests and linting * fix golden files for testing * fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * add clarifying comment Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * remove unnecessary logging statement * fix downstream errors --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * use downstreamerrorf where applicable and add missing downstream eror sources. * tests --------- Co-authored-by: ismail simsek <ismailsimsek09@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
98 lines
2.2 KiB
Go
98 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/grafana/grafana/pkg/tsdb/jaeger/types"
|
|
"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 types.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)
|
|
})
|
|
}
|
|
}
|