Ported server meta/personality on create/rebuild tests

* Added checks for metadata provided on server create/rebuild
* Added checks for personality files provided on server create/rebuild

Change-Id: I89a5542f30c70c9dc085f92bd6f0c7657c44d680
This commit is contained in:
Daryl Walleck
2013-05-10 19:41:56 -05:00
parent 3315b327c0
commit 2f8c53d987
2 changed files with 67 additions and 41 deletions

View File

@@ -15,7 +15,6 @@ limitations under the License.
"""
import base64
import unittest2 as unittest
from cafe.drivers.unittest.decorators import tags
from cloudcafe.compute.common.types import NovaServerStatusTypes
@@ -23,7 +22,6 @@ from cloudcafe.compute.common.datagen import rand_name
from test_repo.compute.fixtures import ComputeFixture
class RebuildServerTests(ComputeFixture):
@classmethod
@@ -36,19 +34,17 @@ class RebuildServerTests(ComputeFixture):
cls.resources.add(cls.server.id, cls.servers_client.delete_server)
cls.metadata = {'key': 'value'}
cls.name = rand_name('testserver')
file_contents = 'Test server rebuild.'
personality = [{'path': '/etc/rebuild.txt',
'contents': base64.b64encode(file_contents)}]
cls.file_contents = 'Test server rebuild.'
personality = [{'path': '/rebuild.txt',
'contents': base64.b64encode(cls.file_contents)}]
cls.password = 'rebuild'
rebuilt_server_response = cls.servers_client.rebuild(cls.server.id,
cls.image_ref_alt,
name=cls.name,
metadata=cls.metadata,
personality=personality,
admin_pass=cls.password)
cls.rebuilt_server_response = cls.server_behaviors.wait_for_server_status(cls.server.id,
NovaServerStatusTypes.ACTIVE)
cls.rebuilt_server_response = cls.servers_client.rebuild(
cls.server.id, cls.image_ref_alt, name=cls.name,
metadata=cls.metadata, personality=personality,
admin_pass=cls.password)
cls.server_behaviors.wait_for_server_status(
cls.server.id, NovaServerStatusTypes.ACTIVE)
@classmethod
def tearDownClass(cls):
@@ -73,8 +69,11 @@ class RebuildServerTests(ComputeFixture):
msg="Image id did not match")
self.assertEqual(rebuilt_server.flavor.id, self.flavor_ref,
msg="Flavor id did not match")
self.assertEqual(rebuilt_server.id, self.server.id, msg="Server id did not match")
self.assertEqual(rebuilt_server.links.bookmark, self.server.links.bookmark, msg="Bookmark links do not match")
self.assertEqual(rebuilt_server.id, self.server.id,
msg="Server id did not match")
self.assertEqual(rebuilt_server.links.bookmark,
self.server.links.bookmark,
msg="Bookmark links do not match")
self.assertEqual(rebuilt_server.metadata.key, 'value')
self.assertEqual(rebuilt_server.created, self.server.created,
msg="Server Created date changed after rebuild")
@@ -87,44 +86,71 @@ class RebuildServerTests(ComputeFixture):
def test_can_log_into_server_after_rebuild(self):
server = self.rebuilt_server_response.entity
rebuilt_server = self.rebuilt_server_response.entity
public_address = self.server_behaviors.get_public_ip_address(rebuilt_server)
remote_instance = self.server_behaviors.get_remote_instance_client(server,
config=self.servers_config,
password=self.password)
self.assertTrue(remote_instance.can_connect_to_public_ip(),
msg="Could not connect to server (%s) using new admin password %s" % (public_address,
server.admin_pass))
public_address = self.server_behaviors.get_public_ip_address(
rebuilt_server)
remote_instance = self.server_behaviors.get_remote_instance_client(
server, config=self.servers_config, password=self.password)
self.assertTrue(
remote_instance.can_connect_to_public_ip(),
msg="Could not connect to server (%s) using new admin password %s"
% (public_address, server.admin_pass))
@tags(type='smoke', net='yes')
def test_rebuilt_server_vcpus(self):
"""Verify the number of vCPUs reported is the correct after the rebuild"""
"""Verify the number of vCPUs reported is the correct after rebuild"""
remote_client = self.server_behaviors.get_remote_instance_client(self.server,
config=self.servers_config,
password=self.password)
remote_client = self.server_behaviors.get_remote_instance_client(
self.server, config=self.servers_config, password=self.password)
server_actual_vcpus = remote_client.get_number_of_vcpus()
self.assertEqual(server_actual_vcpus, self.flavor.vcpus,
msg="Expected number of vcpus to be {0}, was {1}.".format(
self.flavor.vcpus, server_actual_vcpus))
self.assertEqual(
server_actual_vcpus, self.flavor.vcpus,
msg="Expected number of vcpus to be {0}, was {1}.".format(
self.flavor.vcpus, server_actual_vcpus))
@tags(type='smoke', net='yes')
def test_rebuilt_server_disk_size(self):
"""Verify the size of the virtual disk after the server rebuild"""
remote_client = self.server_behaviors.get_remote_instance_client(self.server,
self.servers_config,
password=self.password)
disk_size = remote_client.get_disk_size_in_gb(self.servers_config.instance_disk_path)
remote_client = self.server_behaviors.get_remote_instance_client(
self.server, self.servers_config, password=self.password)
disk_size = remote_client.get_disk_size_in_gb(
self.servers_config.instance_disk_path)
self.assertEqual(disk_size, self.flavor.disk,
msg="Expected disk to be {0} GB, was {1} GB".format(
self.flavor.disk, disk_size))
@tags(type='smoke', net='yes')
def test_server_ram_after_rebuild(self):
remote_instance = self.server_behaviors.get_remote_instance_client(self.server,
self.servers_config,
password=self.password)
remote_instance = self.server_behaviors.get_remote_instance_client(
self.server, self.servers_config, password=self.password)
lower_limit = int(self.flavor.ram) - (int(self.flavor.ram) * .1)
server_ram_size = int(remote_instance.get_ram_size_in_mb())
self.assertTrue(int(self.flavor.ram) == server_ram_size or lower_limit <= server_ram_size,
msg="Ram size after confirm-resize did not match. Expected ram size : %s, Actual ram size : %s" %
self.assertTrue((int(self.flavor.ram) == server_ram_size
or lower_limit <= server_ram_size),
msg='Ram size after confirm-resize did not match.'
'Expected ram size : %s, Actual ram size : %s.' %
(self.flavor.ram, server_ram_size))
@tags(type='smoke', net='yes')
def test_personality_file_created_on_rebuild(self):
"""
Validate the injected file was created on the rebuilt server with
the correct contents
"""
remote_client = self.server_behaviors.get_remote_instance_client(
self.server, self.servers_config, password=self.password)
self.assertTrue(remote_client.is_file_present('/rebuild.txt'))
self.assertEqual(
remote_client.get_file_details('/rebuild.txt').content,
self.file_contents)
@tags(type='smoke', net='no')
def test_server_metadata_set_on_rebuild(self):
"""Verify the provided metadata was set for the rebuilt server"""
rebuilt_server = self.rebuilt_server_response.entity
# Verify the metadata items were added to the server
self.assertTrue(hasattr(rebuilt_server.metadata, 'key'))
# Verify the values of the metadata items are correct
self.assertEqual(rebuilt_server.metadata.key, 'value')

View File

@@ -31,7 +31,7 @@ class CreateServerTest(ComputeFixture):
cls.metadata = {'meta_key_1': 'meta_value_1',
'meta_key_2': 'meta_value_2'}
cls.file_contents = 'This is a test file.'
files = [{'path': '/root/test.txt', 'contents': base64.b64encode(
files = [{'path': '/test.txt', 'contents': base64.b64encode(
cls.file_contents)}]
cls.create_resp = cls.servers_client.create_server(
cls.name, cls.image_ref, cls.flavor_ref,
@@ -187,9 +187,9 @@ class CreateServerTest(ComputeFixture):
remote_client = self.server_behaviors.get_remote_instance_client(
self.server, self.servers_config)
self.assertTrue(remote_client.is_file_present('/root/test.txt'))
self.assertTrue(remote_client.is_file_present('/test.txt'))
self.assertEqual(
remote_client.get_file_details('/root/test.txt').content,
remote_client.get_file_details('/test.txt').content,
self.file_contents)
@tags(type='smoke', net='no')