Documentation
¶
Index ¶
- type ChaosScenario
- func NewChaosScenario(name, description string, duration time.Duration, logger Logger) *ChaosScenario
- func NewCombinedChaosScenario(logger Logger) *ChaosScenario
- func NewIntermittentErrorScenario(logger Logger) *ChaosScenario
- func NewRandomLatencyScenario(logger Logger) *ChaosScenario
- func NewSlowNetworkScenario(logger Logger) *ChaosScenario
- type FaultConfig
- type FaultInjector
- func (fi *FaultInjector) AddFault(config *FaultConfig)
- func (fi *FaultInjector) Disable()
- func (fi *FaultInjector) Enable()
- func (fi *FaultInjector) GetStats() map[FaultType]int
- func (fi *FaultInjector) InjectError(operation string) error
- func (fi *FaultInjector) InjectLatency(ctx context.Context, operation string) error
- func (fi *FaultInjector) InjectSlowResponse(ctx context.Context, operation string) error
- func (fi *FaultInjector) RemoveFault(faultType FaultType)
- func (fi *FaultInjector) Reset()
- func (fi *FaultInjector) ShouldInjectFault(faultType FaultType) bool
- type FaultType
- type Logger
- type NetworkPartitionSimulator
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
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) 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
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