82 lines
1.7 KiB
Go
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,
|
|
)
|
|
}
|
|
}
|