add test for checking validity of console output

Change-Id: I4908ff1a8954ac02b96efd493ba8add18f4d9891
This commit is contained in:
Andrey Pavlov 2015-04-21 22:03:55 +03:00
parent b51eb4f350
commit 4baf5ed768
3 changed files with 41 additions and 7 deletions

View File

@ -77,7 +77,7 @@ class ImageTest(base.EC2TestCase):
self.assertEqual(1, len(data['Images']))
self.assertEqual(image_id, data['Images'][0]['ImageId'])
def test_check_image_attributes_negative(self):
def test_check_image_operations_negative(self):
# NOTE(andrey-mp): image_id is a public image created by admin
image_id = CONF.aws.image_id
@ -121,6 +121,10 @@ class ImageTest(base.EC2TestCase):
self.assertEqual(400, resp.status_code)
self.assertEqual('AuthFailure', data['Error']['Code'])
resp, data = self.client.DeregisterImage(ImageId=image_id)
self.assertEqual(400, resp.status_code)
self.assertEqual('AuthFailure', data['Error']['Code'])
@testtools.skipUnless(CONF.aws.image_id, 'image id is not defined')
def test_create_image_from_non_ebs_instance(self):
image_id = CONF.aws.image_id

View File

@ -13,8 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import base64
from oslo_log import log
from tempest_lib.common.utils import data_utils
import testtools
@ -166,9 +164,8 @@ class InstanceTest(base.EC2TestCase):
def test_get_password_data_and_console_output(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
user_data = base64.b64encode('password_test=password')
resp, data = self.client.RunInstances(
ImageId=image_id, InstanceType=instance_type, UserData=user_data,
ImageId=image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1)
self.assertEqual(200, resp.status_code, base.EC2ErrorConverter(data))
instance_id = data['Instances'][0]['InstanceId']

View File

@ -29,10 +29,15 @@ LOG = log.getLogger(__name__)
class InstancesTest(scenario_base.BaseScenarioTest):
def test_userdata(self):
@classmethod
@base.safe_setup
def setUpClass(cls):
super(InstancesTest, cls).setUpClass()
if not CONF.aws.image_id:
raise self.skipException('aws image_id does not provided')
raise cls.skipException('aws image_id does not provided')
cls.zone = CONF.aws.aws_zone
def test_userdata(self):
key_name = data_utils.rand_name('testkey')
pkey = self.create_key_pair(key_name)
sec_group_name = self.create_standard_security_group()
@ -56,3 +61,31 @@ class InstancesTest(scenario_base.BaseScenarioTest):
data = ssh_client.exec_command('curl %s/latest/meta-data/ami-id' % url)
self.assertEqual(CONF.aws.image_id, data)
def test_compare_console_output(self):
key_name = data_utils.rand_name('testkey')
pkey = self.create_key_pair(key_name)
sec_group_name = self.create_standard_security_group()
instance_id = self.run_instance(KeyName=key_name,
SecurityGroups=[sec_group_name])
data_to_check = data_utils.rand_uuid()
ip_address = self.get_instance_ip(instance_id)
ssh_client = ssh.Client(ip_address, CONF.aws.image_user, pkey=pkey)
cmd = 'sudo sh -c "echo \\"%s\\" >/dev/console"' % data_to_check
ssh_client.exec_command(cmd)
waiter = base.EC2Waiter(self.client.GetConsoleOutput)
waiter.wait_no_exception(InstanceId=instance_id)
def _compare_console_output():
resp, data = self.client.GetConsoleOutput(InstanceId=instance_id)
self.assertEqual(200, resp.status_code,
base.EC2ErrorConverter(data))
self.assertEqual(instance_id, data['InstanceId'])
self.assertIsNotNone(data['Timestamp'])
self.assertIn('Output', data)
self.assertIn(data_to_check, data['Output'])
waiter = base.EC2Waiter(_compare_console_output)
waiter.wait_no_exception()