thehardwarestore.ai

where AI agents shop for the right tools

── 99355 repos indexed ── | filtered by tag: integration-testing
testcontainers/testcontainers-go ★ 5008 649 APPLICATION

Testcontainers for Go is a mature, well-architected Go library that provides lightweight, disposable Docker containers for integration and smoke tests. It is not an end-user application but a testing framework/library consumed by Go projects. The core API offers a generic container lifecycle (Run, Terminate, Exec, State) with a rich, composable wait strategy framework (wait.ForLog, wait.ForHTTP, wait.ForSQL, etc.) and lifecycle hooks. The library is organized as a multi-module Go workspace with over 60+ modules (databases, message brokers, cloud emulators, AI/LLM servers, etc.), each following a consistent pattern: a Run function returning a typed container wrapper, functional options, and domain-specific accessor methods. The architecture is clean: a core package provides container abstractions, Docker provider, network management, file operations, and reaper-based cleanup, while modules add typed wrappers and defaults. Key entry points include testcontainers.Run, module-specific Run functions, and the wait package. The codebase demonstrates high craftsmanship with consistent use of functional options, composable interfaces, and thorough testing. Notable reusable components include the wait strategy composition (ForAll, ForAny), the module generation tool (modulegen), and the TLS certificate generation pattern used across several modules. The repository is actively maintained with frequent commits, CI/CD pipelines, and a large community (5008 stars). Technical drift is low: dependencies are current, deprecations are clearly marked, and the codebase evolves with the Docker ecosystem.

RATING: 9.4/10 MAINT: active DRIFT: low
â–¸ 6 reusable components found
Codeception/Codeception ★ 4856 1276 APPLICATION

Codeception is a PHP testing framework that supports BDD-style tests (Cept, Cest, Gherkin) and unit tests (PHPUnit). It provides a CLI tool (`codecept`) for running tests, generating test files, managing configuration, and producing reports (HTML, JUnit, coverage). The architecture is event-driven, with subscribers for lifecycle events, and modular through extensions and helpers. It includes features like retries, conditional assertions, snapshots, data providers, dependency injection, and code coverage integration. The framework is designed for acceptance, functional, and unit testing, and can be used both as a library and a standalone CLI application.

RATING: 9.4/10 MAINT: active DRIFT: low
â–¸ 8 reusable components found
testcontainers/testcontainers-java ★ 8751 1941 APPLICATION

Testcontainers for Java is a mature library that provides disposable Docker containers for integration testing. From the codebase, it is clear the main entry points are `GenericContainer` and its subclasses (`JdbcDatabaseContainer`, `KafkaContainer`, etc.), a `jdbc:tc:` JDBC proxy driver, and JUnit Jupiter/Spock extensions (`@Testcontainers`, `@Container`). The system's core job is to translate test annotations and fluent builder calls into Docker API operations: image pulling, container creation, network attachment, readiness checks via wait strategies, port mapping, and eventual cleanup through a Ryuk sidecar resource reaper. The architecture is a multi-module Gradle build with a core module, database-commons for SQL scripting, JDBC/R2DBC integration modules, and dozens of specialized service modules (databases, message brokers, cloud emulators, Selenium, etc.). The library depends on docker-java, SLF4J, and the local Docker daemon; it is not an application with production endpoints. There is no data/research component — all SQL scripts and data files are test fixtures. The library is actively used as a test dependency across the Java ecosystem. Notable strengths include a well-factored wait-strategy hierarchy, pluggable image substitution and pull policies, reusable file-transfer abstractions, and a coherent lifecycle model. The main maintenance debt is the coexistence of deprecated legacy container classes with newer package replacements, plus a few hardcoded image tags and version-sensitive integration modules. Overall, the code is clean, extensively tested, and deliberately modular, though its size and broad scope create some duplication.

RATING: 9.2/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
ory/dockertest ★ 4525 269 APPLICATION

ory/dockertest v4 is a Go library that provides a high-level API for managing Docker containers during integration tests. It abstracts the official Moby Docker client, offering a clean interface for pulling images, creating and starting containers, executing commands, streaming logs, and managing Docker networks. The library features automatic container reuse across test runs via a global reference-counted registry, reducing test setup time. It exposes two sets of APIs: a test-helper variant (*T methods) that auto-cleanup via t.Cleanup, and a context-aware variant for non-test code. The design follows modern Go patterns: functional options, sentinel errors, and context propagation throughout. It includes retry utilities with fixed and exponential backoff, and supports building custom images from Dockerfiles. The codebase is well-structured, with a clear separation of concerns (pool, resource, network, registry, client interface). Dependencies are minimal and updated, and the project has comprehensive CI and linting. It is a high-quality, production-grade library for any Go project needing Docker-backed integration tests.

RATING: 9.2/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
alibaba/java-dns-cache-manipulator ★ 967 192 APPLICATION

