Documentation
¶
Index ¶
- Constants
- type Intermediate
- type Mock
- func (svc *Mock) BoomF(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) BoomR(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) Collect(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) FanA(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) Inner(ctx context.Context) (graph *workflow.Graph, err error)
- func (svc *Mock) InnerEntry(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) Join(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) Loop(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) MockBoomF(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockBoomR(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockCollect(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockFanA(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockInner(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockInnerEntry(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockJoin(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockLoop(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockRecover(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockSeed(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockSoak(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) MockWork(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
- func (svc *Mock) OnShutdown(ctx context.Context) (err error)
- func (svc *Mock) OnStartup(ctx context.Context) (err error)
- func (svc *Mock) Recover(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) Seed(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Mock) Soak(ctx context.Context) (graph *workflow.Graph, err error)
- func (svc *Mock) Work(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- type Service
- func (svc *Service) BoomF(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) BoomR(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) Collect(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) FanA(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) Init(initializer func(svc *Service) (err error)) *Service
- func (svc *Service) Inner(ctx context.Context) (graph *workflow.Graph, err error)
- func (svc *Service) InnerEntry(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) Join(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) Loop(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) OnShutdown(ctx context.Context) (err error)
- func (svc *Service) OnStartup(ctx context.Context) (err error)
- func (svc *Service) Recover(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) Seed(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- func (svc *Service) Soak(ctx context.Context) (graph *workflow.Graph, err error)
- func (svc *Service) Work(ctx context.Context, flow *workflow.Flow) (done bool, err error)
- type ToDo
Constants ¶
const ( Hostname = soakflowapi.Hostname Version = 1 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Intermediate ¶
Intermediate extends and customizes the generic base connector.
func NewIntermediate ¶
func NewIntermediate(impl ToDo) *Intermediate
NewIntermediate creates a new instance of the intermediate.
type Mock ¶
type Mock struct {
*Intermediate
// contains filtered or unexported fields
}
Mock is a mockable version of the microservice, allowing functions, event sinks and web handlers to be mocked.
func (*Mock) InnerEntry ¶
InnerEntry executes the mock handler.
func (*Mock) MockBoomF ¶
func (svc *Mock) MockBoomF(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockBoomF sets up a mock handler for BoomF.
func (*Mock) MockBoomR ¶
func (svc *Mock) MockBoomR(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockBoomR sets up a mock handler for BoomR.
func (*Mock) MockCollect ¶
func (svc *Mock) MockCollect(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockCollect sets up a mock handler for Collect.
func (*Mock) MockFanA ¶
func (svc *Mock) MockFanA(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockFanA sets up a mock handler for FanA.
func (*Mock) MockInner ¶
func (svc *Mock) MockInner(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockInner sets up a mock handler for the Inner workflow. The handler receives typed inputs from the workflow's state and returns typed outputs. A nil handler clears the mock.
func (*Mock) MockInnerEntry ¶
func (svc *Mock) MockInnerEntry(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockInnerEntry sets up a mock handler for InnerEntry.
func (*Mock) MockJoin ¶
func (svc *Mock) MockJoin(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockJoin sets up a mock handler for Join.
func (*Mock) MockLoop ¶
func (svc *Mock) MockLoop(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockLoop sets up a mock handler for Loop.
func (*Mock) MockRecover ¶
func (svc *Mock) MockRecover(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockRecover sets up a mock handler for Recover.
func (*Mock) MockSeed ¶
func (svc *Mock) MockSeed(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockSeed sets up a mock handler for Seed.
func (*Mock) MockSoak ¶
func (svc *Mock) MockSoak(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockSoak sets up a mock handler for the Soak workflow. The handler receives typed inputs from the workflow's state and returns typed outputs. A nil handler clears the mock.
func (*Mock) MockWork ¶
func (svc *Mock) MockWork(handler func(ctx context.Context, flow *workflow.Flow) (done bool, err error)) *Mock
MockWork sets up a mock handler for Work.
func (*Mock) OnShutdown ¶
OnShutdown is called when the microservice is shut down.
type Service ¶
type Service struct {
*Intermediate // IMPORTANT: Do not remove
}
Service implements soakflow.verify: a high-volume liveness soak over a complex, input-driven workflow. Tasks are intentionally trivial (no sleeps) so flows churn fast and maximize the volume exercised; the graph's shape - not the task work - is what stresses the dispatcher.
func (*Service) BoomF ¶
BoomF always errors and the graph has no error transition for it, so the flow fails - a terminal status, which is still "finished" for the soak.
func (*Service) BoomR ¶
BoomR always errors; the graph's onError transition routes it to Recover, so the flow recovers and completes.
func (*Service) Collect ¶
Collect is the fan-in target; the reducer has merged the per-element deltas.
func (*Service) InnerEntry ¶
InnerEntry is the single task of the Inner subgraph.
func (*Service) Loop ¶
Loop decrements loopsLeft and gotos itself until it reaches zero, then falls through. Bounded by Seed's clamp, so it always terminates.
func (*Service) OnShutdown ¶
OnShutdown is called when the microservice is shut down.
func (*Service) Seed ¶
Seed normalizes the random inputs into bounded state so every path terminates: branch in [0,4] selects the route, fanWidth in [1,6] sizes the fan-out array, and loops in [0,5] bounds the goto loop.
func (*Service) Soak ¶
Soak defines the complex, input-driven workflow graph. From a clamped `branch` the entry fans into one of five mutually exclusive routes - a dynamic forEach fan-out with a sum-reducer fan-in, a bounded goto loop, a subgraph, an onError-recovered failure, and an unhandled failure - all converging at Join (except the unhandled failure, which terminates the flow as failed).
type ToDo ¶
type ToDo interface {
OnStartup(ctx context.Context) (err error)
OnShutdown(ctx context.Context) (err error)
Seed(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: Seed
FanA(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: FanA
Work(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: Work
Collect(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: Collect
Loop(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: Loop
BoomR(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: BoomR
Recover(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: Recover
BoomF(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: BoomF
Join(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: Join
InnerEntry(ctx context.Context, flow *workflow.Flow) (done bool, err error) // MARKER: InnerEntry
Soak(ctx context.Context) (graph *workflow.Graph, err error) // MARKER: Soak
Inner(ctx context.Context) (graph *workflow.Graph, err error) // MARKER: Inner
}
ToDo is implemented by the service or mock.