carlos / platform Public

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

Plain git — no account needed to clone.

Download

Download this file

1package hostbox
2
3import (
4 "context"
5 "errors"
6 "testing"
7)
8
9func TestPlan11WriterClosureIsDurableAndMonotone(t *testing.T) {
10 j, r := roleLaunchFixture(t)
11 service, err := NewJournalService(j)
12 if err != nil {
13 t.Fatal(err)
14 }
15 remote, _ := RemoteJournals(func(ctx context.Context, q JournalRequest) (JournalResponse, error) {
16 return service.Execute(ctx, "controller", q)
17 })
18 if err := remote.CloseWriters(t.Context(), r.Target); err != nil {
19 t.Fatal(err)
20 }
21 if err := remote.CloseWriters(t.Context(), r.Target); err != nil {
22 t.Fatal(err)
23 }
24 got, err := j.Read(t.Context(), r.Target)
25 if err != nil || !got.WritersClosed {
26 t.Fatalf("closure not persisted: %+v %v", got, err)
27 }
28 if err := j.IntendUnit(t.Context(), r); !errors.Is(err, ErrChanged) {
29 t.Fatalf("closed session admitted a new unit: %v", err)
30 }
31 if err := j.Prelaunch(t.Context(), LaunchInventory{ControllerPID: got.ControllerPID, ProcessStart: got.ProcessStart, Target: r.Target, Groups: got.Groups, NoState: true}); err == nil {
32 t.Fatal("prelaunch replaced the closed record")
33 }
34 got, err = j.Read(t.Context(), r.Target)
35 if err != nil || !got.WritersClosed {
36 t.Fatal("closure was reopened")
37 }
38}
39