Adds tests for instance actions
* Added general check for action validation to fixture * Added tests for most basic actions * Skipped tests failing due to likely bugs Change-Id: I3ab14143aea092540697e90d7e65008eea40f292
This commit is contained in:
		@@ -63,9 +63,9 @@ class ComputeFixture(BaseTestFixture):
 | 
			
		||||
        cls.disk_path = cls.servers_config.instance_disk_path
 | 
			
		||||
 | 
			
		||||
        cls.endpoint_config = UserAuthConfig()
 | 
			
		||||
        user_config = UserConfig()
 | 
			
		||||
        cls.user_config = UserConfig()
 | 
			
		||||
        access_data = AuthProvider.get_access_data(cls.endpoint_config,
 | 
			
		||||
                                                   user_config)
 | 
			
		||||
                                                   cls.user_config)
 | 
			
		||||
 | 
			
		||||
        compute_service = access_data.get_service(
 | 
			
		||||
            cls.compute_endpoint.compute_endpoint_name)
 | 
			
		||||
@@ -111,6 +111,29 @@ class ComputeFixture(BaseTestFixture):
 | 
			
		||||
        image_ref = image_response.headers['location']
 | 
			
		||||
        return image_ref.rsplit('/')[-1]
 | 
			
		||||
 | 
			
		||||
    def validate_instance_action(self, action, server_id,
 | 
			
		||||
                                 user_id, project_id, request_id):
 | 
			
		||||
        message = "Expected {0} to be {1}, was {2}."
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(action.instance_uuid, server_id,
 | 
			
		||||
                         msg=message.format('instance id',
 | 
			
		||||
                                            action.instance_uuid,
 | 
			
		||||
                                            server_id))
 | 
			
		||||
        self.assertEqual(action.user_id, user_id,
 | 
			
		||||
                         msg=message.format('user id',
 | 
			
		||||
                                            action.user_id,
 | 
			
		||||
                                            user_id))
 | 
			
		||||
        self.assertEqual(action.project_id, project_id,
 | 
			
		||||
                         msg=message.format('project id',
 | 
			
		||||
                                            action.project_id,
 | 
			
		||||
                                            project_id))
 | 
			
		||||
        self.assertIsNotNone(action.start_time)
 | 
			
		||||
        self.assertEquals(action.request_id, request_id,
 | 
			
		||||
                          msg=message.format('request id',
 | 
			
		||||
                                             action.request_id,
 | 
			
		||||
                                             request_id))
 | 
			
		||||
        self.assertIsNone(action.message)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CreateServerFixture(ComputeFixture):
 | 
			
		||||
    """
 | 
			
		||||
 
 | 
			
		||||
@@ -71,3 +71,26 @@ class ChangeServerPasswordTests(CreateServerFixture):
 | 
			
		||||
            remote_client.can_connect_to_public_ip(),
 | 
			
		||||
            "Could not connect to server (%s) using new admin password %s" %
 | 
			
		||||
            (public_address, self.new_password))
 | 
			
		||||
 | 
			
		||||
    @tags(type='smoke', net='no')
 | 
			
		||||
    @unittest.skip("lp1183712")
 | 
			
		||||
    def test_password_changed_server_instance_actions(self):
 | 
			
		||||
        """
 | 
			
		||||
        Verify the correct actions are logged during a password change.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        actions = self.servers_client.get_instance_actions(
 | 
			
		||||
            self.server.id).entity
 | 
			
		||||
 | 
			
		||||
        # Verify the change password action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'changePassword' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions
 | 
			
		||||
                            if a.action == 'changePassword']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        password_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            password_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.resp.headers['x-compute-request-id'])
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -156,3 +156,22 @@ class RebuildServerTests(ComputeFixture):
 | 
			
		||||
 | 
			
		||||
        # Verify the values of the metadata items are correct
 | 
			
		||||
        self.assertEqual(rebuilt_server.metadata.key, 'value')
 | 
			
		||||
 | 
			
		||||
    @tags(type='smoke', net='no')
 | 
			
		||||
    def test_rebuilt_server_instance_actions(self):
 | 
			
		||||
        """Verify the correct actions are logged during a rebuild."""
 | 
			
		||||
 | 
			
		||||
        actions = self.servers_client.get_instance_actions(
 | 
			
		||||
            self.server.id).entity
 | 
			
		||||
 | 
			
		||||
        # Verify the rebuild action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'rebuild' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions if a.action == 'rebuild']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        rebuild_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            rebuild_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.rebuilt_server_response.headers['x-compute-request-id'])
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,9 +14,10 @@ See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import unittest2 as unittest
 | 
			
		||||
 | 
			
		||||
