mockforge_chaos/
lib.rs

1//! MockForge Chaos Engineering
2//!
3//! Provides chaos engineering capabilities including traffic shaping, fault injection,
4//! and resilience pattern testing.
5
6pub mod ab_testing;
7pub mod advanced_analytics;
8pub mod advanced_orchestration;
9pub mod alerts;
10pub mod analytics;
11pub mod api;
12pub mod auto_remediation;
13pub mod chaos_mesh;
14pub mod collaboration;
15pub mod config;
16pub mod dashboard;
17pub mod distributed_coordinator;
18pub mod fault;
19pub mod gitops;
20pub mod integrations;
21pub mod latency;
22pub mod metrics;
23pub mod middleware;
24pub mod ml_anomaly_detector;
25pub mod ml_assertion_generator;
26pub mod ml_parameter_optimizer;
27pub mod multi_armed_bandit;
28pub mod multi_cluster;
29pub mod multi_tenancy;
30pub mod observability_api;
31pub mod plugins;
32pub mod predictive_remediation;
33pub mod protocols;
34pub mod rate_limit;
35pub mod recommendations;
36pub mod reinforcement_learning;
37pub mod resilience;
38pub mod resilience_api;
39pub mod scenario_orchestrator;
40pub mod scenario_recorder;
41pub mod scenario_replay;
42pub mod scenario_scheduler;
43pub mod scenarios;
44pub mod template_marketplace;
45pub mod trace_collector;
46pub mod traffic_shaping;
47pub mod version_control;
48
49pub use ab_testing::{
50    ABTest, ABTestConfig, ABTestStats, ABTestStatus, ABTestingEngine, MetricComparison, MetricType,
51    SingleMetricComparison, SuccessCriteria, TestConclusion, TestVariant, VariantMetrics,
52    VariantResults,
53};
54pub use advanced_analytics::{
55    AdvancedAnalyticsEngine, Anomaly, AnomalyType as AnalyticsAnomalyType, CorrelationAnalysis,
56    DataPoint, HealthFactor, HealthScore, PredictiveInsight, TrendAnalysis, TrendDirection,
57};
58pub use advanced_orchestration::{
59    AdvancedOrchestratedScenario, AdvancedScenarioStep, Assertion, Condition, ConditionalStep,
60    ExecutionContext, ExecutionReport, Hook, HookAction, HookType, OrchestrationLibrary,
61    RetryConfig, StepResult,
62};
63pub use alerts::{
64    Alert, AlertHandler, AlertManager, AlertRule, AlertRuleType, AlertSeverity, AlertType,
65};
66pub use analytics::{ChaosAnalytics, ChaosImpact, MetricsBucket, TimeBucket};
67pub use api::create_chaos_api_router;
68pub use auto_remediation::{
69    ApprovalRequest, EffectivenessMetrics, RemediationAction, RemediationConfig, RemediationEngine,
70    RemediationResult, RemediationStats, RemediationStatus, RiskAssessment as AutoRiskAssessment,
71    RiskLevel, RollbackData, SafetyCheck, SystemMetrics,
72};
73pub use chaos_mesh::{
74    ChaosMeshClient, ChaosMeshExperiment, ExperimentSpec, ExperimentStatus, ExperimentType,
75    NetworkChaosAction, NetworkDelay, NetworkLoss, PodChaosAction, PodSelector, StressConfig,
76};
77pub use collaboration::{
78    ChangeType, CollaborationChange, CollaborationManager, CollaborationMessage,
79    CollaborationSession, CollaborationUser, CursorPosition,
80};
81pub use config::{
82    BulkheadConfig, ChaosConfig, CircuitBreakerConfig, FaultInjectionConfig, LatencyConfig,
83    RateLimitConfig, TrafficShapingConfig,
84};
85pub use dashboard::{DashboardManager, DashboardQuery, DashboardStats, DashboardUpdate};
86pub use distributed_coordinator::{
87    CoordinationMode, DistributedCoordinator, DistributedTask, ExecutionMetrics, LeaderState, Node,
88    NodeExecutionState, NodeStatus, TaskStatus,
89};
90pub use fault::{FaultInjector, FaultType};
91pub use gitops::{GitOpsAuth, GitOpsConfig, GitOpsManager, SyncState, SyncStatus};
92pub use integrations::{
93    GrafanaConfig, GrafanaIntegration, IntegrationConfig, IntegrationManager, JiraConfig,
94    JiraIntegration, Notification, NotificationResults, NotificationSeverity, PagerDutyConfig,
95    PagerDutyIntegration, SlackConfig, SlackNotifier, TeamsConfig, TeamsNotifier,
96};
97pub use latency::LatencyInjector;
98pub use metrics::{registry as metrics_registry, ChaosMetrics, CHAOS_METRICS};
99pub use middleware::{chaos_middleware, ChaosMiddleware};
100pub use ml_anomaly_detector::{
101    Anomaly as MLAnomaly, AnomalyDetector, AnomalyDetectorConfig, AnomalySeverity,
102    AnomalyType as MLAnomalyType, MetricBaseline, TimeSeriesPoint,
103};
104pub use ml_assertion_generator::{
105    AssertionGenerator, AssertionGeneratorConfig, AssertionOperator, AssertionType,
106    ExecutionDataPoint, GeneratedAssertion, MetricStats,
107};
108pub use ml_parameter_optimizer::{
109    ExpectedImpact, OptimizationObjective, OptimizationRecommendation, OptimizerConfig,
110    OrchestrationRun, ParameterBounds, ParameterOptimizer, RunMetrics,
111};
112pub use multi_armed_bandit::{
113    Arm, ArmReport, BanditReport, BanditStrategy, MultiArmedBandit, ThompsonSampling,
114    TrafficAllocator, UCB1,
115};
116pub use multi_cluster::{
117    ClusterTarget, ExecutionStatus, MultiClusterOrchestration, MultiClusterOrchestrator,
118    MultiClusterStatus, SyncMode,
119};
120pub use multi_tenancy::{
121    MultiTenancyError, ResourceQuota, ResourceUsage, Tenant, TenantManager, TenantPermissions,
122    TenantPlan,
123};
124pub use observability_api::{create_observability_router, ObservabilityState};
125pub use plugins::{
126    ChaosPlugin, CustomFaultPlugin, MetricsPlugin, PluginCapability, PluginConfig, PluginContext,
127    PluginError, PluginHook, PluginMetadata, PluginRegistry, PluginResult,
128};
129pub use predictive_remediation::{
130    AnomalyDetector as PredictiveAnomalyDetector, DataPoint as PredictiveDataPoint,
131    FailurePrediction, MetricTrend, MetricType as PredictiveMetricType,
132    PredictiveRemediationEngine, TimeSeries, TrendAnalyzer,
133    TrendDirection as PredictiveTrendDirection, TrendReport,
134};
135pub use protocols::{graphql::GraphQLChaos, grpc::GrpcChaos, websocket::WebSocketChaos};
136pub use rate_limit::RateLimiter;
137pub use recommendations::{
138    Confidence, EngineConfig, Recommendation, RecommendationCategory, RecommendationEngine,
139    RecommendationSeverity,
140};
141pub use reinforcement_learning::{
142    AdaptiveRiskAssessor, QLearningConfig, RLAgent, RemediationAction as RLRemediationAction,
143    RiskAssessment, SystemState,
144};
145pub use resilience::{
146    Bulkhead, BulkheadError, BulkheadGuard, BulkheadManager, BulkheadMetrics, BulkheadStats,
147    CircuitBreaker, CircuitBreakerManager, CircuitBreakerMetrics, CircuitState, CircuitStats,
148    DynamicThresholdAdjuster, FallbackHandler, HealthCheckIntegration, JsonFallbackHandler,
149    RetryConfig as ResilienceRetryConfig, RetryPolicy,
150};
151pub use resilience_api::{
152    create_resilience_router, BulkheadStateResponse, CircuitBreakerStateResponse,
153    ResilienceApiState,
154};
155pub use scenario_orchestrator::{OrchestratedScenario, ScenarioOrchestrator, ScenarioStep};
156pub use scenario_recorder::{ChaosEvent, ChaosEventType, RecordedScenario, ScenarioRecorder};
157pub use scenario_replay::{ReplayOptions, ReplaySpeed, ScenarioReplayEngine};
158pub use scenario_scheduler::{ScenarioScheduler, ScheduleType, ScheduledScenario};
159pub use scenarios::{ChaosScenario, PredefinedScenarios, ScenarioEngine};
160pub use template_marketplace::{
161    CompatibilityInfo, OrchestrationTemplate, TemplateCategory, TemplateMarketplace,
162    TemplateReview, TemplateSearchFilters, TemplateSortBy, TemplateStats,
163};
164pub use traffic_shaping::TrafficShaper;
165pub use version_control::{
166    Branch, Commit, Diff, DiffChange, DiffChangeType, DiffStats, VersionControlRepository,
167};
168
169use thiserror::Error;
170
171/// Chaos engineering errors
172#[derive(Error, Debug)]
173pub enum ChaosError {
174    #[error("Rate limit exceeded")]
175    RateLimitExceeded,
176
177    #[error("Connection throttled")]
178    ConnectionThrottled,
179
180    #[error("Injected fault: {0}")]
181    InjectedFault(String),
182
183    #[error("Timeout after {0}ms")]
184    Timeout(u64),
185
186    #[error("Configuration error: {0}")]
187    Config(String),
188
189    #[error("Scenario error: {0}")]
190    Scenario(String),
191
192    #[error("Circuit breaker open")]
193    CircuitBreakerOpen,
194
195    #[error("Bulkhead rejected: {0}")]
196    BulkheadRejected(String),
197}
198
199pub type Result<T> = std::result::Result<T, ChaosError>;