ReleaseEngineering/How To/Set Up a New AWS Slave Class
We currently run most of Linux based tests on AWS. AWS has many instance types. We use spot instances because they are cheaper than on-demand. The default instance type we run most of our Linux based tests is m1.medium. It is low cost but is not powerful enough for some of our tests, like crashtests and reftests on Android emulators, or media or gaia-ui tests on B2G. So how do you add a new slave class for so that different tests can run within different instance types within the for the same platform (i.e. Android 2.3 opt)?
This example will focus on the adding tst-emulator64-spot instance slave type because this is the one I recently added.
First you need to create an AMI for the new slave type.
The configs for each AMI are stored in cloud tools. For the tst-emulator64-spot AMI I created, I reused the existing tst-linux64 AMI id and copied it into the new configs I created.
http://hg.mozilla.org/build/puppet/file/cdd03eb55435/modules/aws_manager/manifests/cron.pp#l115