package activator import ( "context" "testing" "github.com/carlosframework/platform/internal/registry" ) // seedPlacingBackend is a fakeBackend that records SeedPlaced calls. type seedPlacingBackend struct { *fakeBackend placed []string rep Rep } func (b *seedPlacingBackend) SeedPlaced(_ context.Context, rt registry.Route, rep Rep) error { b.placed = append(b.placed, rt.Host) b.rep = rep return nil } type noSyncRep struct{} func (noSyncRep) Err() error { return nil } func (noSyncRep) Close(context.Context) error { return nil } // SplitBackend.SeedPlaced dispatches on Backing: an exec route reaches the // exec backend's SeedPlaced with the same Rep; a unit route is never // forwarded and answers nil. func TestSplitBackendSeedPlacedDispatchesByBacking(t *testing.T) { eb := &seedPlacingBackend{fakeBackend: &fakeBackend{}} sb := &SplitBackend{Exec: eb, Unit: &UnitBackend{OptDir: t.TempDir()}} ctx := context.Background() rep := noSyncRep{} if err := sb.SeedPlaced(ctx, testUnitRoute("unit.example.com"), rep); err != nil { t.Fatalf("unit route: %v", err) } if len(eb.placed) != 0 { t.Fatalf("a unit route reached the exec backend: %q", eb.placed) } if err := sb.SeedPlaced(ctx, testRoute("shop-1.example.com"), rep); err != nil { t.Fatalf("exec route: %v", err) } if len(eb.placed) != 1 || eb.placed[0] != "shop-1.example.com" || eb.rep != Rep(rep) { t.Fatalf("exec route forwarded %q with rep %v", eb.placed, eb.rep) } }