diff --git a/e2e/integration_test.go b/e2e/integration_test.go index b936db0..9b05e5f 100644 --- a/e2e/integration_test.go +++ b/e2e/integration_test.go @@ -100,8 +100,12 @@ func runServiceCheck(t *testing.T, e *e2e.Extension, config serviceCheckConfig) t.Helper() start := time.Now() action, err := e.RunAction("com.steadybit.extension_stackstate.service.check", serviceCheckTarget(), config, &action_kit_api.ExecutionContext{}) - require.NoError(t, err) defer func() { _ = action.Cancel() }() + // A deviating state present from the very beginning now fails at RunAction() itself, since + // Start() runs the check immediately, rather than only showing up once Status() starts polling. + if err != nil { + return time.Since(start), err + } err = action.Wait() return time.Since(start), err } diff --git a/extservice/service_check.go b/extservice/service_check.go index cfd05af..880cf32 100644 --- a/extservice/service_check.go +++ b/extservice/service_check.go @@ -210,8 +210,17 @@ func (m *ServiceStatusCheckAction) Prepare(_ context.Context, state *ServiceStat return nil, nil } -func (m *ServiceStatusCheckAction) Start(_ context.Context, _ *ServiceStatusCheckState) (*action_kit_api.StartResult, error) { - return nil, nil +func (m *ServiceStatusCheckAction) Start(ctx context.Context, state *ServiceStatusCheckState) (*action_kit_api.StartResult, error) { + statusResult, err := MonitorStatusCheckStatus(ctx, state, Client) + if statusResult == nil { + return nil, err + } + return &action_kit_api.StartResult{ + Artifacts: statusResult.Artifacts, + Error: statusResult.Error, + Messages: statusResult.Messages, + Metrics: statusResult.Metrics, + }, err } func (m *ServiceStatusCheckAction) Status(ctx context.Context, state *ServiceStatusCheckState) (*action_kit_api.StatusResult, error) {