def test_scaling_action_allowed_with_unknown_service(self): with pytest.raises(ValueError): registry = RunningServicesRegistry(self.service_dict) scaling_action_service1 = ScalingAction( self.non_existing_service_name) scaling_action_service1.command = DynamiteScalingCommand.SCALE_DOWN registry.scaling_action_allowed(scaling_action_service1)
def test_init_from_scaling_action(self): action = ScalingAction("apache_service") action.command = DynamiteScalingCommand.SCALE_UP action.service_instance_name = "apache_instance_name" action.uuid = "apache_uuid" request = DynamiteScalingRequest.from_scaling_action(action) assert request.service_name == action.service_name assert request.service_instance_name == action.service_instance_name assert request.command == action.command assert request.failure_counter == 0
def test_scaling_action_allowed_scale_below_zero(self): self.service_dict[self.service_name_1].service_config_details = MagicMock() self.service_dict[self.service_name_1].service_config_details.max_instance = None self.service_dict[self.service_name_1].service_config_details.min_instance = 2 self.service_dict[self.service_name_1].fleet_service_instances = {} registry = RunningServicesRegistry(self.service_dict) scaling_action_service1 = ScalingAction(self.service_name_1) scaling_action_service1.command = DynamiteScalingCommand.SCALE_DOWN result = registry.scaling_action_allowed(scaling_action_service1) assert result is False
def test_scaling_action_allowed_without_min_max_specified(self): self.service_dict[ self.service_name_1].service_config_details = MagicMock() self.service_dict[ self.service_name_1].service_config_details.max_instance = 5 self.service_dict[ self.service_name_1].service_config_details.min_instance = None self.service_dict[ self.service_name_2].service_config_details = MagicMock() self.service_dict[ self.service_name_2].service_config_details.max_instance = None self.service_dict[ self.service_name_2].service_config_details.min_instance = 1 registry = RunningServicesRegistry(self.service_dict) # service2 has 3 instances initially, max is undefined scaling_action_service2 = ScalingAction(self.service_name_2) scaling_action_service2.command = DynamiteScalingCommand.SCALE_UP result = registry.scaling_action_allowed(scaling_action_service2) assert result is True scaling_action_service2.command = DynamiteScalingCommand.SCALE_DOWN result = registry.scaling_action_allowed(scaling_action_service2) assert result is True # service1 has 2 instances initially, min is undefined scaling_action_service1 = ScalingAction(self.service_name_1) scaling_action_service1.command = DynamiteScalingCommand.SCALE_DOWN result = registry.scaling_action_allowed(scaling_action_service1) assert result is True scaling_action_service1.command = DynamiteScalingCommand.SCALE_UP result = registry.scaling_action_allowed(scaling_action_service1) assert result is True
def test_scaling_action_allowed_scale_below_zero(self): self.service_dict[ self.service_name_1].service_config_details = MagicMock() self.service_dict[ self.service_name_1].service_config_details.max_instance = None self.service_dict[ self.service_name_1].service_config_details.min_instance = 2 self.service_dict[self.service_name_1].fleet_service_instances = {} registry = RunningServicesRegistry(self.service_dict) scaling_action_service1 = ScalingAction(self.service_name_1) scaling_action_service1.command = DynamiteScalingCommand.SCALE_DOWN result = registry.scaling_action_allowed(scaling_action_service1) assert result is False
def test_scaling_action_allowed(self): self.service_dict[self.service_name_1].service_config_details = MagicMock() self.service_dict[self.service_name_1].service_config_details.max_instance = 5 self.service_dict[self.service_name_1].service_config_details.min_instance = 2 self.service_dict[self.service_name_2].service_config_details = MagicMock() self.service_dict[self.service_name_2].service_config_details.max_instance = 3 self.service_dict[self.service_name_2].service_config_details.min_instance = 1 registry = RunningServicesRegistry(self.service_dict) # service2 has 3 instances initially, max is 3 scaling_action_service2 = ScalingAction(self.service_name_2) scaling_action_service2.command = DynamiteScalingCommand.SCALE_UP result = registry.scaling_action_allowed(scaling_action_service2) assert result is False scaling_action_service2.command = DynamiteScalingCommand.SCALE_DOWN result = registry.scaling_action_allowed(scaling_action_service2) assert result is True # service1 has 2 instances initially, min is 2 scaling_action_service1 = ScalingAction(self.service_name_1) scaling_action_service1.command = DynamiteScalingCommand.SCALE_DOWN result = registry.scaling_action_allowed(scaling_action_service1) assert result is False scaling_action_service1.command = DynamiteScalingCommand.SCALE_UP result = registry.scaling_action_allowed(scaling_action_service1) assert result is True
def create_scaling_action(self, metric_name, instance_uuid): scaling_action = ScalingAction(self.service.name) scaling_action.metric_name = metric_name scaling_action.command = self._find_out_scaling_command() scaling_action.uuid = instance_uuid return scaling_action
def test_scaling_action_allowed_with_invalid_command(self): with pytest.raises(ValueError): registry = RunningServicesRegistry(self.service_dict) scaling_action_service1 = ScalingAction(self.service_name_1) scaling_action_service1.command = "scale_UP" registry.scaling_action_allowed(scaling_action_service1)
def test_scaling_action_allowed_with_unknown_service(self): with pytest.raises(ValueError): registry = RunningServicesRegistry(self.service_dict) scaling_action_service1 = ScalingAction(self.non_existing_service_name) scaling_action_service1.command = DynamiteScalingCommand.SCALE_DOWN registry.scaling_action_allowed(scaling_action_service1)