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 == []
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
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)