use super::core::{
StressTestConfig, StressTestResult, create_default_activities, create_default_orchestrations, run_stress_test,
};
use crate::providers::Provider;
use std::sync::Arc;
#[async_trait::async_trait]
pub trait ProviderStressFactory: Send + Sync {
async fn create_provider(&self) -> Arc<dyn Provider>;
fn stress_test_config(&self) -> StressTestConfig {
StressTestConfig::default()
}
}
pub async fn run_parallel_orchestrations_test(
factory: &dyn ProviderStressFactory,
) -> Result<StressTestResult, Box<dyn std::error::Error>> {
let config = factory.stress_test_config();
let provider = factory.create_provider().await;
let activities = create_default_activities(config.activity_delay_ms);
let orchestrations = create_default_orchestrations();
run_stress_test(config, provider, activities, orchestrations).await
}
pub async fn run_parallel_orchestrations_test_with_config(
factory: &dyn ProviderStressFactory,
config: StressTestConfig,
) -> Result<StressTestResult, Box<dyn std::error::Error>> {
let provider = factory.create_provider().await;
let activities = create_default_activities(config.activity_delay_ms);
let orchestrations = create_default_orchestrations();
run_stress_test(config, provider, activities, orchestrations).await
}