Files
DoGaMa-serv/internal/agent/agent_plan_test.go
T
2026-08-17 21:14:24 +02:00

82 lines
1.7 KiB
Go

package agent
import (
"path/filepath"
"testing"
catalogdata "git.zaynet.fr/DoGaMa/DoGaMa-serv/catalog"
"git.zaynet.fr/DoGaMa/DoGaMa-serv/internal/catalog"
"git.zaynet.fr/DoGaMa/DoGaMa-serv/internal/instance"
)
func TestEmbeddedPalworldSnapshotMatchesApplicationDeploymentPlan(t *testing.T) {
snapshots, err := catalog.LoadFS(catalogdata.Files, ".")
if err != nil {
t.Fatal(err)
}
var snapshot *catalog.Snapshot
for i := range snapshots {
if snapshots[i].Template.ID == "palworld-official" {
snapshot = &snapshots[i]
break
}
}
if snapshot == nil {
t.Fatal(`embedded template "palworld-official" not found`)
}
if snapshot.Template.Version != "1.1.1" {
t.Fatalf(
"embedded Palworld snapshot = %s@%s",
snapshot.Template.ID,
snapshot.Template.Version,
)
}
preview, err := instance.BuildPreview(*snapshot, instance.PreviewRequest{
DisplayName: "Snapshot consistency",
Slug: "snapshot-consistency",
HostPorts: map[string]int{
"game": 38211,
},
MountPaths: map[string]string{
"saved": filepath.Join(t.TempDir(), "saved"),
},
DataOrigin: "new",
BackupRetention: 7,
})
if err != nil {
t.Fatal(err)
}
plan, err := preview.DeploymentPlan("abcdefghijklmnopqrstuvwx")
if err != nil {
t.Fatal(err)
}
policy, err := NewPlanPolicy(snapshots, catalogdata.Files)
if err != nil {
t.Fatal(err)
}
known, ok := policy.snapshots[plan.TemplateID+"@"+plan.TemplateVersion]
if !ok || known.Digest != plan.TemplateDigest {
t.Fatalf(
"agent snapshot=%#v plan=%s@%s digest=%s",
known,
plan.TemplateID,
plan.TemplateVersion,
plan.TemplateDigest,
)
}
if err := policy.Validate(plan); err != nil {
t.Fatalf(
"application plan rejected by matching embedded snapshot: %v",
err,
)
}
}