def test_get_volume_status(self): client, config, volume_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) status = behavior.get_volume_status(self.defaults.volume_id) self.assertEqual(status, self.defaults.expected_status)
def test_good_response_code_config_wait_period(self): client, config, snapshot_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) resp = behavior.wait_for_snapshot_status( self.defaults.snapshot_name, self.defaults.expected_status, self.defaults.timeout ) self.assertIsNone(resp)
def test_good_response_code_config_wait_period(self): client, config, snapshot_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) resp = behavior.wait_for_snapshot_status(self.defaults.snapshot_name, self.defaults.expected_status, self.defaults.timeout) self.assertIsNone(resp)
def test_good_response_code_manual_poll_rate(self): client, config, snapshot_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) resp = behavior.wait_for_snapshot_status( self.defaults.snapshot_id, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate) self.assertIsNone(resp)
def test_happy_path(self): client, config, volume_model, volume_create_response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) behavior.get_volume_status = MagicMock(return_value='available') volume_entity = behavior.create_available_volume( self.defaults.display_name, self.defaults.size, self.defaults.volume_type) self.assertIsInstance(volume_entity, VolumeResponse)
def test_happy_path(self): client, config, volume_model, volume_create_response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) behavior.get_volume_status = MagicMock(return_value="available") volume_entity = behavior.create_available_volume( self.defaults.display_name, self.defaults.size, self.defaults.volume_type ) self.assertIsInstance(volume_entity, VolumeResponse)
def test_good_response_code_bad_status(self): client, config, volume_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) resp = behavior.wait_for_volume_status( self.defaults.volume_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate) self.assertIsNone(resp)
def test_good_response_code_manual_poll_rate(self): client, config, snapshot_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) resp = behavior.wait_for_snapshot_status( self.defaults.snapshot_id, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate, ) self.assertIsNone(resp)
def test_good_response_code_bad_status(self): client, config, volume_model, response = self.get_mocks() behavior = VolumesAPI_Behaviors(client, config) resp = behavior.wait_for_volume_status( self.defaults.volume_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate, ) self.assertIsNone(resp)
def test_timeout_failure(self): client, config, volume_model, volume_create_response = self.get_mocks() volume_create_response.entity = None volume_create_response.status_code = 200 client.create_volume = MagicMock(return_value=volume_create_response) behavior = VolumesAPI_Behaviors(client, config) behavior.wait_for_volume_status = MagicMock(side_effect=VolumesAPIBehaviorException) with self.assertRaises(VolumesAPIBehaviorException): behavior.create_available_volume(self.defaults.display_name, self.defaults.size, self.defaults.volume_type)
def test_good_response_code_empty_entity(self): client, config, volume_model, response = self.get_mocks() response.entity = None response.status_code = '200' client.get_volume_info = MagicMock(return_value=response) behavior = VolumesAPI_Behaviors(client, config) with self.assertRaises(VolumesAPIBehaviorException): behavior.wait_for_volume_status(self.defaults.volume_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate)
def test_good_response_good_entity_bad_status(self): client, config, snapshot_model, response = self.get_mocks() recieved_status = "error" poll_rate = 1 snapshot_model.status = recieved_status response.entity = snapshot_model client.get_snapshot_info = MagicMock(return_value=response) behavior = VolumesAPI_Behaviors(client, config) with self.assertRaises(VolumesAPIBehaviorException): behavior.wait_for_snapshot_status( self.defaults.snapshot_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=poll_rate )
def test_bad_response_code(self): client, config, snapshot_model, response = self.get_mocks() response.ok = False response.entity = snapshot_model response.status_code = '401' client.get_snapshot_info = MagicMock(return_value=response) behavior = VolumesAPI_Behaviors(client, config) with self.assertRaises(VolumesAPIBehaviorException): behavior.wait_for_snapshot_status( self.defaults.snapshot_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate)
def test_good_response_code_empty_entity(self): client, config, volume_model, response = self.get_mocks() response.entity = None response.status_code = "200" client.get_volume_info = MagicMock(return_value=response) behavior = VolumesAPI_Behaviors(client, config) with self.assertRaises(VolumesAPIBehaviorException): behavior.wait_for_volume_status( self.defaults.volume_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate, )
def test_good_response_good_entity_bad_status(self): client, config, snapshot_model, response = self.get_mocks() recieved_status = 'error' poll_rate = 1 snapshot_model.status = recieved_status response.entity = snapshot_model client.get_snapshot_info = MagicMock(return_value=response) behavior = VolumesAPI_Behaviors(client, config) with self.assertRaises(VolumesAPIBehaviorException): behavior.wait_for_snapshot_status(self.defaults.snapshot_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=poll_rate)
def test_timeout_failure(self): client, config, volume_model, volume_create_response = self.get_mocks() volume_create_response.entity = None volume_create_response.status_code = 200 client.create_volume = MagicMock(return_value=volume_create_response) behavior = VolumesAPI_Behaviors(client, config) behavior.wait_for_volume_status = MagicMock( side_effect=VolumesAPIBehaviorException) with self.assertRaises(VolumesAPIBehaviorException): behavior.create_available_volume(self.defaults.display_name, self.defaults.size, self.defaults.volume_type)
def test_bad_response_code(self): client, config, snapshot_model, response = self.get_mocks() response.ok = False response.entity = snapshot_model response.status_code = "401" client.get_snapshot_info = MagicMock(return_value=response) behavior = VolumesAPI_Behaviors(client, config) with self.assertRaises(VolumesAPIBehaviorException): behavior.wait_for_snapshot_status( self.defaults.snapshot_name, self.defaults.expected_status, self.defaults.timeout, poll_rate=self.defaults.poll_rate, )
def setUpClass(cls): super(BlockstorageIntegrationFixture, cls).setUpClass() block_config = BlockStorageConfig() volumes_config = VolumesAPIConfig() cls.poll_frequency = volumes_config.volume_status_poll_frequency cls.volume_size = int(volumes_config.min_volume_size) cls.volume_type = volumes_config.default_volume_type cls.volume_delete_timeout = volumes_config.volume_delete_max_timeout cls.volume_create_timeout = volumes_config.volume_create_max_timeout block_service = cls.access_data.get_service( block_config.identity_service_name) block_url = block_service.get_endpoint( block_config.region).public_url cls.blockstorage_client = VolumesClient( block_url, cls.access_data.token.id_, cls.marshalling.serializer, cls.marshalling.deserializer) cls.blockstorage_behavior = VolumesAPI_Behaviors( volumes_api_client=cls.blockstorage_client, volumes_api_config=volumes_config)