carlos / platform Public

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

Plain git — no account needed to clone.

Download

Download this file

1package host
2
3import (
4 "context"
5 "errors"
6 "github.com/carlosframework/platform/internal/activator"
7 "github.com/carlosframework/platform/internal/hostwrite"
8 "github.com/carlosframework/platform/internal/schedule"
9 "testing"
10)
11
12func TestClaimWiringOffConstructsNothing(t *testing.T) {
13 reads := 0
14 w, err := newClaimWiring(context.Background(), func(string) string { reads++; return " " }, func(context.Context) (ClaimProviders, error) {
15 t.Fatal("provider construction flag-off")
16 return ClaimProviders{}, nil
17 })
18 if err != nil || reads != 1 {
19 t.Fatal(err, reads)
20 }
21 cfg := activator.Config{}
22 runner := schedule.Runner{}
23 converger := schedule.Converger{}
24 if err := w.configure(&cfg, &runner, &converger); err != nil {
25 t.Fatal(err)
26 }
27 if cfg.HostWrites.Enabled || runner.HostWrites.Enabled || converger.HostWrites.Enabled {
28 t.Fatal("flag off changed")
29 }
30 if err := w.startRegional(context.Background(), nil, nil); err != nil {
31 t.Fatal(err)
32 }
33 if w.joined != nil {
34 t.Fatal("worker flag off")
35 }
36}
37func TestClaimWiringOnMissingProviderRefuses(t *testing.T) {
38 w, err := newClaimWiring(context.Background(), func(string) string { return "0" }, nil)
39 if !w.Writes.Enabled || !errors.Is(err, hostwrite.ErrUnavailable) {
40 t.Fatal(w, err)
41 }
42 if err := w.configure(&activator.Config{}, &schedule.Runner{}, &schedule.Converger{}); err == nil {
43 t.Fatal("missing provider configured")
44 }
45}
46
47type testRegionalLoop struct{ started chan struct{} }
48
49func (r testRegionalLoop) Loop(ctx context.Context, _ <-chan struct{}, _ func(error)) error {
50 close(r.started)
51 <-ctx.Done()
52 return ctx.Err()
53}
54
55var _ RegionalLoop = testRegionalLoop{}
56
57func TestClaimWiringRegionalContractBeforeTask10(t *testing.T) {
58 loop := testRegionalLoop{started: make(chan struct{})}
59 w := &ClaimWiring{Writes: hostwrite.Config{Enabled: true}, Providers: ClaimProviders{Regional: loop}}
60 if err := w.startRegional(t.Context(), nil, nil); err != nil {
61 t.Fatal(err)
62 }
63 <-loop.started
64 if err := w.close(t.Context()); err != nil {
65 t.Fatal(err)
66 }
67}
68