github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

grosser / parallel_specs

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 137
    • 13
  • Source
  • Commits
  • Network (13)
  • Issues (1)
  • Downloads (0)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Branches (1)
    • master ✓
  • Tags (0)
Sending Request…
Enable Donations

Pledgie Donations

Once activated, we'll place the following badge in your repository's detail box:
Pledgie_example
This service is courtesy of Pledgie.

Rails: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber — Read more

  cancel

  cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

add willbryant to contributers 
grosser (author)
Tue Feb 09 12:25:37 -0800 2010
commit  c3e41a842ff15a01eb173ced63cc0979c860a4a5
tree    70d6e2d4ecde314684148eefd7358109b120aa3c
parent  ece075e6429fcbd84895269851e27a93814e0fed
parallel_specs /
name age
history
message
file .gitignore Thu Jun 04 00:18:17 -0700 2009 Added ignore for local scripts. [joakimk]
file README.markdown Tue Feb 09 12:25:37 -0800 2010 add willbryant to contributers [grosser]
file Rakefile Wed Nov 18 01:13:34 -0800 2009 use spectask to better run on ci server [grosser]
directory lib/ Tue Feb 09 11:52:13 -0800 2010 make sorting more readable, make tests more rea... [grosser]
directory spec/ Tue Feb 09 11:52:13 -0800 2010 make sorting more readable, make tests more rea... [grosser]
directory tasks/ Sat Nov 07 04:48:20 -0800 2009 added parallel gem as requirement, removed loca... [grosser]
README.markdown

Speedup RSpec + Test::Unit + Cucumber by running parallel on multiple CPUs.

Setup

sudo gem install parallel
script/plugin install git://github.com/grosser/parallel_specs.git

1: Add to config/database.yml

test:
  database: xxx_test<%= ENV['TEST_ENV_NUMBER'] %>

2: Create additional database(s)

script/db_console
create database xxx_test2;
...

3: Copy development schema (repeat after migrations)

rake parallel:prepare

4: Run!

rake parallel:spec          # RSpec
rake parallel:test          # Test::Unit
rake parallel:features      # Cucumber

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

Test just a subfolder (e.g. use one integration server per subfolder)

rake parallel:spec[models]
rake parallel:test[something/else]

partial paths are OK too...
rake parallel:test[functional] == rake parallel:test[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

Even process runtimes (for specs only atm)

Add to your spec/parallel_spec.opts (or spec/spec.opts) :

--format ParallelSpecs::SpecRuntimeLogger:tmp/parallel_profile.log

It will log test runtime and partition the test-load accordingly.

TIPS

  • [RSpec] add a spec/parallel_spec.opts to use different options, e.g. no --drb (default: spec/spec.opts)
  • [RSpec] if something looks fishy try to delete script/spec
  • [RSpec] if script/spec is missing parallel:spec uses just spec (which solves some issues with double-loaded environment.rb)
  • [RSpec] 'script/spec_server' or spork do not work in parallel
  • [RSpec] ./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

  • make spec runtime recording/evaluating work with sub-folders
  • 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)

  • Charles Finkel -- charles.finkel<$at$>gmail.com
  • Jason Morrison -- jason.p.morrison<$at$>gmail.com
  • Joakim Kolsjö -- joakim.kolsjo<$at$>gmail.com
  • Kpumuk -- kpumuk<$at$>kpumuk.info
  • Maksim Horbu -- likonar<$at$>gmail.com
  • Rohan Deshpande -- rohan.deshpande@gmail.com
  • Tchandy -- tchandy<$at$>gmail.com
  • Will Bryant -- will.bryant<$at$>gmail.com

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

Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server