package park import ( "github.com/carlosframework/platform/internal/hostclaim" "testing" "time" ) func TestPlan13RegionNames(t *testing.T) { for _, tc := range []struct{ home, region, want string }{ {"ie", "ie", ""}, {"ie", "", ""}, {"ie", "uk", "uk"}, {"", "ie", "ie"}, } { if got := HomePlacementCode(tc.home, tc.region); got != tc.want { t.Fatalf("%+v: %q", tc, got) } } for _, tc := range []struct { home, a, b string want bool }{ {"ie", "ie", HomeRegion, true}, {"ie", HomeRegion, "ie", true}, {"ie", "uk", HomeRegion, false}, {"", "ie", HomeRegion, false}, {"ie", "", HomeRegion, false}, {"ie", "", "", false}, {"ie", "uk", "uk", true}, {"home", "home", HomeRegion, true}, } { if got := SameRegion(tc.home, tc.a, tc.b); got != tc.want { t.Fatalf("%+v: %v", tc, got) } } q := map[string]time.Time{"ie": time.Unix(5, 0), HomeRegion: time.Unix(9, 0), "uk": time.Unix(12, 0)} if !QuietUntil(q, "ie", "ie").Equal(q[HomeRegion]) || !QuietUntil(q, "ie", "uk").Equal(q["uk"]) { t.Fatal("quiet aliases") } } func TestPlan13OldAdmissionLiveSet(t *testing.T) { c := &hostclaim.Claim{Holder: &hostclaim.Holder{Location: "instances/h/i", Generation: "new", Admissions: []hostclaim.AdmissionRecord{ {Generation: "new", Predecessor: "old", Region: "ie", PredecessorRegion: "ie", Mode: "cold"}, }}, Op: hostclaim.Op{Kind: hostclaim.KindServing}} v := View{HomeRegion: "ie", Region: HomeRegion, AuthoritativeRegion: HomeRegion, MarkerKnown: true, MarkerGeneration: "old", GenerationOf: func(Ref) (string, bool) { return "old", true }} got, err := LiveGenerations(c, v, c.Holder.Location) if err != nil || !got["old"] || !got["new"] { t.Fatalf("%v %v", got, err) } if c.Holder.Admissions[0].Region != "ie" { t.Fatal("rewrote history") } v.Region = "uk" got, err = LiveGenerations(c, v, c.Holder.Location) if err != nil || len(got) != 0 { t.Fatalf("foreign: %v %v", got, err) } }