from cafe.drivers.unittest.decorators import tags
 | 
			
		||||
from cloudcafe.compute.common.types import NovaServerStatusTypes
 | 
			
		||||
from cloudcafe.compute.common.equality_tools import EqualityTools
 | 
			
		||||
from test_repo.compute.fixtures import ComputeFixture
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -30,11 +31,13 @@ class ResizeServerUpConfirmTests(ComputeFixture):
 | 
			
		||||
        cls.resources.add(server_to_resize.id, cls.servers_client.delete_server)
 | 
			
		||||
 | 
			
		||||
        # resize server and confirm
 | 
			
		||||
        cls.servers_client.resize(server_to_resize.id, cls.flavor_ref_alt)
 | 
			
		||||
        cls.server_behaviors.wait_for_server_status(server_to_resize.id,
 | 
			
		||||
                                                    NovaServerStatusTypes.VERIFY_RESIZE)
 | 
			
		||||
        cls.resize_resp = cls.servers_client.resize(
 | 
			
		||||
            server_to_resize.id, cls.flavor_ref_alt)
 | 
			
		||||
        cls.server_behaviors.wait_for_server_status(
 | 
			
		||||
            server_to_resize.id, NovaServerStatusTypes.VERIFY_RESIZE)
 | 
			
		||||
 | 
			
		||||
        cls.servers_client.confirm_resize(server_to_resize.id)
 | 
			
		||||
        cls.confirm_resize_resp = cls.servers_client.confirm_resize(
 | 
			
		||||
            server_to_resize.id)
 | 
			
		||||
        cls.server_behaviors.wait_for_server_status(server_to_resize.id,
 | 
			
		||||
                                                    NovaServerStatusTypes.ACTIVE)
 | 
			
		||||
        resized_server_response = cls.servers_client.get_server(server_to_resize.id)
 | 
			
		||||
@@ -95,3 +98,33 @@ class ResizeServerUpConfirmTests(ComputeFixture):
 | 
			
		||||
        self.assertTrue(int(self.resized_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.resized_flavor.ram, server_ram_size))
 | 
			
		||||
 | 
			
		||||
    @tags(type='smoke', net='no')
 | 
			
		||||
    @unittest.skip("lp1183712")
 | 
			
		||||
    def test_resized_server_instance_actions(self):
 | 
			
		||||
        """Verify the correct actions are logged during a confirmed resize."""
 | 
			
		||||
 | 
			
		||||
        actions = self.servers_client.get_instance_actions(
 | 
			
		||||
            self.server.id).entity
 | 
			
		||||
 | 
			
		||||
        # Verify the resize action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'resize' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions if a.action == 'resize']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        resize_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            resize_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.resize_resp.headers['x-compute-request-id'])
 | 
			
		||||
 | 
			
		||||
        # Verify the confirm resize action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'confirmResize' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions if a.action == 'confirmResize']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        resize_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            resize_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.confirm_resize_resp.headers['x-compute-request-id'])
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
import unittest2 as unittest
 | 
			
		||||
 | 
			
		||||
from cafe.drivers.unittest.decorators import tags
 | 
			
		||||
from cloudcafe.compute.common.types import NovaServerStatusTypes
 | 
			
		||||
