Skip to content
This repository has been archived by the owner on Aug 30, 2024. It is now read-only.

Custom userdata tests #233

Open
wants to merge 5 commits into
base: testing
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Updated instancetest.py to use id_generator in UserData test
hspencer77 committed Jan 5, 2014
commit e8dab5703e4d778f12d882c12c79c9269545cc5c
52 changes: 24 additions & 28 deletions testcases/cloud_user/instances/instancetest.py
Original file line number Diff line number Diff line change
@@ -15,8 +15,6 @@
import os
import re
import random
import StringIO
import difflib


class InstanceBasics(EutesterTestCase):
@@ -58,18 +56,17 @@ def __init__( self, name="InstanceBasics", credpath=None, region=None, config_fi
self.volume = None
self.private_addressing = False
if not user_data:
self.user_data_file = 'testcases/cloud_user/instances/user-data-tests/userdata-max-size.txt'
else:
self.user_data_file = None
### Set userdata string to 16K to test max string size for userdata
self.user_data = self.tester.id_generator(16000)
if not zone:
zones = self.tester.ec2.get_all_zones()
self.zone = random.choice(zones).name
else:
self.zone = zone
self.reservation = None
self.reservation_lock = threading.Lock()
self.run_instance_params = {'image': self.image, 'user_data': user_data, 'user_data_file': self.user_data_file,
'username': instance_user, 'keypair': self.keypair.name, 'group': self.group.name,
self.run_instance_params = {'image': self.image, 'user_data': self.user_data, 'username': instance_user,
'keypair': self.keypair.name, 'group': self.group.name,
'zone': self.zone, 'timeout': self.instance_timeout}
self.managed_network = True

@@ -245,27 +242,26 @@ def MetaData(self):
return reservation

def UserData(self):
"""
This case was developed to test the user-data service of an instance for consistency.
This case does a comparison of the user data passed in by the user-data argument to
the data supplied by the user-data service within the instance. Supported
user data formats can be found here: https://cloudinit.readthedocs.org/en/latest/topics/format.html
If this test fails, the test case will error out; logging the results.
The userdata tested is 16K string (maximum size of userdata string defined by AWS)
"""
if not self.reservation:
reservation = self.tester.run_instance(**self.run_instance_params)
else:
reservation = self.reservation
for instance in reservation.instances:
"""
For aesthetics, the user data value is a 16K file thats converted to string then compare,
"""
if self.user_data_file:
with open(self.user_data_file) as user_data_file:
user_data = user_data_file.read()
instance_user_data = StringIO.StringIO(instance.get_userdata())
self.assertTrue(difflib.SequenceMatcher(None, instance_user_data.getvalue(), user_data), 'Incorrect User Data File')
"""
This case was developed to test the user-data service of an instance for consistency.
This case does a comparison of the user data passed in by the user-data argument to
the data supplied by the user-data service within the instance. Supported
user data formats can be found here: https://cloudinit.readthedocs.org/en/latest/topics/format.html
If this test fails, the test case will error out; logging the results.
The userdata tested is 16K string (maximum size of userdata string defined by AWS)
"""
if not self.reservation:
reservation = self.tester.run_instance(**self.run_instance_params)
else:
reservation = self.reservation
for instance in reservation.instances:
"""
For aesthetics, the user data value is a 16K file thats converted to string then compare,
"""
if self.user_data:
self.assertEqual(instance.get_userdata()[0], self.user_data, 'Incorrect User Data String')
self.set_reservation(reservation)
return reservation

def DNSResolveCheck(self):
"""