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, fmt.Errorf("%v: %w", "failed to check plugin health", backendplugin.ErrHealthCheckFailed)
|
||||
return nil, fmt.Errorf("%w: %w", backendplugin.ErrHealthCheckFailed, err)
|
||||
}
|
||||
|
||||
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) {
|
||||
registry := fakes.NewFakePluginRegistry()
|
||||
p := &plugins.Plugin{
|
||||
|
|
@ -321,6 +379,7 @@ func TestCallResource(t *testing.T) {
|
|||
type fakePluginBackend struct {
|
||||
qdr backend.QueryDataHandlerFunc
|
||||
crr backend.CallResourceHandlerFunc
|
||||
chr backend.CheckHealthHandlerFunc
|
||||
|
||||
backendplugin.Plugin
|
||||
}
|
||||
|
|
@ -343,3 +402,10 @@ func (f *fakePluginBackend) CallResource(ctx context.Context, req *backend.CallR
|
|||
func (f *fakePluginBackend) IsDecommissioned() bool {
|
||||
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