@Test
public void testHardwareIdPerInstanceTemplate() throws Exception {
PropertiesConfiguration conf = new PropertiesConfiguration("whirr-core-test.properties");
conf.setProperty("whirr.instance-templates", "2 noop, 1 role1+role2, 1 role1, 3 spots, 1 spec");
conf.setProperty("whirr.hardware-id", "c1.xlarge");
conf.setProperty("whirr.templates.noop.hardware-id", "m1.large");
conf.setProperty("whirr.templates.role1+role2.hardware-id", "t1.micro");
conf.setProperty("whirr.templates.role1+role2.image-id", "us-east-1/ami-123324");
conf.setProperty("whirr.templates.spots.aws-ec2-spot-price", 0.5f);
conf.setProperty("whirr.templates.spec.template", "osFamily=UBUNTU,os64Bit=true,minRam=2048");
ClusterSpec spec = ClusterSpec.withTemporaryKeys(conf);
List<InstanceTemplate> templates = spec.getInstanceTemplates();
InstanceTemplate noops = get(templates, 0);
assert noops.getRoles().contains("noop");
assertEquals(noops.getTemplate().getHardwareId(), "m1.large");
assertEquals(noops.getTemplate().getImageId(), null);
assertEquals(noops.getAwsEc2SpotPrice(), null);
InstanceTemplate second = get(templates, 1);
assertEquals(second.getTemplate().getHardwareId(), "t1.micro");
assertEquals(second.getTemplate().getImageId(), "us-east-1/ami-123324");
assertEquals(second.getAwsEc2SpotPrice(), null);
InstanceTemplate third = get(templates, 2);
assertEquals(third.getTemplate(), null);
assertEquals(third.getAwsEc2SpotPrice(), null);
InstanceTemplate spots = get(templates, 3);
assertEquals(spots.getAwsEc2SpotPrice(), new Float(0.5f), 0.001);
InstanceTemplate template = get(templates, 4);
assertEquals(template.getTemplate(), TemplateBuilderSpec.parse("osFamily=UBUNTU,os64Bit=true,minRam=2048"));
assertEquals(template.getAwsEc2SpotPrice(), null);
}