grosser / parallel_specs
- Source
- Commits
- Network (11)
- Issues (1)
- Downloads (0)
- Wiki (1)
- Graphs
-
Branch:
master
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Thu Jun 04 00:18:17 -0700 2009 | |
| |
README.markdown | Sat Dec 19 01:09:59 -0800 2009 | |
| |
Rakefile | Wed Nov 18 01:13:34 -0800 2009 | |
| |
lib/ | Sat Dec 19 01:00:17 -0800 2009 | |
| |
spec/ | Sat Dec 19 01:00:17 -0800 2009 | |
| |
tasks/ | Sat Nov 07 04:48:20 -0800 2009 |
README.markdown1: Add to
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/prallel_profile.log
It will log test runtime and partition the test-load accordingly.
TIPS
- [RSpec] add a
spec/parallel_spec.optsto use different options, e.g. no --drb (default:spec/spec.opts) - [RSpec] if something looks fishy try to delete
script/spec - [RSpec] if
script/specis missing parallel:spec uses justspec(which solves some issues with double-loaded environment.rb) - [RSpec] 'script/spec_server' or spork do not work in parallel
- [RSpec]
./script/generate rspecif 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
Michael Grosser
grosser.michael@gmail.com
Hereby placed under public domain, do what you want, just do not hold me accountable...
