def test_wait_pre_scale_done(self): node_instances = [ NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.1'}), NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.2'}), NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.3'}), NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'm.1'}) ] cw = CloudWrapper(self.config_holder) cw.get_pre_scale_done = Mock(return_value='true') cw._get_state_timeout_time = Mock(return_value=(time.time() + 10)) cw._wait_pre_scale_done(node_instances) cw.get_pre_scale_done = Mock(return_value='true') cw._get_state_timeout_time = Mock(return_value=(time.time() - 1)) self.failUnlessRaises(TimeoutException, cw._wait_pre_scale_done, node_instances) cw.get_pre_scale_done = Mock(return_value='') cw._get_state_timeout_time = Mock(return_value=(time.time() + 2)) self.failUnlessRaises(TimeoutException, cw._wait_pre_scale_done, node_instances)
def test_vertically_scalle_instances_nowait(self): _scale_state = None def _get_runtime_parameter(key): if key.endswith(NodeDecorator.NODE_PROPERTY_SEPARATOR + NodeDecorator.SCALE_STATE_KEY): return _scale_state else: return 'unknown' node_instances = { 'n.1': NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.1', NodeDecorator.NODE_NAME_KEY: 'n', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_RESIZING}), 'n.2': NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.2', NodeDecorator.NODE_NAME_KEY: 'n', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_DISK_ATTACHING}), 'n.3': NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.3', NodeDecorator.NODE_NAME_KEY: 'n', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_DISK_DETACHING}), 'm.1': NodeInstance({NodeDecorator.NODE_INSTANCE_NAME_KEY: 'm.1', NodeDecorator.NODE_NAME_KEY: 'm', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_OPERATIONAL}) } self.config_holder.set('verboseLevel', 3) setattr(self.config_holder, 'cloud', 'local') setattr(self.config_holder, CONFIGPARAM_CONNECTOR_MODULE_NAME, 'slipstream.cloudconnectors.dummy.DummyClientCloud') cw = CloudWrapper(self.config_holder) cw._get_nodes_instances = Mock(return_value=node_instances) cw.initCloudConnector(self.config_holder) cw._set_runtime_parameter = Mock() cw._get_user_timeout = Mock(return_value=2) # No waiting. cw._wait_pre_scale_done = Mock() cw._wait_scale_state = Mock() _scale_state = 'resizing' cw._get_runtime_parameter = Mock(side_effect=_get_runtime_parameter) cw._cloud_client.resize = Mock(wraps=cw._cloud_client.resize) cw.vertically_scale_instances() assert True == cw._cloud_client.resize.called node_instance = cw._cloud_client.resize.call_args[0][0][0] assert 'n.1' in node_instance.get_name() assert cw._set_runtime_parameter.called_with('n.1:' + NodeDecorator.SCALE_IAAS_DONE, 'true') _scale_state = 'disk_attaching' cw._get_runtime_parameter = Mock(side_effect=_get_runtime_parameter) cw._cloud_client.attach_disk = Mock(wraps=cw._cloud_client.attach_disk) cw.vertically_scale_instances() assert True == cw._cloud_client.attach_disk.called node_instance = cw._cloud_client.attach_disk.call_args[0][0][0] assert 'n.2' in node_instance.get_name() assert cw._set_runtime_parameter.called_with('n.2:' + NodeDecorator.SCALE_IAAS_DONE, 'true') _scale_state = 'disk_detaching' cw._get_runtime_parameter = Mock(side_effect=_get_runtime_parameter) cw._cloud_client.detach_disk = Mock(wraps=cw._cloud_client.detach_disk) cw.vertically_scale_instances() assert True == cw._cloud_client.detach_disk.called node_instance = cw._cloud_client.detach_disk.call_args[0][0][0] assert 'n.3' in node_instance.get_name() assert cw._set_runtime_parameter.called_with('n.3:' + NodeDecorator.SCALE_IAAS_DONE, 'true')
def test_vertically_scalle_instances_nowait(self): _scale_state = None def _get_runtime_parameter(key): if key.endswith(NodeDecorator.NODE_PROPERTY_SEPARATOR + NodeDecorator.SCALE_STATE_KEY): return _scale_state else: return 'unknown' node_instances = { 'n.1': NodeInstance({ NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.1', NodeDecorator.NODE_NAME_KEY: 'n', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_RESIZING }), 'n.2': NodeInstance({ NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.2', NodeDecorator.NODE_NAME_KEY: 'n', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_DISK_ATTACHING }), 'n.3': NodeInstance({ NodeDecorator.NODE_INSTANCE_NAME_KEY: 'n.3', NodeDecorator.NODE_NAME_KEY: 'n', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_DISK_DETACHING }), 'm.1': NodeInstance({ NodeDecorator.NODE_INSTANCE_NAME_KEY: 'm.1', NodeDecorator.NODE_NAME_KEY: 'm', NodeDecorator.SCALE_STATE_KEY: CloudWrapper.SCALE_STATE_OPERATIONAL }) } self.config_holder.set('verboseLevel', 3) setattr(self.config_holder, 'cloud', 'local') setattr(self.config_holder, CONFIGPARAM_CONNECTOR_MODULE_NAME, 'slipstream.cloudconnectors.dummy.DummyClientCloud') cw = CloudWrapper(self.config_holder) cw._get_nodes_instances = Mock(return_value=node_instances) cw.initCloudConnector(self.config_holder) cw._set_runtime_parameter = Mock() cw._get_user_timeout = Mock(return_value=2) # No waiting. cw._wait_pre_scale_done = Mock() cw._wait_scale_state = Mock() _scale_state = 'resizing' cw._get_runtime_parameter = Mock(side_effect=_get_runtime_parameter) cw._cloud_client.resize = Mock(wraps=cw._cloud_client.resize) cw.vertically_scale_instances() assert True == cw._cloud_client.resize.called node_instance = cw._cloud_client.resize.call_args[0][0][0] assert 'n.1' in node_instance.get_name() assert cw._set_runtime_parameter.called_with( 'n.1:' + NodeDecorator.SCALE_IAAS_DONE, 'true') _scale_state = 'disk_attaching' cw._get_runtime_parameter = Mock(side_effect=_get_runtime_parameter) cw._cloud_client.attach_disk = Mock(wraps=cw._cloud_client.attach_disk) cw.vertically_scale_instances() assert True == cw._cloud_client.attach_disk.called node_instance = cw._cloud_client.attach_disk.call_args[0][0][0] assert 'n.2' in node_instance.get_name() assert cw._set_runtime_parameter.called_with( 'n.2:' + NodeDecorator.SCALE_IAAS_DONE, 'true') _scale_state = 'disk_detaching' cw._get_runtime_parameter = Mock(side_effect=_get_runtime_parameter) cw._cloud_client.detach_disk = Mock(wraps=cw._cloud_client.detach_disk) cw.vertically_scale_instances() assert True == cw._cloud_client.detach_disk.called node_instance = cw._cloud_client.detach_disk.call_args[0][0][0] assert 'n.3' in node_instance.get_name() assert cw._set_runtime_parameter.called_with( 'n.3:' + NodeDecorator.SCALE_IAAS_DONE, 'true')