mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 21:47:20 +00:00
64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
package worker
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/fleetdm/fleet/v4/server/fleet"
|
|
"github.com/fleetdm/fleet/v4/server/mock"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBatchActivitiesRun(t *testing.T) {
|
|
ctx := context.Background()
|
|
ds := new(mock.Store)
|
|
|
|
var canceled bool
|
|
var status fleet.ScheduledBatchExecutionStatus = fleet.ScheduledBatchExecutionScheduled
|
|
|
|
ds.GetBatchActivityFunc = func(ctx context.Context, executionID string) (*fleet.BatchActivity, error) {
|
|
return &fleet.BatchActivity{
|
|
BatchExecutionID: executionID,
|
|
Status: status,
|
|
Canceled: canceled,
|
|
}, nil
|
|
}
|
|
|
|
var recvExecID string
|
|
ds.RunScheduledBatchActivityFunc = func(ctx context.Context, executionID string) error {
|
|
recvExecID = executionID
|
|
return nil
|
|
}
|
|
|
|
batchWorker := &BatchScripts{
|
|
Datastore: ds,
|
|
}
|
|
|
|
err := batchWorker.Run(ctx, json.RawMessage(`{"execution_id": "abc"}`))
|
|
require.NoError(t, err)
|
|
require.Equal(t, "abc", recvExecID)
|
|
require.True(t, ds.GetBatchActivityFuncInvoked)
|
|
require.True(t, ds.RunScheduledBatchActivityFuncInvoked)
|
|
|
|
// Job is already started
|
|
ds.GetBatchActivityFuncInvoked = false
|
|
ds.RunScheduledBatchActivityFuncInvoked = false
|
|
status = fleet.ScheduledBatchExecutionStarted
|
|
|
|
err = batchWorker.Run(ctx, json.RawMessage(`{"execution_id": "abc"}`))
|
|
require.NoError(t, err)
|
|
require.True(t, ds.GetBatchActivityFuncInvoked)
|
|
require.False(t, ds.RunScheduledBatchActivityFuncInvoked)
|
|
|
|
// Job was canceled
|
|
ds.GetBatchActivityFuncInvoked = false
|
|
ds.RunScheduledBatchActivityFuncInvoked = false
|
|
status = fleet.ScheduledBatchExecutionScheduled
|
|
canceled = true
|
|
|
|
err = batchWorker.Run(ctx, json.RawMessage(`{"execution_id": "abc"}`))
|
|
require.NoError(t, err)
|
|
require.True(t, ds.GetBatchActivityFuncInvoked)
|
|
require.False(t, ds.RunScheduledBatchActivityFuncInvoked)
|
|
}
|