diff --git a/tests/letstest/multitester.py b/tests/letstest/multitester.py index bb1edce2c..9c1c0931d 100644 --- a/tests/letstest/multitester.py +++ b/tests/letstest/multitester.py @@ -315,32 +315,28 @@ def grab_certbot_log(): sudo('if [ -f ./certbot.log ]; then \ cat ./certbot.log; else echo "[nolocallog]"; fi') -def create_client_instances(ec2_client, targetlist, security_group_id, subnet_id): - "Create a fleet of client instances" - instances = [] - print("Creating instances: ", end="") - for target in targetlist: - if target['virt'] == 'hvm': - machine_type = 't2.medium' if cl_args.fast else 't2.micro' - else: - # 32 bit systems - machine_type = 'c1.medium' if cl_args.fast else 't1.micro' - if 'userdata' in target.keys(): - userdata = target['userdata'] - else: - userdata = '' - name = 'le-%s'%target['name'] - print(name, end=" ") - instances.append(make_instance(ec2_client, - name, - target['ami'], - KEYNAME, - machine_type=machine_type, - security_group_id=security_group_id, - subnet_id=subnet_id, - userdata=userdata)) - print() - return instances + +def create_client_instance(ec2_client, target, security_group_id, subnet_id): + """Create a single client instance for running tests.""" + if target['virt'] == 'hvm': + machine_type = 't2.medium' if cl_args.fast else 't2.micro' + else: + # 32 bit systems + machine_type = 'c1.medium' if cl_args.fast else 't1.micro' + if 'userdata' in target.keys(): + userdata = target['userdata'] + else: + userdata = '' + name = 'le-%s'%target['name'] + print(name, end=" ") + return make_instance(ec2_client, + name, + target['ami'], + KEYNAME, + machine_type=machine_type, + security_group_id=security_group_id, + subnet_id=subnet_id, + userdata=userdata) def test_client_process(inqueue, outqueue, boulder_url): @@ -385,7 +381,10 @@ def test_client_process(inqueue, outqueue, boulder_url): def cleanup(cl_args, instances, targetlist): print('Logs in ', LOGDIR) - if not cl_args.saveinstances: + # If lengths of instances and targetlist aren't equal, instances failed to + # start before running tests so leaving instances running for debugging + # isn't very useful. Let's cleanup after ourselves instead. + if len(instances) == len(targetlist) or not cl_args.saveinstances: print('Terminating EC2 Instances') if cl_args.killboulder: boulder_server.terminate() @@ -492,9 +491,13 @@ def main(): security_group_id=security_group_id, subnet_id=subnet_id) + instances = [] try: if not cl_args.boulderonly: - instances = create_client_instances(ec2_client, targetlist, security_group_id, subnet_id) + print("Creating instances: ", end="") + for target in targetlist: + instances.append(create_client_instance(ec2_client, target, security_group_id, subnet_id)) + print() # Configure and launch boulder server #-------------------------------------------------------------------------------