Beispiel #1
0
    def test_check_and_return_needed_scaling_actions_with_scaleup_metrics(
            self):
        ruleChecker = RuleChecker(self.scaling_policies,
                                  self.service_dictionary)

        result = ruleChecker.check_and_return_needed_scaling_actions(
            self.message_scaleup_noaction)
        assert result == []

        result = ruleChecker.check_and_return_needed_scaling_actions(
            self.message_scaleup_action)
        assert result is not None and result != []
        assert len(result) == 1
        result = result[0]
        assert result.service_name == self.message_scaleup_noaction.service_name
        assert result.uuid == self.message_scaleup_noaction.uuid
        assert result.command == DynamiteScalingCommand.SCALE_UP

        result = ruleChecker.check_and_return_needed_scaling_actions(
            self.message_scaleup_cooldown)
        assert result == []

        result = ruleChecker.check_and_return_needed_scaling_actions(
            self.message_scaleup_noaction2)
        assert result == []
Beispiel #2
0
    def test_check_and_return_needed_scaling_actions_with_double_scaleup_metrics(
            self):
        ruleChecker = RuleChecker(self.scaling_policies,
                                  self.service_dictionary)

        result = ruleChecker.check_and_return_needed_scaling_actions(
            self.message_double_scaleup_action)
        assert result is not None and result != []
        assert len(result) == 2
        result_scaleup1 = result[0]
        result_scaleup2 = result[1]
        assert result_scaleup1.service_name == self.message_double_scaleup_action.service_name
        assert result_scaleup1.uuid == self.message_double_scaleup_action.uuid
        assert result_scaleup1.command == DynamiteScalingCommand.SCALE_UP

        assert result_scaleup2.service_name == self.message_double_scaleup_action.service_name
        assert result_scaleup2.uuid == self.message_double_scaleup_action.uuid
        assert result_scaleup2.command == DynamiteScalingCommand.SCALE_UP
Beispiel #3
0
    def __init__(self, configuration, exit_flag):
        self._exit_flag = exit_flag
        self._logger = logging.getLogger(__name__)
        self._logger.info("Initialized scaling engine with configuration %s",
                          repr(configuration))

        self._services_dictionary = configuration.services_dictionary
        self._metrics_receiver = configuration.metrics_receiver
        self._metrics = ScalingMetrics()
        self._rule_checker = RuleChecker(configuration.scaling_policies,
                                         configuration.services_dictionary)
        self._executed_tasks_receiver = configuration.executed_task_receiver
        self._scaling_action_sender = configuration.scaling_action_sender
        atexit.register(self._on_engine_shutdown)
        self._running_services_registry = RunningServicesRegistry(
            configuration.services_dictionary)
        instance_name_resolver = ServiceInstanceNameResolver(
            configuration.etcd_connection)
        self._service_instance_name_resolver = CachingServiceInstanceNameResolver(
            instance_name_resolver)