# grosser/parallel_tests

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/grosser-parallel-tests).**

3,493 stars · 514 forks · Ruby

## Links

- GitHub: https://github.com/grosser/parallel_tests
- awesome-repositories: https://awesome-repositories.com/repository/grosser-parallel-tests.md

## Description

This project is a parallel test runner and shell command executor designed to reduce total runtime by executing test suites across multiple CPU cores. It functions as a test suite load balancer and a CI test process manager that coordinates global setup, teardown, and exit codes for continuous integration pipelines.

The tool acts as a test database orchestrator by creating and managing unique database instances mapped to parallel processes, which prevents data collisions. It distributes tests into balanced groups based on file size or recorded runtimes to optimize execution time and avoid bottlenecks.

The system provides capabilities for isolating test environments through unique environment identifiers, filtering test execution via patterns, and capturing interleaved output into dedicated logs. It also supports executing tests on remote machines and terminating all running groups immediately upon a single failure.

## Tags

### Testing & Quality Assurance

- [Parallel Test Execution](https://awesome-repositories.com/f/testing-quality-assurance/parallel-test-execution.md) — Runs test suites across multiple CPU cores simultaneously to reduce the total time required for a full test cycle. ([source](https://github.com/grosser/parallel_tests/blob/master/parallel_tests.gemspec))
- [CI Test Process Managers](https://awesome-repositories.com/f/testing-quality-assurance/ci-test-process-managers.md) — Coordinates global setup, teardown, and exit codes for parallel test suites within continuous integration pipelines.
- [Test Isolation](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-isolation.md) — Ensures test execution environments remain independent by assigning unique identifiers to processes for separate databases and cache namespaces. ([source](https://github.com/grosser/parallel_tests#readme))
- [Test Grouping Utilities](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-utilities-assertions/test-lifecycle-execution-control/test-grouping-utilities.md) — Organizes tests into balanced groups for parallel execution using custom isolation rules or standard input definitions. ([source](https://github.com/grosser/parallel_tests/blob/master/CHANGELOG.md))
- [Workload Balancing](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-utilities-assertions/test-lifecycle-execution-control/test-grouping-utilities/workload-balancing.md) — Distribute tests into groups based on size or runtime to prevent slow files from delaying the completion of the entire suite. ([source](https://github.com/grosser/parallel_tests/blob/master/Readme.md))
- [Parallel Database Orchestration](https://awesome-repositories.com/f/testing-quality-assurance/parallel-database-orchestration.md) — Creates and manages unique database instances mapped to parallel processes to prevent data collisions. ([source](https://github.com/grosser/parallel_tests/blob/master/Readme.md))
- [Runtime-Based Balancing](https://awesome-repositories.com/f/testing-quality-assurance/parallel-test-execution/runtime-based-balancing.md) — Distribute tests across processes using recorded runtimes to prevent slow test groups from delaying the total execution time. ([source](https://github.com/grosser/parallel_tests#readme))
- [Test Suite Partitioning](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/test-execution-orchestration/automated-test-runners/test-suite-partitioning.md) — Splits large test suites into balanced, parallelizable chunks for distribution across machines. ([source](https://github.com/grosser/parallel_tests/wiki/Distributed-Parallel-Tests-on-CI-systems))
- [Test Suite Partitioners](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/end-to-end-testing-suites/test-suite-partitioners.md) — Distributes tests into balanced groups based on file size or recorded runtimes to optimize total execution time.
- [Test Execution Runners](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/test-frameworks/execution-and-infrastructure/test-execution-runners.md) — Manages the splitting and parallel execution of test suites across multiple CPU cores to reduce total runtime.
- [Test Data Isolation](https://awesome-repositories.com/f/testing-quality-assurance/test-data-isolation.md) — Manages multiple separate database instances mapped to parallel processes to prevent data collisions during concurrent execution.
- [Immediate Failure Termination](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-failure-debugging-tools/immediate-failure-termination.md) — Terminates all running test groups immediately after a single failure to provide faster feedback during development. ([source](https://github.com/grosser/parallel_tests/blob/master/CHANGELOG.md))
- [Database State Management](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-utilities-assertions/test-data-management/database-state-management.md) — Purges or dumps database structures in parallel across all test environments to ensure a clean state. ([source](https://github.com/grosser/parallel_tests/blob/master/CHANGELOG.md))
- [Concurrent Log De-interleaving](https://awesome-repositories.com/f/testing-quality-assurance/parallel-test-execution/concurrent-log-de-interleaving.md) — Captures stdout and stderr from concurrent processes into separate logs to prevent interleaved terminal output.
- [Parallel Test Log Management](https://awesome-repositories.com/f/testing-quality-assurance/parallel-test-log-management.md) — Captures results and failures from multiple concurrent processes into dedicated logs to avoid interleaving. ([source](https://github.com/grosser/parallel_tests#readme))
- [Test Execution Filtering](https://awesome-repositories.com/f/testing-quality-assurance/test-execution-filtering.md) — Allows running a specific subset of tests matching a regular expression to isolate functional areas. ([source](https://github.com/grosser/parallel_tests/blob/master/Readme.md))

### Data & Databases

- [Test Database Provisioners](https://awesome-repositories.com/f/data-databases/database-orchestration/test-database-provisioners.md) — Creates and manages unique database instances mapped to parallel processes to prevent data collisions.

### Development Tools & Productivity

- [Parallel Command Execution](https://awesome-repositories.com/f/development-tools-productivity/parallel-command-execution.md) — Executes any shell command across multiple processes, assigning each a unique process identifier. ([source](https://github.com/grosser/parallel_tests/blob/master/Readme.md))
- [Queued Parallel Command Executors](https://awesome-repositories.com/f/development-tools-productivity/parallel-command-execution/queued-parallel-command-executors.md) — Runs arbitrary shell commands across multiple processes with unique environment identifiers for task distribution.
- [Shell Command Execution](https://awesome-repositories.com/f/development-tools-productivity/shell-command-execution.md) — Wraps arbitrary shell commands to distribute arguments and manage exit codes across concurrent executions.

### DevOps & Infrastructure

- [CI Pipeline Optimizers](https://awesome-repositories.com/f/devops-infrastructure/ci-pipeline-optimizers.md) — Optimizes automated checks in CI environments by balancing test workloads based on runtime or file size.

### Software Engineering & Architecture

- [Environment Isolation](https://awesome-repositories.com/f/software-engineering-architecture/environment-isolation.md) — Provides process-level isolation using unique environment identifiers to prevent data collisions in databases and caches.
- [Parallel Processing Utilities](https://awesome-repositories.com/f/software-engineering-architecture/parallel-processing-utilities.md) — Spawns multiple independent shell processes to execute test subsets across available CPU cores.
- [Process Coordinators](https://awesome-repositories.com/f/software-engineering-architecture/process-coordinators.md) — Coordinates the lifecycle of parallel processes to handle global setup and teardown tasks.

### System Administration & Monitoring

- [Aggregated Exit Code Collectors](https://awesome-repositories.com/f/system-administration-monitoring/exit-code-trackers/aggregated-exit-code-collectors.md) — Combines exit codes from multiple parallel child processes into a single final result for CI pipeline signaling. ([source](https://github.com/grosser/parallel_tests/blob/master/CHANGELOG.md))
