package relay import ( "context" "errors" "testing" "github.com/carlosframework/platform/internal/release" ) func TestNewIncarnation(t *testing.T) { a, b := NewIncarnation(), NewIncarnation() if !incarnationRe.MatchString(a) || a == b { t.Fatalf("%q %q", a, b) } } func TestRecordRoundTrip(t *testing.T) { s := newMemStore(t) ctx := context.Background() r, etag, err := GetRecord(ctx, s, "abc", "meet") if err != nil || r != nil || etag != "" { t.Fatalf("absent = %v %q %v", r, etag, err) } etag, err = PutRecord(ctx, s, "abc", "meet", &Record{Enabled: true, Incarnation: NewIncarnation(), Op: 1, Phase: "config"}, "") if err != nil { t.Fatal(err) } if _, err := PutRecord(ctx, s, "abc", "meet", &Record{}, "stale-etag"); !errors.Is(err, release.ErrCASConflict) { t.Fatalf("stale put = %v, want CAS conflict", err) } r, _, _ = GetRecord(ctx, s, "abc", "meet") if !r.Enabled || r.Op != 1 { t.Fatalf("record = %+v", r) } }