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_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
Ejemplo n.º 4
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
Ejemplo n.º 7
0
    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
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)