登录 注册

parallel_tests

去点 Star
开发者工具
3,527
Stars
—
Forks
0
Watchers
—
Open Issues
待补全
许可证
Ruby
语言
—
创建时间
最近更新

项目能做什么

利用多核 CPU 加速 Ruby 运行 RSpec、Test::Unit 和 Cucumber 测试的并发工具。
来源:AI 基于仓库事实生成 · 内容以仓库实际 README 为准

使用说明 查看原始 README 原仓库文档

中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# parallel_tests

[![Gem Version](https://badge.fury.io/rb/parallel_tests.svg)](https://rubygems.org/gems/parallel_tests)
[![Build status](https://github.com/grosser/parallel_tests/workflows/test/badge.svg)](https://github.com/grosser/parallel_tests/actions?query=workflow%3Atest&branch=master)

Speedup Minitest + RSpec + Turnip + Cucumber + Spinach by running parallel on multiple CPU cores.<br/>
ParallelTests splits tests into balanced groups (by number of lines or runtime) and runs each group in a process with its own database.

Setup for Rails
===============
[RailsCasts episode #413 Fast Tests](http://railscasts.com/episodes/413-fast-tests)

### Install
`Gemfile`:

```ruby
gem 'parallel_tests', group: [:development, :test]
```

### Add to `config/database.yml`

ParallelTests uses 1 database per test-process.
<table>
  <tr><td>Process number</td><td>1</td><td>2</td><td>3</td></tr>
  <tr><td>ENV['TEST_ENV_NUMBER']</td><td>''</td><td>'2'</td><td>'3'</td></tr>
</table>

```yaml
test:
  database: yourproject_test<%= ENV['TEST_ENV_NUMBER'] %>
```

### Create additional test database(s)
    rake parallel:create
    rake parallel:create:<database> # if using multi-db setup, <database> would be `secondary` for example

### Copy development schema into all test databases (repeat after migrations)
    rake parallel:prepare

### Run!
    rake parallel:test              # Minitest
    rake parallel:spec              # RSpec
    rake parallel:features          # Cucumber
    rake parallel:features-spinach  # Spinach

    rake "parallel:test[1]" --> force 1 CPU --> 86 seconds
    rake parallel:test      --> got 2 CPUs? --> 47 seconds
    rake parallel:test      --> got 4 CPUs? --> 26 seconds
    ...

Test by pattern with Regex (e.g. use one integration server per subfolder / see if you broke any 'user'-related tests)

    rake "parallel:test[^test/unit]" # every test file in test/unit folder
    rake "parallel:test[user]"  # run users_controller + user_helper + user tests
    rake "parallel:test['user|product']"  # run user and product related tests
    rake "parallel:spec['spec\/(?!features)']" # run RSpec tests except the tests in spec/features


### Example output

    2 processes for 210 specs, ~ 105 specs per process
    ... test output ...

    843 examples, 0 failures, 1 pending

    Took 29.925333 seconds

### Run an arbitrary task in parallel
```Bash
RAILS_ENV=test parallel_test -e "rake my:custom:task"
# or
rake "parallel:rake[my:custom:task]"
# limited parallelism
rake "parallel:rake[my:custom:task,2]"
```

### Run migrations in all test databases (repeat after migrations)
    rake parallel:migrate
    rake parallel:migrate:<database> # for multi-db setup

### Setup environment from scratch (create db and loads schema, useful for CI)
    rake parallel:setup

### Drop all test databases
    rake parallel:drop
    rake parallel:drop:<database> # for multi-db setup


Running setup or teardown once
===================

```Ruby
require "parallel_tests"
阅读完整原文

项目深度分析 AI 生成

CI 测试耗时分析与智能分组 SaaS

产品构想基于 parallel_tests 的 runtime-log 机制,提供云端 SaaS 服务自动收集每次 CI 的测试耗时,动态计算最优分组策略并通过 API 下发给 CI 节点,同时提供慢测试趋势告警。
核心功能runtime-log 云端自动上传与拉取、基于历史数据的智能负载均衡算法、慢测试排行榜与波动监控面板。
目标用户测试运行时间超过 10 分钟、使用 GitHub Actions/GitLab CI 等云端 CI 的 Ruby/Rails 团队。
难度/周期中 · 1-2 个月 · 成本:低(轻量级 Web 服务与对象存储)
收费模式按团队规模或月度 CI 构建次数订阅收费(SaaS)。
竞争风险部分团队可能仅使用免费的 CI 缓存机制即可满足需求,付费转化率需验证。
依据 已验证事实(README 明确提到需手动或通过 CI 脚本上传/下载 runtime-log 以实现均衡分组)

分布式跨机测试编排器(CI Matrix 增强)

产品构想parallel_tests 目前主要针对单机多核并行(依赖多数据库实例 ENV['TEST_ENV_NUMBER']),可将其扩展为支持跨多台 CI 容器/虚拟机的分布式并行调度工具,突破单机 CPU 核数上限。
核心功能跨节点测试文件动态分发、统一测试结果聚合、与主流 CI 矩阵(Matrix)无缝集成的 CLI 包装器。
目标用户拥有超大型测试套件、单机多核仍无法满足构建速度要求的中大型 Rails 企业。
难度/周期中高 · 2-3 个月 · 成本:低至中
收费模式开源核心 + 商业版调度服务/企业授权(Open Core)。
竞争风险市面上已有 Knapsack Pro 等类似竞品,需明确差异化优势(如零配置兼容现有 parallel_tests)。
依据 AI推测

Rails 测试提速与 CI 成本优化专项服务

产品构想面向不愿自研基础设施的团队,提供基于 parallel_tests 的标准化加速方案落地,包括多数据库配置、CI 缓存优化及测试隔离问题排查。
核心功能CI 流水线诊断报告、parallel_tests 定制化脚本与数据库配置模板、团队培训与长期技术支持。
目标用户测试环境配置复杂、存在数据库锁或竞态条件(如 README 提及的 first_process 竞态问题)的 Rails 团队。
难度/周期低 · 2-4 周即可启动 · 成本:极低(主要为人力时间成本)
收费模式按项目一次性咨询收费或按月收取顾问服务费。
竞争风险服务模式难以规模化,高度依赖个人交付时间。
依据 尚需验证的假设
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心

竞品与相似项目 GitHub Search 真实检索

相似项目数据正在完善中,暂不展示(避免误导)

项目优势与风险

技术成熟度创建时间待补全,最近推送
社区活跃Star 3,527 / Fork 0 / Issue 0(数据支持,可自行核实)
许可证未检测到(需人工确认)
主要风险上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价

安装与使用

快速开始(以仓库 README 为准)
git clone https://github.com/grosser/parallel_tests.git
cd parallel_tests
docker compose up -d   # 或参考 README 中的 docker run 命令
阅读原仓库文档
术语说明:Docker=应用容器(把程序和依赖打包运行);API Key=调用外部服务的密钥;Git Clone=把仓库代码下载到本地。常见错误:API Key 未配置 / 端口占用 / 数据库连接失败,多数项目在 README 的 Troubleshooting 章节有说明。