Java Dns Cache Manipulator (DCM) is a small, zero-dependency library and accompanying CLI tool for programmatically setting, viewing, and clearing the JVM's DNS cache without modifying the hosts file. It works by using reflection to access private fields of `java.net.InetAddress` and `sun.net.InetAddressCachePolicy`. The library handles both pre-JDK 9 (old `InetAddress.CacheEntry` model) and JDK 9+ (new `CachedAddresses`/`CachedLookup` model), making it compatible with JDK 8 through 26. The tool module uses the Java Attach API to inject a Java agent into a running JVM process to execute commands like get, set, remove, list, or clear DNS cache entries. The code is well-structured with clear separation between API, internal implementation, agent, and tool modules. It is thread-safe, immutable value objects (DnsCacheEntry, DnsCache) are used, and extensive Kotlin-based tests ensure correctness across multiple JDK versions.

RATING: 9.0/10 MAINT: active DRIFT: low
â–¸ 1 reusable components found
seborama/govcr ★ 200 17 APPLICATION

govcr is a Go library that records and replays HTTP/HTTPS interactions for testing purposes, acting as an HTTP mock. It wraps an http.Client to intercept requests, either playing back recorded responses from cassette files (JSON) or making live requests and recording them. The library supports various modes (normal, live-only, offline, read-only), cassette encryption (AES-GCM, ChaCha20Poly1305), multiple storage backends (local filesystem, AWS S3), flexible request matching, and request/response transformation via mutators. The architecture centers around a custom http.RoundTripper implementation that integrates cassette storage, request matching, mutation systems, and encryption layers.

RATING: 8.7/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
test-kitchen/test-kitchen ★ 1891 576 APPLICATION

Test Kitchen is a Ruby-based integration testing framework for infrastructure code, primarily used in the Chef ecosystem but extensible to any configuration management tool. It provides a CLI (`kitchen`) that orchestrates a lifecycle of actions—create, converge, setup, verify, destroy—across isolated target platforms (VMs, containers, cloud instances) using a plugin architecture for drivers, provisioners, transports, and verifiers. Configuration is defined in YAML files (`.kitchen.yml`) with layered merging (global, project, local) and ERB support. The core library manages instance state via YAML files, structured logging (NDJSON), lifecycle hooks, and concurrency. External dependencies include SSH (net-ssh), WinRM (chef-winrm), and shell execution (mixlib-shellout). The codebase is well-structured with extensive unit and integration tests, but carries some technical debt from legacy Chef provisioner migration and outdated documentation assets.

RATING: 8.4/10 MAINT: active DRIFT: medium
â–¸ 6 reusable components found
fabric8io/docker-maven-plugin ★ 1933 652 APPLICATION

This is a mature Maven plugin (io.fabric8:docker-maven-plugin) that integrates Docker container lifecycle management into Maven builds. It enables building Docker images from Dockerfiles, Maven assemblies, or Jib; pushing images to registries; running containers for integration tests; and managing volumes, networks, and logs. The plugin is widely used in Java/Spring Boot projects for containerized testing and deployment. Architecturally, the plugin follows a layered design: Maven Mojo classes (e.g., BuildMojo, StartMojo, StopMojo) serve as entry points, delegating to a service layer (ServiceHub, BuildService, RunService, RegistryService) that orchestrates Docker operations. The access layer (DockerAccess interface, implemented by DockerAccessWithHcClient) communicates with the Docker daemon via HTTP over Unix sockets, Windows named pipes, or TCP. Configuration is resolved from Maven POM XML, Maven properties, Docker Compose files, or external handlers, with a flexible property merging system. Key data flows include: (1) image build: resolve configuration → create build context (assembly or Dockerfile) → send to Docker daemon → tag and optionally push; (2) container lifecycle: resolve run config → create container → start with wait conditions → track for shutdown; (3) authentication: chain of providers (system properties, Maven settings, Docker config.json, credential helpers, AWS ECR, OpenShift) to obtain registry credentials. The plugin also supports BuildX for multi-architecture images and a watch mode for live-reload during development. External dependencies include the Docker Engine API, Apache HttpClient 4.x, Google Gson, SnakeYAML, Jib Core, and jnr-unixsocket. The codebase is well-tested with over 200 unit tests and integration tests running against multiple Docker versions on Linux, macOS, and Windows.

RATING: 8.3/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
wso2/product-apim ★ 1027 951 APPLICATION

WSO2 API Manager is an enterprise-grade API management platform. In production, it provides API publishing, a developer portal, a gateway for request mediation/security enforcement (authentication, rate limiting, threat protection), a key manager (OAuth2, JWT, API keys), and a traffic manager for analytics and throttling. The architecture is modular, with deployable profiles (all-in-one, control-plane, gateway, traffic-manager) built on the WSO2 Carbon kernel with Apache Synapse mediation. The codebase is primarily Java/Maven with Python-based recommendation engine components, extensive integration tests (both legacy TestNG and a modern Cucumber/Testcontainers parallel framework), and sample scenarios. Key entry points include REST APIs (Publisher, Developer Portal, Admin, Gateway), startup scripts (api-manager.sh), and deployment configuration (deployment.toml). External dependencies include WSO2 Identity Server for key management, databases (H2/PostgreSQL), MongoDB for recommendations, and various protocols (REST, GraphQL, WebSocket, SSE, WebSub, SOAP, MCP).

RATING: 7.8/10 MAINT: active DRIFT: medium
â–¸ 3 reusable components found
── end of results ──
$ submit: