Armandra is a powerful cross-platform distributed stress testing tool designed for testing websites and collecting errors. Built with Tauri, React, and Rust, it provides a robust solution for load testing web applications across multiple machines.
- Cross-Platform: Runs on Windows, macOS, and Linux
- Distributed Testing: Coordinate multiple clients for increased load testing capacity
- Real-time Metrics: Monitor performance metrics during tests
- Comprehensive Results: Detailed reports with response times, error rates, and status codes
- Customizable Tests: Configure request parameters, headers, and concurrency
- Collaborative Testing: Join testing rooms with multiple team members
Armandra consists of three main components:
- Desktop Client: A Tauri application with React frontend and Rust backend
- Coordination Server: WebSocket server for synchronizing test execution across clients
- Testing Engine: Rust-based HTTP client for efficient request handling
- Node.js 18+
- Rust 1.70+
- pnpm (recommended) or npm
-
Clone the repository:
git clone https://github.com/koompi/armandra.git cd armandra
-
Install dependencies:
pnpm install
-
Start the coordination server:
cd server node index.js
-
Run the desktop application:
pnpm tauri dev
To build the application for your current platform:
pnpm tauri build
- Start the application
- Enter the WebSocket server URL (default:
ws://localhost:3001
) - Click "Connect"
- After connecting, you can either:
- Create a new testing room
- Join an existing room by entering a Room ID
As a room host, you can configure the test parameters:
- Target URL
- HTTP Method (GET, POST, PUT, etc.)
- Request Headers
- Request Body (for POST/PUT)
- Number of requests per client
- Concurrency level
- Request timeout
- The host starts the test
- All clients in the room execute the test simultaneously
- Results are collected and aggregated in real-time
- View detailed metrics and charts after test completion
armandra/
├── src/ # React frontend
│ ├── components/ # UI components
│ ├── store/ # State management
│ └── App.tsx # Main application
├── src-tauri/ # Rust backend
│ ├── src/ # Rust source code
│ │ ├── main.rs # Entry point
│ │ ├── lib.rs # Library code
│ │ ├── stress_test.rs # Testing engine
│ │ └── websocket.rs # WebSocket client
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
└── server/ # Coordination server
└── index.js # WebSocket server
- Frontend: React, TypeScript, Tailwind CSS, Recharts
- Backend: Rust, Tauri, Tokio, Reqwest
- Server: Node.js, WebSocket (ws)
- State Management: Zustand
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.