simulation

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RunModelActions

func RunModelActions(acts []model.Action) error

ModelBridge runs model actions inside a simulation for cross-checking.

func TestDelayedQueueWorkflowInvariant

func TestDelayedQueueWorkflowInvariant(t *testing.T)

func TestResourceFailInvariantNoDualActiveWrite

func TestResourceFailInvariantNoDualActiveWrite(t *testing.T)

Types

type Env

type Env struct {
	Clock   *testclock.Clock
	Backend *memory.Backend
	Seed    int64
}

Env is the simulation environment.

func (*Env) NewCoordinator

func (e *Env) NewCoordinator(id string) (*shiftlock.Coordinator, error)

NewCoordinator is a helper for scenarios.

type ResourceEnv

type ResourceEnv struct {
	Registry *resource.Registry
	Queue    *queue.Memory
	QueueRes *queue.Resource
	Primary  *memory.Base
	Standby  *memory.Base
}

ResourceEnv is a multi-resource simulation harness.

func NewResourceEnv

func NewResourceEnv(t *testing.T) *ResourceEnv

NewResourceEnv seeds a registry with fail-able resources and a delayable queue.

func (*ResourceEnv) DelayQueue

func (e *ResourceEnv) DelayQueue(ctx context.Context) error

DelayQueue pauses the queue to simulate broker delay/backpressure.

func (*ResourceEnv) FailResource

func (e *ResourceEnv) FailResource(res *memory.Base)

FailResource marks a memory resource unhealthy.

type Scenario

type Scenario struct {
	// contains filtered or unexported fields
}

Scenario is a deterministic multi-step simulation over a test clock + memory backend.

func NewScenario

func NewScenario(t *testing.T, name string, seed int64) *Scenario

NewScenario starts a named scenario.

func (*Scenario) At

func (s *Scenario) At(d time.Duration, name string, fn func(env *Env) error) *Scenario

At schedules fn at an offset from scenario start.

func (*Scenario) Pause

func (s *Scenario) Pause(d time.Duration, name string) *Scenario

Pause is syntactic sugar for At with a no-op advance marker.

func (*Scenario) Run

func (s *Scenario) Run()

Run executes the scenario. On failure prints a copy-paste reproduction command.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL