46 lines
1.6 KiB
Go
46 lines
1.6 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 || len(snapshots) != 1 {
|
|
t.Fatalf("embedded snapshots = %#v, error = %v", snapshots, err)
|
|
}
|
|
snapshot := snapshots[0]
|
|
if snapshot.Template.ID != "palworld-official" || 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)
|
|
}
|
|
}
|