Skip to main content

durable_execution_sdk_testing/
lib.rs

1//! Testing utilities for AWS Durable Execution SDK
2//!
3//! This crate provides tools for testing durable functions locally and against
4//! deployed AWS Lambda functions.
5//!
6//! # Features
7//!
8//! - **LocalDurableTestRunner**: Execute and test durable functions in-process
9//! - **CloudDurableTestRunner**: Test against deployed Lambda functions
10//! - **MockDurableServiceClient**: Mock checkpoint client for unit testing
11//! - **DurableOperation**: Inspect and interact with individual operations
12//! - **Time Control**: Skip wait operations for faster test execution
13//!
14//! # Example
15//!
16//! ```ignore
17//! use durable_execution_sdk_testing::{
18//!     LocalDurableTestRunner, TestEnvironmentConfig, ExecutionStatus,
19//! };
20//!
21//! #[tokio::test]
22//! async fn test_workflow() {
23//!     LocalDurableTestRunner::setup_test_environment(TestEnvironmentConfig {
24//!         skip_time: true,
25//!         checkpoint_delay: None,
26//!     }).await.unwrap();
27//!
28//!     let mut runner = LocalDurableTestRunner::new(my_workflow);
29//!     let result = runner.run("input".to_string()).await.unwrap();
30//!
31//!     assert_eq!(result.get_status(), ExecutionStatus::Succeeded);
32//!
33//!     LocalDurableTestRunner::teardown_test_environment().await.unwrap();
34//! }
35//! ```
36
37// Module declarations
38pub mod checkpoint_server;
39pub mod cloud_runner;
40pub mod error;
41pub mod history_poller;
42pub mod local_runner;
43pub mod mock_client;
44pub mod operation;
45pub mod operation_handle;
46pub mod run_future;
47pub mod test_result;
48pub mod time_control;
49pub mod types;
50
51// Property-based tests module (test-only)
52#[cfg(test)]
53mod nodejs_event_pbt;
54
55// Re-export core types from this crate
56pub use checkpoint_server::{CheckpointWorkerManager, CheckpointWorkerParams, NodeJsHistoryEvent};
57pub use cloud_runner::{CloudDurableTestRunner, CloudTestRunnerConfig, LambdaHistoryApiClient};
58pub use error::TestError;
59pub use history_poller::{HistoryApiClient, HistoryPage, PollResult, TerminalState};
60pub use local_runner::{LocalDurableTestRunner, TestEnvironmentConfig};
61pub use mock_client::{CheckpointCall, GetOperationsCall, MockDurableServiceClient};
62pub use operation::{
63    CallbackDetails, CallbackSender, ContextDetails, DurableOperation, InvokeDetails, StepDetails,
64    WaitDetails,
65};
66pub use operation_handle::OperationHandle;
67pub use run_future::RunFuture;
68pub use test_result::{HistoryEvent, PrintConfig, TestResult};
69pub use time_control::{TimeControl, TimeControlGuard};
70pub use types::{
71    ExecutionStatus, Invocation, InvokeRequest, TestResultError, WaitingOperationStatus,
72};
73
74// Re-export key types from the SDK for convenience
75pub use durable_execution_sdk::{
76    // Client types
77    client::NewExecutionState,
78    // Operation types
79    CallbackDetails as SdkCallbackDetails,
80    ChainedInvokeDetails,
81    CheckpointResponse,
82    ContextDetails as SdkContextDetails,
83    // Context and handlers
84    DurableContext,
85    // Error types
86    DurableError,
87    DurableResult,
88    DurableServiceClient,
89    // Duration
90    Duration,
91    ErrorObject,
92    GetOperationsResponse,
93    Operation,
94    OperationStatus,
95    OperationType,
96    OperationUpdate,
97    SharedDurableServiceClient,
98    StepDetails as SdkStepDetails,
99    WaitDetails as SdkWaitDetails,
100};