mirror of https://github.com/grafana/grafana.git
parent
0316350d16
commit
62ee1fa05a
|
|
@ -196,7 +196,7 @@ func (s *Service) CheckHealth(ctx context.Context, req *backend.CheckHealthReque
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, fmt.Errorf("%v: %w", "failed to check plugin health", backendplugin.ErrHealthCheckFailed)
|
return nil, fmt.Errorf("%w: %w", backendplugin.ErrHealthCheckFailed, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,64 @@ func TestQueryData(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCheckHealth(t *testing.T) {
|
||||||
|
t.Run("empty plugin registry should return plugin not registered error", func(t *testing.T) {
|
||||||
|
registry := fakes.NewFakePluginRegistry()
|
||||||
|
client := ProvideService(registry, &config.Cfg{})
|
||||||
|
_, err := client.CheckHealth(context.Background(), &backend.CheckHealthRequest{})
|
||||||
|
require.Error(t, err)
|
||||||
|
require.ErrorIs(t, err, backendplugin.ErrPluginNotRegistered)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("non-empty plugin registry", func(t *testing.T) {
|
||||||
|
tcs := []struct {
|
||||||
|
err error
|
||||||
|
expectedError error
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
err: backendplugin.ErrPluginUnavailable,
|
||||||
|
expectedError: backendplugin.ErrPluginUnavailable,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
err: backendplugin.ErrMethodNotImplemented,
|
||||||
|
expectedError: backendplugin.ErrMethodNotImplemented,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
err: errors.New("surprise surprise"),
|
||||||
|
expectedError: backendplugin.ErrHealthCheckFailed,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range tcs {
|
||||||
|
t.Run(fmt.Sprintf("Plugin client error %q should return expected error", tc.err), func(t *testing.T) {
|
||||||
|
registry := fakes.NewFakePluginRegistry()
|
||||||
|
p := &plugins.Plugin{
|
||||||
|
JSONData: plugins.JSONData{
|
||||||
|
ID: "grafana",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
p.RegisterClient(&fakePluginBackend{
|
||||||
|
chr: func(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
|
||||||
|
return nil, tc.err
|
||||||
|
},
|
||||||
|
})
|
||||||
|
err := registry.Add(context.Background(), p)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
client := ProvideService(registry, &config.Cfg{})
|
||||||
|
_, err = client.CheckHealth(context.Background(), &backend.CheckHealthRequest{
|
||||||
|
PluginContext: backend.PluginContext{
|
||||||
|
PluginID: "grafana",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.Error(t, err)
|
||||||
|
require.ErrorIs(t, err, tc.expectedError)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestCallResource(t *testing.T) {
|
func TestCallResource(t *testing.T) {
|
||||||
registry := fakes.NewFakePluginRegistry()
|
registry := fakes.NewFakePluginRegistry()
|
||||||
p := &plugins.Plugin{
|
p := &plugins.Plugin{
|
||||||
|
|
@ -321,6 +379,7 @@ func TestCallResource(t *testing.T) {
|
||||||
type fakePluginBackend struct {
|
type fakePluginBackend struct {
|
||||||
qdr backend.QueryDataHandlerFunc
|
qdr backend.QueryDataHandlerFunc
|
||||||
crr backend.CallResourceHandlerFunc
|
crr backend.CallResourceHandlerFunc
|
||||||
|
chr backend.CheckHealthHandlerFunc
|
||||||
|
|
||||||
backendplugin.Plugin
|
backendplugin.Plugin
|
||||||
}
|
}
|
||||||
|
|
@ -343,3 +402,10 @@ func (f *fakePluginBackend) CallResource(ctx context.Context, req *backend.CallR
|
||||||
func (f *fakePluginBackend) IsDecommissioned() bool {
|
func (f *fakePluginBackend) IsDecommissioned() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *fakePluginBackend) CheckHealth(ctx context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
|
||||||
|
if f.chr != nil {
|
||||||
|
return f.chr(ctx, req)
|
||||||
|
}
|
||||||
|
return &backend.CheckHealthResult{}, nil
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue