Locust is an open-source, developer-friendly load testing framework written in Python. It allows users to define test scenarios as regular Python code using `User` classes with `@task` decorators and configurable wait times. The system supports HTTP and other protocols via built-in clients (HttpUser, FastHttpUser) and extensible contrib modules (MQTT, gRPC, Postgres, etc.). It provides a real-time web UI built with React/Redux/MUI for controlling tests and viewing statistics, a headless CLI mode for CI/CD integration, and a distributed architecture using ZMQ for master/worker coordination. The framework collects detailed per-request metrics (response times, percentiles, error rates) and can export CSV, HTML, and JSON reports. It also integrates with OpenTelemetry for observability. The codebase is well-structured with a clean event-driven architecture, extensive test coverage, and a plugin system for custom extensions.
Bruno is a comprehensive API client and testing tool built with Electron, React, and Redux. It provides a full-featured interface for creating, sending, and analyzing HTTP/WebSocket/gRPC/GraphQL requests, similar to Postman but with an open-source core. The application features a modular architecture with separate packages for the GUI (bruno-app), Electron main process (bruno-electron), CLI (bruno-cli), request handling (bruno-requests), file storage (bruno-filestore), and shared utilities (bruno-common). Key capabilities include environment and variable management with secure secret handling, pre-request and test scripting using a custom BruJS runtime, collection organization and workspaces, import/export from formats like Postman, OpenAPI, and Insomnia, mock server functionality, and code generation from requests. The UI uses styled-components for theming with light/dark/system themes, and incorporates advanced features like AI-assisted request building and OpenAPI synchronization. The codebase demonstrates strong engineering practices with extensive unit and end-to-end testing, TypeScript throughout, and a clean separation of concerns between the main and renderer processes via IPC. Notable reusable components include a secure variable interpolation system, cross-platform detection utilities, persistent state hooks, and a worker-offloaded file format parser.
Mentoss is a utility library for mocking JavaScript fetch() requests and responses in testing environments. It provides three primary classes: MockServer for defining request/response routes, FetchMocker for creating mocked fetch functions that work with one or more MockServers, and MockAgent for undici Dispatcher support in Node.js environments. The library handles complex HTTP features including CORS, credentials, redirects, and various request matching scenarios (URL parameters, headers, body content). The architecture is modular and well-separated, with distinct responsibilities for route matching (request-matcher.js), CORS handling (cors.js), cookie management (cookie-credentials.js), and request/response processing. Each MockServer instance maintains its own route registry and tracks which routes have been called, enabling precise test assertions. The FetchMocker coordinates multiple servers and handles cross-origin requests with proper CORS preflighting and credential attachment. Mentoss is designed for use in test suites where developers need to simulate HTTP interactions without making actual network calls. It supports both browser-like fetch() behavior (with baseUrl and credentials options) and Node.js undici/fetch() usage (via MockAgent). The library includes comprehensive testing helpers to verify which routes were called, assert all routes were exercised, and diagnose mismatched requests through detailed tracing.
Apache JMeter is a mature, open-source performance and load testing application written primarily in Java with some Kotlin. It simulates heavy loads on servers, networks, or objects to analyze overall performance under different load types. The architecture is modular: a core engine (StandardJMeterEngine) executes test plans composed of a tree of TestElements (samplers, controllers, timers, assertions, listeners). Protocols are implemented as separate modules (HTTP, FTP, JDBC, JMS, LDAP, TCP, etc.), each providing samplers and GUI components. The system supports both GUI (Swing) and non-GUI (command-line) modes, distributed testing via RMI, and real-time metrics export to InfluxDB or Graphite. Key entry points include the NewDriver launcher, the JMeterEngine interface, and the TestPlan tree. Data flows involve sample generation by samplers, processing by assertions and extractors, and collection by listeners/visualizers, with results written to CSV/XML files or streamed to backends. External dependencies include Apache HttpClient, Jodd, jsoup, XStream, Apache Commons Math, and various protocol-specific libraries.