from test_repo.compute.fixtures import ComputeFixture
 | 
			
		||||
@@ -29,11 +31,13 @@ class ResizeServerUpRevertTests(ComputeFixture):
 | 
			
		||||
        cls.resources.add(server_to_resize.id, cls.servers_client.delete_server)
 | 
			
		||||
 | 
			
		||||
        # resize server and confirm
 | 
			
		||||
        cls.servers_client.resize(server_to_resize.id, cls.flavor_ref_alt)
 | 
			
		||||
        cls.resize_resp = cls.servers_client.resize(
 | 
			
		||||
            server_to_resize.id, cls.flavor_ref_alt)
 | 
			
		||||
        cls.server_behaviors.wait_for_server_status(server_to_resize.id,
 | 
			
		||||
                                                    NovaServerStatusTypes.VERIFY_RESIZE)
 | 
			
		||||
 | 
			
		||||
        cls.servers_client.revert_resize(server_to_resize.id)
 | 
			
		||||
        cls.revert_resize_resp = cls.servers_client.revert_resize(
 | 
			
		||||
            server_to_resize.id)
 | 
			
		||||
        cls.server_behaviors.wait_for_server_status(server_to_resize.id,
 | 
			
		||||
                                                    NovaServerStatusTypes.ACTIVE)
 | 
			
		||||
        resized_server_response = cls.servers_client.get_server(server_to_resize.id)
 | 
			
		||||
@@ -89,3 +93,33 @@ class ResizeServerUpRevertTests(ComputeFixture):
 | 
			
		||||
        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='no')
 | 
			
		||||
    @unittest.skip("lp1183712")
 | 
			
		||||
    def test_resize_reverted_server_instance_actions(self):
 | 
			
		||||
        """Verify the correct actions are logged during a resize revert."""
 | 
			
		||||
 | 
			
		||||
        actions = self.servers_client.get_instance_actions(
 | 
			
		||||
            self.server.id).entity
 | 
			
		||||
 | 
			
		||||
        # Verify the resize action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'resize' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions if a.action == 'resize']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        resize_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            resize_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.resize_resp.headers['x-compute-request-id'])
 | 
			
		||||
 | 
			
		||||
        # Verify the revert resize action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'revertResize' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions if a.action == 'revertResize']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        resize_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            resize_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.revert_resize_resp.headers['x-compute-request-id'])
 | 
			
		||||
 
 | 
			
		||||
@@ -203,3 +203,21 @@ class CreateServerTest(ComputeFixture):
 | 
			
		||||
        # Verify the values of the metadata items are correct
 | 
			
		||||
        self.assertEqual(self.server.metadata.meta_key_1, 'meta_value_1')
 | 
			
		||||
        self.assertEqual(self.server.metadata.meta_key_2, 'meta_value_2')
 | 
			
		||||
 | 
			
		||||
    @tags(type='smoke', net='no')
 | 
			
		||||
    def test_created_server_instance_actions(self):
 | 
			
		||||
        """Verify the correct actions are logged while creating a server."""
 | 
			
		||||
 | 
			
		||||
        actions = self.servers_client.get_instance_actions(
 | 
			
		||||
            self.server.id).entity
 | 
			
		||||
 | 
			
		||||
        # Verify the create action is listed
 | 
			
		||||
        self.assertTrue(any(a.action == 'create' for a in actions))
 | 
			
		||||
        filtered_actions = [a for a in actions if a.action == 'create']
 | 
			
		||||
        self.assertEquals(len(filtered_actions), 1)
 | 
			
		||||
 | 
			
		||||
        create_action = filtered_actions[0]
 | 
			
		||||
        self.validate_instance_action(
 | 
			
		||||
            create_action, self.server.id, self.user_config.user_id,
 | 
			
		||||
            self.user_config.tenant_id,
 | 
			
		||||
            self.create_resp.headers['x-compute-request-id'])
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user