| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package api
- import (
- "testing"
- config "github.com/OliveTin/OliveTin/internal/config"
- "github.com/OliveTin/OliveTin/internal/executor"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- func TestBuildActiveBindingStates(t *testing.T) {
- cfg := config.DefaultConfig()
- cfg.Actions = []*config.Action{
- {Title: "backup", Shell: "sleep 1", MaxConcurrent: 1},
- {Title: "ping", Shell: "echo ping"},
- }
- cfg.Sanitize()
- ex := executor.DefaultExecutor(cfg)
- ex.RebuildActionMap()
- backupBinding := ex.FindBindingWithNoEntity(cfg.Actions[0])
- pingBinding := ex.FindBindingWithNoEntity(cfg.Actions[1])
- require.NotNil(t, backupBinding)
- require.NotNil(t, pingBinding)
- backupRunning := newAPIQueueLogEntry(backupBinding, true, false)
- backupWaiting := newAPIQueueLogEntry(backupBinding, false, false)
- pingRunning := newAPIQueueLogEntry(pingBinding, true, false)
- states := buildActiveBindingStates([]*executor.InternalLogEntry{
- backupRunning,
- backupWaiting,
- pingRunning,
- })
- backupState, ok := states[backupBinding.ID]
- require.True(t, ok)
- assert.True(t, backupState.hasRunning)
- assert.True(t, backupState.hasQueued)
- pingState, ok := states[pingBinding.ID]
- require.True(t, ok)
- assert.True(t, pingState.hasRunning)
- assert.False(t, pingState.hasQueued)
- }
- func TestBuildActionIncludesActiveBindingState(t *testing.T) {
- cfg := config.DefaultConfig()
- cfg.Actions = []*config.Action{
- {Title: "backup", Shell: "sleep 1"},
- }
- cfg.Sanitize()
- ex := executor.DefaultExecutor(cfg)
- ex.RebuildActionMap()
- binding := ex.FindBindingWithNoEntity(cfg.Actions[0])
- require.NotNil(t, binding)
- running := newAPIQueueLogEntry(binding, true, false)
- queued := newAPIQueueLogEntry(binding, false, false)
- ex.SetLog(running.ExecutionTrackingID, running)
- ex.SetLog(queued.ExecutionTrackingID, queued)
- rr := &DashboardRenderRequest{
- cfg: cfg,
- ex: ex,
- }
- populateActiveBindingStates(rr)
- action := buildAction(binding, rr)
- require.NotNil(t, action)
- assert.True(t, action.HasRunningInstance)
- assert.True(t, action.HasQueuedInstance)
- }
- func TestBuildActiveBindingStatesIgnoresFinished(t *testing.T) {
- cfg := config.DefaultConfig()
- cfg.Actions = []*config.Action{{Title: "backup", Shell: "sleep 1"}}
- cfg.Sanitize()
- ex := executor.DefaultExecutor(cfg)
- ex.RebuildActionMap()
- binding := ex.FindBindingWithNoEntity(cfg.Actions[0])
- require.NotNil(t, binding)
- finished := newAPIQueueLogEntry(binding, true, true)
- states := buildActiveBindingStates([]*executor.InternalLogEntry{finished})
- assert.Empty(t, states)
- }
|