1 unstable release
| 0.1.0 | Sep 4, 2025 |
|---|
#525 in HTTP server
45KB
946 lines
Arch Testing
A comprehensive testing framework for Arch Network applications that provides containerized test environments for integration testing.
Features
- Containerized Test Environments: Spin up isolated test environments using Docker containers
- Bitcoin Integration: Test with a local Bitcoin node for blockchain interactions
- Arch Network Support: Built-in support for Arch Network validators and programs
- Titan Integration: Test with Titan services for enhanced functionality
- Async/Await Support: Full async support with Tokio runtime
- Configurable: Flexible configuration options for different test scenarios
Installation
Add this to your Cargo.toml:
[dependencies]
arch_testing = "0.1.0"
Quick Start
use arch_testing::*;
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize test context
let test_context = TestContext::new().await?;
// Start a Bitcoin container
let bitcoin_config = BitcoinContainerConfig::default();
let bitcoin_container = BitcoinContainer::new(bitcoin_config).await?;
// Start a local validator
let validator_config = LocalValidatorContainerConfig::default();
let validator = LocalValidatorContainer::new(validator_config).await?;
// Your test logic here
println!("Test environment ready!");
Ok(())
}
Components
BitcoinContainer
Test with a local Bitcoin node:
use arch_testing::{BitcoinContainer, BitcoinContainerConfig};
let config = BitcoinContainerConfig {
rpc_port: Some(18443),
p2p_port: Some(18444),
..Default::default()
};
let bitcoin = BitcoinContainer::new(config).await?;
// Use bitcoin.rpc_client() for Bitcoin RPC calls
LocalValidatorContainer
Test with a local Arch Network validator:
use arch_testing::{LocalValidatorContainer, LocalValidatorContainerConfig};
let config = LocalValidatorContainerConfig::default();
let validator = LocalValidatorContainer::new(config).await?;
// Validator is ready for testing
TitanContainer
Test with Titan services:
use arch_testing::{TitanContainer, TitanContainerConfig};
let config = TitanContainerConfig::default();
let titan = TitanContainer::new(config).await?;
// Titan services are available
Configuration
All containers support flexible configuration through their respective config structs:
BitcoinContainerConfig: Configure Bitcoin node settings, ports, and RPC credentialsLocalValidatorContainerConfig: Configure validator settings and network parametersTitanContainerConfig: Configure Titan service settings
Test Context
The TestContext provides a centralized way to manage your test environment:
use arch_testing::TestContext;
let context = TestContext::new().await?;
// Context manages the lifecycle of all containers
Requirements
- Docker (for containerized test environments)
- Rust 1.70+ (2021 edition)
- Tokio runtime
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Repository
Dependencies
~43–64MB
~1M SLoC