Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Rails: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber
Ruby
Branch: master
Pull request Compare This branch is 983 commits behind grosser:master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib Use the $PATH/spec when ./script/spec does not exist
spec
tasks
.gitignore
README.markdown
Rakefile

README.markdown

Rake tasks to run tests, cucmber features or specs in parallel, to use multiple CPUs and speedup test runtime. more documentation and great illustrations

Setup

script/plugin install git://github.com/grosser/parallel_specs.git

Add <%= ENV['TEST_ENV_NUMBER'] %> to the database name for the test environment in config/database.yml,
it is '' for process 1, and '2' for process 2.

test:
  adapter: mysql
  database: xxx_test<%= ENV['TEST_ENV_NUMBER'] %>
  username: root

Create the databases mysql -u root create database xxx_test; #should normally exist... create database xxx_test2; ...

Run like hell :D rake parallel:prepare[2] #db:reset for 2 databases

rake parallel:spec[1] --> 1 cpu  --> 86 seconds
#OR for Test::Unit
rake parallel:test[1]
#OR for Cucumber
rake parallel:features[1]

rake parallel:spec    --> 2 cpus --> 47 seconds
rake parallel:spec[4] --> 4 cpus --> 26 seconds
...

Just some subfolders please (e.g. set up one integration server to check each subfolder) rake parallel:spec[2,models] rake parallel:test[2,something/else]

partial paths are OK too...
rake parallel:test[2,functional] == rake parallel:test[2,fun]

Example output

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

Results:
877 examples, 0 failures, 11 pending
843 examples, 0 failures, 1 pending

Took 29.925333 seconds

TIPS

  • 'script/spec_server' or spork do not work in parallel
  • ./script/generate rspec if you are running rspec from gems (this plugin uses script/spec which may fail if rspec files are outdated)
  • with zsh this would be rake "parallel:prepare[3]"

TODO

  • add gem + cli interface parallel_specs + parallel_tests + parallel_features -> non-rails projects
  • build parallel:bootstrap idea/basics
  • make jRuby compatible basics
  • make windows compatible (does anyone care ?)

Authors

inspired by pivotal labs

Contributors (alphabetical)

Michael Grosser
grosser.michael@gmail.com
Hereby placed under public domain, do what you want, just do not hold me accountable...

Something went wrong with that request. Please try again.