A tool for creating and managing testbot clusters in the cloud.
TestbotCloud is based around the idea that you have a project folder for each cluster (which you can store in version control). You then use the "testbot_cloud" command to start and stop the cluster.
The motivation behind this tool, besides making distributed testing simpler is to be able to run a cluster only when it's needed (by scheduling it with tools like cron).
gem install testbot_cloud
Using AWS EC2:
- Get a AWS account at http://aws.amazon.com/.
- Create a Key Pair.
- Allow SSH login to a security group. For example: SSH, tcp, 22, 22, 0.0.0.0/0.
Using Brightbox:
- Get a beta account at http://beta.brightbox.com/beta.
- Follow http://docs.brightbox.com/guides/getting_started to setup a SSH key.
Create a project
testbot_cloud new demo
# create demo/config.yml
# create demo/.gitignore
# create demo/bootstrap/runner.sh
Start
cd demo
testbot_cloud start
# Starting 1 runners...
# i-dd2222dd is being created...
# i-dd2222dd is up, installing testbot...
# i-dd2222dd ready.
Shutdown
testbot_cloud stop
# Shutting down i-dd2222dd...
- Run DEBUG=true testbot_cloud start to show all SSH commands and output.
-
Don't create more than 10-15 or so runners at a time (some cloud providers don't allow more than that many connections at once). This might be fixed by batching the creation process in a later version of TestbotCloud.
-
Don't create more than 20 runners in total on EC2 as it has a limit by default. See the EC2 FAQ for more info.
- TestbotCloud is continuously tested for compatibility with Ruby 1.8.7, 1.9.2, 1.9.3, JRuby 1.6.2 and Rubinius 1.2.3. I'm also trying out travis-ci at http://travis-ci.org/#!/joakimk/testbot_cloud.
- TestbotCloud is designed to be as reliable as possible when starting and stopping so that you can schedule it with tools like cron and save money.
Basics:
- Look at lib/server/aws.rb and lib/server/brightbox.rb.
- Write your own and add it to lib/server/factory.rb.
- Add fog config suitable for the provider to your config.yml.
When contributing:
- Make sure you have the tests running on your machine (should be just running "bundle" and "rake").
- Write tests.
- Add a config example to the template at lib/templates/config.yml.
- Update this readme.