carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

1package console
2
3import (
4 "encoding/json"
5 "testing"
6
7 "github.com/carlosframework/platform/internal/moves"
8)
9
10func TestPlan14FloorRiseWithoutPlatformUpdate(t *testing.T) {
11 for _, state := range []string{"accepted", "missing", "quarantined", "old generation", "old floor", "old prev", "compatible prev"} {
12 t.Run(state, func(t *testing.T) {
13 fx := newConsoleFixture(t)
14 if _, err := fx.rel.Put(t.Context(), moves.FloorKey, []byte(`{"min":1,"min_release":"v2.0.0"}`), ""); err != nil {
15 t.Fatal(err)
16 }
17 armMoveFleet(t, fx, ieBox("ie-box"), ukBox("uk-box"))
18 key := edgesFilePrefix + "uk-box.json"
19 raw, etag, err := fx.rel.Get(t.Context(), key)
20 if err != nil {
21 t.Fatal(err)
22 }
23 var m map[string]any
24 if err := json.Unmarshal(raw, &m); err != nil {
25 t.Fatal(err)
26 }
27 m["moves_floor_state"] = "accepted"
28 m["moves_floor_generation"] = 1
29 switch state {
30 case "missing":
31 delete(m, "moves_floor_state")
32 case "quarantined":
33 m["moves_floor_state"] = "quarantined"
34 case "old generation":
35 m["moves_floor_generation"] = 0
36 case "old floor":
37 m["moves_floor_min_release"] = "v1.0.0"
38 case "old prev":
39 m["prev_release"] = "v1.0.0"
40 m["prev_allowed_for"] = "v1.0.0"
41 case "compatible prev":
42 m["prev_release"] = "v2.0.0"
43 m["prev_allowed_for"] = "v2.0.0"
44 }
45 raw, _ = json.Marshal(m)
46 if _, err := fx.rel.Put(t.Context(), key, raw, etag); err != nil {
47 t.Fatal(err)
48 }
49 got, err := fx.srv.selectMoveBoxes(t.Context(), "acme.go.tito.io", "uk", "ie", "bab/titogo")
50 if err != nil {
51 t.Fatal(err)
52 }
53 want := state == "accepted" || state == "compatible prev"
54 if got.FloorOK != want {
55 t.Fatalf("FloorOK=%v want %v", got.FloorOK, want)
56 }
57 })
58 }
59}
60