Files
osmedeus/internal/core/workflow_test.go
T
j3ssie f5840272c5 feat: add run cancellation, event enhancements, and performance optimizations
Major features:
- Add run registry for tracking active runs with PID management
- Add API-based run cancellation with process termination
- Add event trigger input vars syntax for multi-variable extraction
- Add filter_functions with utility function support in triggers
- Add event envelope injection for full event context in workflows
- Add write coordinator for batched database operations

API improvements:
- Add logout endpoint and diffs endpoints for assets/vulnerabilities
- Add step-results listing endpoint
- Update schedule model with target, workspace, params fields
- Change run_id to run_uuid across API responses

Performance:
- Add compiled JS program caching for 60-80% faster loop conditions
- Add parallel shard rendering for 20-40% faster workflow startup
- Add memory-mapped I/O for large file line counting
- Add efficient output buffer combining in runners
- Add mtime-based cache invalidation for workflow loader

Other changes:
- Rename trigger field from trigger to triggers in workflow YAML
- Disable pongo2 HTML autoescape for shell command templates
- Update JWT expiration default to 1440 minutes (1 day)
- Change CORS default to reflect-origin for credentials support
- Add source_type field to events (run, eval, api)
- Skip copying core Unix tools to external-binaries
2026-01-24 01:11:33 +08:00

135 lines
3.0 KiB
Go

package core
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestGetCronTriggers(t *testing.T) {
tests := []struct {
name string
workflow Workflow
want int
}{
{
name: "no triggers",
workflow: Workflow{
Name: "test",
Triggers: nil,
},
want: 0,
},
{
name: "one enabled cron trigger",
workflow: Workflow{
Name: "test",
Triggers: []Trigger{
{Name: "cron-1", On: TriggerCron, Schedule: "* * * * *", Enabled: true},
},
},
want: 1,
},
{
name: "one disabled cron trigger",
workflow: Workflow{
Name: "test",
Triggers: []Trigger{
{Name: "cron-1", On: TriggerCron, Schedule: "* * * * *", Enabled: false},
},
},
want: 0,
},
{
name: "mixed triggers - only enabled cron returned",
workflow: Workflow{
Name: "test",
Triggers: []Trigger{
{Name: "cron-enabled", On: TriggerCron, Schedule: "0 0 * * *", Enabled: true},
{Name: "cron-disabled", On: TriggerCron, Schedule: "0 1 * * *", Enabled: false},
{Name: "event-enabled", On: TriggerEvent, Enabled: true},
{Name: "manual", On: TriggerManual, Enabled: true},
},
},
want: 1,
},
{
name: "multiple enabled cron triggers",
workflow: Workflow{
Name: "test",
Triggers: []Trigger{
{Name: "hourly", On: TriggerCron, Schedule: "0 * * * *", Enabled: true},
{Name: "daily", On: TriggerCron, Schedule: "0 0 * * *", Enabled: true},
{Name: "weekly", On: TriggerCron, Schedule: "0 0 * * 0", Enabled: true},
},
},
want: 3,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.workflow.GetCronTriggers()
assert.Equal(t, tt.want, len(got))
// Verify all returned triggers are cron and enabled
for _, trigger := range got {
assert.Equal(t, TriggerCron, trigger.On)
assert.True(t, trigger.Enabled)
}
})
}
}
func TestGetEventTriggers(t *testing.T) {
tests := []struct {
name string
workflow Workflow
want int
}{
{
name: "no triggers",
workflow: Workflow{
Name: "test",
Triggers: nil,
},
want: 0,
},
{
name: "one enabled event trigger",
workflow: Workflow{
Name: "test",
Triggers: []Trigger{
{Name: "event-1", On: TriggerEvent, Enabled: true},
},
},
want: 1,
},
{
name: "mixed triggers - only enabled events returned",
workflow: Workflow{
Name: "test",
Triggers: []Trigger{
{Name: "cron-1", On: TriggerCron, Schedule: "* * * * *", Enabled: true},
{Name: "event-enabled", On: TriggerEvent, Enabled: true},
{Name: "event-disabled", On: TriggerEvent, Enabled: false},
},
},
want: 1,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := tt.workflow.GetEventTriggers()
assert.Equal(t, tt.want, len(got))
// Verify all returned triggers are event and enabled
for _, trigger := range got {
assert.Equal(t, TriggerEvent, trigger.On)
assert.True(t, trigger.Enabled)
}
})
}
}