| new file mode 100644 |
| index 000000000..c086635bb |
| --- /dev/null |
| +++ b/internal/activator/zdd5_surface_test.go |
| @@ -0,0 +1,67 @@ |
| +package activator |
| + |
| +import ( |
| + "context" |
| + "time" |
| + |
| + "github.com/carlosframework/platform/internal/registry" |
| + "github.com/carlosframework/platform/internal/release" |
| +) |
| + |
| +// Plan 5 of the zero-downtime deploys work consumes these names. The index |
| +// fixes the first block; plans 1 to 4 fix the rest in their own documents |
| +// (the index's "Cross-plan interface ledger"). If this file does not |
| +// compile, a plan merged a different name, and plan 5 stops until it is |
| +// reconciled with that plan's owner. |
| +var ( |
| + _ func(*Service, string) (string, bool) = (*Service).AppSocket |
| + _ func(*Service, context.Context, Attempt, func(string) uint64) SwapResult = (*Service).Swap |
| + _ = Gen{N: 1, Socket: "", Control: "", Build: "", StagedPath: "", Digest: "", Demand: ""} |
| + _ = Attempt{Host: "", Cause: CauseRelease, Build: "", StagedPath: "", Digest: "", Demand: "", Mode: ModeOverlap, ConfigRev: "", RestartID: "", SchedRev: 0, Canary: false} |
| + _ = SwapResult{Outcome: SwapDone, Gen: Gen{}, Reason: "", Drain: time.Second} |
| + _ = []SwapOutcome{SwapDone, SwapFailed, SwapAbandoned, SwapDown} |
| + _ = []Cause{CauseRelease, CauseInstall, CauseRetry, CauseRestart, CauseConfig} |
| + _ = []SwapMode{ModeOverlap, ModeHold} |
| + |
| + _ func(bool) = SetGenerations // plan 1 |
| + _ func(*ExecBackend, context.Context, registry.Route, uint64) error = (*ExecBackend).KillGen // plan 2 |
| + _ func(*SplitBackend, context.Context, registry.Route, uint64) error = (*SplitBackend).KillGen // plan 2 |
| + _ SwapBackend = (*SplitBackend)(nil) // plan 3 |
| + _ genKiller = (*SplitBackend)(nil) // plan 3 Task 2 declares genKiller; plan 5 declares none |
| + _ func(*Service, *actEntry, Attempt, func(string) uint64) error = (*Service).swapChecksLocked // plan 3 |
| + _ func(*Service, context.Context, registry.Route, Gen) (Proc, string, Gen, error) = (*Service).startPinned // plan 3 |
| + _ func(context.Context, Proc, time.Duration) settleResult = observeSettle // plan 3 |
| + _ = []settleResult{settleOK, settleExited, settleCancelled} |
| + _ = []error{errSwapNotAwake, errSwapBusy, errSwapStopped} // plan 3 |
| + _ = StartPolicy{Pin: &Gen{}, Fallback: &Gen{}, HealthBy: time.Time{}} // plan 3 |
| + |
| + // Adapted: the plan pinned startWorker as returning (Proc, |
| + // release.StagedIdentity, error) with no gate. Main |
| + // (workerbuild.go:77) takes a gate and also returns a pendingGeneration. |
| + _ func(*Service, context.Context, registry.Route, map[string]string, *release.StagedIdentity, func() error) (Proc, release.StagedIdentity, pendingGeneration, error) = (*Service).startWorker // plan 4 |
| + _ func(*Service, *actEntry, Proc, string, *release.StagedIdentity) = (*Service).respawnWorkerLocked // plan 4 |
| + |
| + // Added by the controller: later tasks build on these merged names. |
| + _ func(*Service, context.Context, registry.Route, Gen, func() error) (Proc, string, Gen, error) = (*Service).startPinnedAt // swaphold.go |
| + _ func(*Service, context.Context, *actEntry, registry.Route, Gen, Lease) (Proc, string, Gen, error) = (*Service).startPinnedChecked // swaphold.go |
| + _ error = ErrBuildNotPublished // workerbuild.go |
| + _ func(*Service) error = (*Service).persistGenerations // generations_file.go |
| +) |
| + |
| +// Fields plan 5 reads or sets. |
| +func _(a *Service, e *actEntry, w *wokenInstance, m *genMember, eb *ExecBackend) { |
| + a.gens = true // plan 1 |
| + eb.GenContainment = true // plan 2 |
| + a.genHealth = func(context.Context, Gen) error { return nil } // plan 3, test seam |
| + a.CoalesceRecycle = func(string) bool { return false } // plan 4 |
| + var _ Gen = e.gen // plan 1 |
| + var _ Gen = w.gen // plan 1 |
| + var _ *Gen = e.pin // plan 3 |
| + var _ *Gen = e.pinFailed // plan 3 |
| + var _ string = e.pinFailReason // plan 3 |
| + var _ map[uint64]*genMember = e.ops.members // plan 3 |
| + var _ Gen = m.gen // plan 3 |
| + var _ release.StagedIdentity = e.workerServing // plan 4 |
| + var _ chan struct{} = e.respawnDone // main |
| + var _ string = a.GenerationsFile // generations_file.go |
| +} |