Files
ClusterCanvas/service/internal/runner/executor_test.go
T

90 lines
2.2 KiB
Go

package runner
import (
"testing"
"codeberg.org/SquidSE/ClusterCanvas/service/internal/settings"
)
func TestResolveItemLibraryAndLocal(t *testing.T) {
library := []settings.Action{
{
ID: settings.BuiltinActionUptimeID,
Name: "Uptime",
Kind: settings.ActionKindShell,
Body: "uptime",
Env: []settings.ActionEnvVar{},
},
{
ID: settings.BuiltinActionDiskUsageID,
Name: "Disk usage",
Kind: settings.ActionKindShell,
Body: "df -h {{env.MOUNT}}",
Env: []settings.ActionEnvVar{
{Name: "MOUNT", Value: "/"},
{Name: "EXTRA", Value: "lib"},
},
},
}
resolved, err := ResolveItem(settings.NodeActionItem{
ID: "i1",
Source: settings.ActionItemSourceLibrary,
LibraryActionID: settings.BuiltinActionUptimeID,
}, library)
if err != nil {
t.Fatalf("ResolveItem library: %v", err)
}
if resolved.Name != "Uptime" || resolved.Body != "uptime" {
t.Fatalf("resolved = %#v", resolved)
}
merged, err := ResolveItem(settings.NodeActionItem{
ID: "i-disk",
Source: settings.ActionItemSourceLibrary,
LibraryActionID: settings.BuiltinActionDiskUsageID,
Env: []settings.ActionEnvVar{
{Name: "MOUNT", Value: "/data"},
{Name: "ITEM_ONLY", Value: "yes"},
},
}, library)
if err != nil {
t.Fatalf("ResolveItem merge: %v", err)
}
envByName := map[string]string{}
for _, envVar := range merged.Env {
envByName[envVar.Name] = envVar.Value
}
if envByName["MOUNT"] != "/data" {
t.Fatalf("MOUNT override = %#v", merged.Env)
}
if envByName["EXTRA"] != "lib" {
t.Fatalf("library EXTRA lost: %#v", merged.Env)
}
if envByName["ITEM_ONLY"] != "yes" {
t.Fatalf("item env missing: %#v", merged.Env)
}
local, err := ResolveItem(settings.NodeActionItem{
ID: "i2",
Source: settings.ActionItemSourceLocal,
Name: "Echo",
Kind: settings.ActionKindShell,
Body: "echo hi",
Env: []settings.ActionEnvVar{},
}, library)
if err != nil {
t.Fatalf("ResolveItem local: %v", err)
}
if local.Name != "Echo" {
t.Fatalf("local = %#v", local)
}
if _, err := ResolveItem(settings.NodeActionItem{
Source: settings.ActionItemSourceLibrary,
LibraryActionID: "missing",
}, library); err == nil {
t.Fatal("expected missing library action error")
}
}