Giter VIP home page Giter VIP logo

parallel_specs's Introduction

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
[email protected]
Hereby placed under public domain, do what you want, just do not hold me accountable...

parallel_specs's People

Contributors

grosser avatar joakimk avatar thiagopradi avatar mifix avatar mhorbul avatar

Stargazers

 avatar  avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.