hydra/README.rdoc

119 lines
2.6 KiB
Plaintext

= 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.
== 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.
== Copyright
Copyright (c) 2010 Nick Gauthier. See LICENSE for details.