Distributed testing framework
Go to file
Nick Gauthier 60842f10f9 Version 0.10.2 : Reduced restrictions on config file 2010-02-10 14:49:32 -05:00
lib reduced restrictions on tasks to gracefully handle non-configured setups 2010-02-10 14:45:41 -05:00
test Properly disabling Test::Unit autorun on exit so it won't display extra results 2010-02-10 14:02:19 -05:00
.document Initial commit to hydra. 2010-01-20 11:58:56 -05:00
.gitignore Initial commit to hydra. 2010-01-20 11:58:56 -05:00
LICENSE Initial commit to hydra. 2010-01-20 11:58:56 -05:00
README.rdoc Added More Info section to README 2010-02-10 11:44:18 -05:00
Rakefile broke up ssh connection to a target and options, so we can pass options through to rsync (no rsync yet) 2010-02-09 09:56:06 -05:00
TODO updated TODO 2010-02-10 11:50:41 -05:00
VERSION Version bump to 0.10.2 2010-02-10 14:49:02 -05:00
caliper.yml added caliper config file 2010-02-04 11:31:45 -05:00
hydra.gemspec Version 0.10.2 : Reduced restrictions on config file 2010-02-10 14:49:32 -05:00

README.rdoc

= Hydra

Spread your tests over multiple machines to test your code faster.

== Description

Hydra is a distributed testing framework. It allows you to distribute
your tests locally across multiple cores and processors, as well as
run your tests remotely over SSH.

Hydra's goals are to make distributed testing easy. So as long as
you can ssh into a computer and run the tests, you can automate
the distribution with Hydra.

== Usage

In your rakefile:

  require 'hydra'
  require 'hydra/tasks'

  Hydra::TestTask.new('hydra') do |t|
    t.add_files 'test/unit/**/*_test.rb'
    t.add_files 'test/functional/**/*_test.rb'
    t.add_files 'test/integration/**/*_test.rb'
  end

Run:

  $ rake hydra

Hydra defaults to Single Core mode, so you may want to configure it
to use two (or more) of your cores if you have a multi-processing machine.

== Running Remote Tasks

You can run tasks across all of your remote workers easily with Hydra. In your rake file, add:

  Hydra::RemoteTask.new('db:reset')

Then you can run:

  rake hydra:remote:db:reset

== Running Global Tasks

A Global task is a task run locally *and* remotely. It's used in the same way as RemoteTask:

  Hydra::GlobalTask.new('db:reset')

But it is invoked in a higher namespace:

  rake hydra:db:reset

== Configuration

Place the config file in the main project directory as
'hydra.yml' or 'config/hydra.yml'.

=== Examples

==== Dual Core 

  workers:
    - type: local
      runners: 2

==== Dual Core, with a remote Quad Core server

The -p3022 tells it to connect on a different port

  workers:
    - type: local
      runners: 2
    - type: ssh
      connect: user@example.com
      ssh_opts: -p3022
      directory: /absolute/path/to/project
      runners: 4

==== Two Remote Quad Cores with Synchronization

You can use the 'sync' configuration to allow rsync to synchronize
the local and remote directories every time you run hydra.

  workers:
    - type: ssh
      connect: user@alpha.example.com
      directory: /path/to/project/on/alpha/
      runners: 4
    - type: ssh
      connect: user@beta.example.com
      directory: /path/to/project/on/beta/
      runners: 4

  sync:
      directory: /my/local/project/directory
      exclude:
        - tmp
        - log
        - doc

=== Workers Options

==== type

Either "local" or "ssh".

==== runners

The *runners* option is how many processes will be running
on the machine. It's best to pick the same number
as the number of cores on that machine (as well as your
own).

=== SSH Options

==== connect

The *connect* option is passed to SSH. So if you've setup an
ssh config alias to a server, you can use that. It is also
used in rsync, so you cannot use options.

==== ssh_opts

The *ssh_opts* option is passed to SSH and to Rsync's RSH so
that you can use the same ssh options for connecting and rsync.
Use ssh_opts to set the port or compression options.

==== directory

The *directory* option is the path for the project directory
where the tests should be run.

== More Information

For more information on Hydra, check out the rdocs:

http://rdoc.info/projects/ngauthier/hydra

== Copyright

Copyright (c) 2010 Nick Gauthier. See LICENSE for details.