136 lines
3.2 KiB
Go
136 lines
3.2 KiB
Go
package settings
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestEnsureBuiltinActionsAddsMemoryAndUpdatesDisk(t *testing.T) {
|
|
now := time.Now().UTC()
|
|
store := ActionStore{
|
|
Actions: []Action{
|
|
{
|
|
ID: BuiltinActionUptimeID,
|
|
Name: "Uptime",
|
|
Kind: ActionKindShell,
|
|
Body: "uptime",
|
|
Env: []ActionEnvVar{},
|
|
Builtin: true,
|
|
CreatedAt: now,
|
|
UpdatedAt: now,
|
|
},
|
|
{
|
|
ID: BuiltinActionDiskUsageID,
|
|
Name: "Disk usage",
|
|
Kind: ActionKindShell,
|
|
Body: "df -h",
|
|
Env: []ActionEnvVar{},
|
|
Builtin: true,
|
|
CreatedAt: now,
|
|
UpdatedAt: now,
|
|
},
|
|
{
|
|
ID: BuiltinActionSysInfoID,
|
|
Name: "System info",
|
|
Kind: ActionKindScript,
|
|
Body: "uname -a",
|
|
Env: []ActionEnvVar{},
|
|
Builtin: true,
|
|
CreatedAt: now,
|
|
UpdatedAt: now,
|
|
},
|
|
{
|
|
ID: "custom-1",
|
|
Name: "Custom",
|
|
Kind: ActionKindShell,
|
|
Body: "echo hi",
|
|
Env: []ActionEnvVar{},
|
|
Builtin: false,
|
|
CreatedAt: now,
|
|
UpdatedAt: now,
|
|
},
|
|
},
|
|
}
|
|
|
|
updated, changed := EnsureBuiltinActions(store)
|
|
if !changed {
|
|
t.Fatal("expected changes")
|
|
}
|
|
|
|
foundMemory := false
|
|
foundCustom := false
|
|
for _, action := range updated.Actions {
|
|
if action.ID == BuiltinActionMemoryID {
|
|
foundMemory = true
|
|
if !action.ShowWidget || action.WidgetType != ActionWidgetTypeMemory {
|
|
t.Fatalf("memory widget = %+v", action)
|
|
}
|
|
if action.Body != "free -m" {
|
|
t.Fatalf("memory body = %q", action.Body)
|
|
}
|
|
}
|
|
if action.ID == BuiltinActionDiskUsageID {
|
|
if action.Body != "df -h {{env.MOUNT}}" {
|
|
t.Fatalf("disk body = %q", action.Body)
|
|
}
|
|
if len(action.Env) != 1 || action.Env[0].Name != "MOUNT" || action.Env[0].Value != "/" {
|
|
t.Fatalf("disk env = %+v", action.Env)
|
|
}
|
|
if !action.ShowWidget || action.WidgetType != ActionWidgetTypeDisk {
|
|
t.Fatalf("disk widget = %+v", action)
|
|
}
|
|
}
|
|
if action.ID == "custom-1" {
|
|
foundCustom = true
|
|
}
|
|
}
|
|
if !foundMemory {
|
|
t.Fatal("memory builtin missing")
|
|
}
|
|
if !foundCustom {
|
|
t.Fatal("custom action was dropped")
|
|
}
|
|
}
|
|
|
|
func TestUpsertActionWidgetSnapshot(t *testing.T) {
|
|
dir := t.TempDir()
|
|
first := ActionWidgetSnapshot{
|
|
NodeID: "node-1",
|
|
ItemID: "item-1",
|
|
GroupID: "group-1",
|
|
WidgetType: ActionWidgetTypeMemory,
|
|
Title: "Memory",
|
|
UpdatedAt: time.Now().UTC(),
|
|
ExitCode: 0,
|
|
RawStdout: "Mem: 1 1 0 0 0 0",
|
|
Memory: &MemoryWidgetData{Total: 1, Used: 1},
|
|
}
|
|
if err := UpsertActionWidgetSnapshot(dir, first); err != nil {
|
|
t.Fatalf("upsert: %v", err)
|
|
}
|
|
second := first
|
|
second.Title = "RAM"
|
|
second.Memory = &MemoryWidgetData{Total: 2, Used: 1, Free: 1}
|
|
if err := UpsertActionWidgetSnapshot(dir, second); err != nil {
|
|
t.Fatalf("upsert2: %v", err)
|
|
}
|
|
|
|
store, err := LoadActionWidgets(dir)
|
|
if err != nil {
|
|
t.Fatalf("load: %v", err)
|
|
}
|
|
if len(store.Widgets) != 1 {
|
|
t.Fatalf("len = %d", len(store.Widgets))
|
|
}
|
|
if store.Widgets[0].Title != "RAM" || store.Widgets[0].Memory.Total != 2 {
|
|
t.Fatalf("widget = %+v", store.Widgets[0])
|
|
}
|
|
|
|
path := filepath.Join(dir, NodeActionWidgetsFileName)
|
|
if _, err := os.Stat(path); err != nil {
|
|
t.Fatalf("missing file: %v", err)
|
|
}
|
|
}
|