Skip to main content

rpytest_daemon/
lib.rs

1//! rpytest-daemon: Pure Rust daemon for test execution and management.
2//!
3//! This crate provides a high-performance Rust daemon for rpytest that handles:
4//! - IPC communication with the CLI via NNG
5//! - Test collection using native AST parsing
6//! - Inventory and state management with sled storage
7//! - Test scheduling and execution
8//! - Flakiness tracking and fixture management
9//!
10//! ## Features
11//!
12//! - `embedded-python` (default): Use PyO3 to embed Python for direct pytest execution,
13//!   eliminating subprocess overhead.
14//! - `subprocess-only`: Disable embedded Python, always use subprocess execution.
15
16pub mod collector;
17pub mod context;
18pub mod error;
19pub mod executor;
20pub mod fixtures;
21pub mod flakiness;
22pub mod models;
23pub mod pool;
24pub mod scheduler;
25pub mod server;
26pub mod storage;
27
28#[cfg(feature = "embedded-python")]
29pub mod embedded;
30
31pub use collector::NativeCollector;
32pub use context::RepoContext;
33pub use error::{DaemonError, Result};
34pub use executor::{
35    create_executor, create_pooled_executor, PooledExecutor, PythonExecutor, TestExecutor,
36};
37
38#[cfg(feature = "embedded-python")]
39pub use embedded::EmbeddedExecutor;
40pub use fixtures::FixtureManager;
41pub use flakiness::FlakinessTracker;
42pub use models::DaemonConfig;
43pub use models::ExecutionMode;
44pub use models::ScheduledTest;
45pub use models::{FixtureScope, FixtureState, FlakinessRecord};
46pub use models::{TestNode, TestOutcome, TestResult};
47pub use pool::WorkerPool;
48pub use scheduler::TestScheduler;
49pub use server::DaemonServer;
50pub use storage::DaemonStorage;
51
52/// Re-export commonly used types
53pub use rpytest_core::protocol::{ErrorCode, Request, Response, TestNodeInfo, PROTOCOL_VERSION};