chaos

package
v1.1.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChaosScenario

type ChaosScenario struct {
	Name        string
	Description string
	Duration    time.Duration
	Faults      []*FaultConfig
	Injector    *FaultInjector
	// contains filtered or unexported fields
}

ChaosScenario represents a chaos testing scenario

func NewChaosScenario

func NewChaosScenario(name, description string, duration time.Duration, logger Logger) *ChaosScenario

NewChaosScenario creates a new chaos scenario

func NewCombinedChaosScenario

func NewCombinedChaosScenario(logger Logger) *ChaosScenario

NewCombinedChaosScenario creates a scenario with multiple fault types

func NewIntermittentErrorScenario

func NewIntermittentErrorScenario(logger Logger) *ChaosScenario

NewIntermittentErrorScenario creates a scenario with intermittent errors

func NewRandomLatencyScenario

func NewRandomLatencyScenario(logger Logger) *ChaosScenario

NewRandomLatencyScenario creates a scenario with random latency injection

func NewSlowNetworkScenario

func NewSlowNetworkScenario(logger Logger) *ChaosScenario

NewSlowNetworkScenario creates a scenario simulating slow network

func (*ChaosScenario) AddFault

func (cs *ChaosScenario) AddFault(config *FaultConfig)

AddFault adds a fault to the scenario

func (*ChaosScenario) Run

func (cs *ChaosScenario) Run(ctx context.Context, testFunc func(context.Context) error) error

Run executes the chaos scenario

type FaultConfig

type FaultConfig struct {
	Type        FaultType
	Probability float64 // 0.0 to 1.0
	Duration    time.Duration
	Delay       time.Duration // For latency injection
	ErrorMsg    string        // For error injection
	Enabled     bool
}

FaultConfig configures a specific fault type

type FaultInjector

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

FaultInjector manages fault injection for chaos testing

func NewFaultInjector

func NewFaultInjector(logger Logger) *FaultInjector

NewFaultInjector creates a new fault injector

func (*FaultInjector) AddFault

func (fi *FaultInjector) AddFault(config *FaultConfig)

AddFault adds or updates a fault configuration

func (*FaultInjector) Disable

func (fi *FaultInjector) Disable()

Disable disables fault injection

func (*FaultInjector) Enable

func (fi *FaultInjector) Enable()

Enable enables fault injection

func (*FaultInjector) GetStats

func (fi *FaultInjector) GetStats() map[FaultType]int

GetStats returns fault injection statistics

func (*FaultInjector) InjectError

func (fi *FaultInjector) InjectError(operation string) error

InjectError injects an error response

func (*FaultInjector) InjectLatency

func (fi *FaultInjector) InjectLatency(ctx context.Context, operation string) error

InjectLatency injects artificial latency

func (*FaultInjector) InjectSlowResponse

func (fi *FaultInjector) InjectSlowResponse(ctx context.Context, operation string) error

InjectSlowResponse injects a slow response for a specific operation

func (*FaultInjector) RemoveFault

func (fi *FaultInjector) RemoveFault(faultType FaultType)

RemoveFault removes a fault configuration

func (*FaultInjector) Reset

func (fi *FaultInjector) Reset()

Reset resets fault injection statistics

func (*FaultInjector) ShouldInjectFault

func (fi *FaultInjector) ShouldInjectFault(faultType FaultType) bool

ShouldInjectFault determines if a fault should be injected based on probability

type FaultType

type FaultType string

FaultType represents different types of faults that can be injected

const (
	FaultTypeLatency      FaultType = "latency"
	FaultTypeError        FaultType = "error"
	FaultTypeDisconnect   FaultType = "disconnect"
	FaultTypeDataLoss     FaultType = "data_loss"
	FaultTypePartition    FaultType = "partition"
	FaultTypeSlowResponse FaultType = "slow_response"
)

type Logger

type Logger interface {
	Info(msg string, fields map[string]interface{})
	Warn(msg string, fields map[string]interface{})
	Error(msg string, fields map[string]interface{})
}

Logger interface for fault injection logging

type NetworkPartitionSimulator

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

NetworkPartitionSimulator simulates network partitions between nodes

func NewNetworkPartitionSimulator

func NewNetworkPartitionSimulator(logger Logger) *NetworkPartitionSimulator

NewNetworkPartitionSimulator creates a new partition simulator

func (*NetworkPartitionSimulator) HealAll

func (nps *NetworkPartitionSimulator) HealAll()

HealAll removes all network partitions

func (*NetworkPartitionSimulator) HealPartition

func (nps *NetworkPartitionSimulator) HealPartition(from, to string)

HealPartition removes a network partition

func (*NetworkPartitionSimulator) IsPartitioned

func (nps *NetworkPartitionSimulator) IsPartitioned(from, to string) bool

IsPartitioned checks if a path is partitioned

func (*NetworkPartitionSimulator) PartitionNodes

func (nps *NetworkPartitionSimulator) PartitionNodes(from, to string)

PartitionNodes creates a network partition between two nodes

Jump to

Keyboard shortcuts

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