def test_init(self): period_length = 464 period = TimePeriod(period_length) assert period.period_started is False assert period.period_length_in_seconds == period_length assert period.period_start_time is None
def test_calculate_period_end(self): period = TimePeriod(1000) start_time = self._get_time1() period.start_period(start_time) period_end = period.calculate_period_end() expected_end_time = start_time + timedelta(seconds=1000) assert period_end == expected_end_time
def test_reset(self): period = TimePeriod(50, time_provider=self._get_time1) period.start_period(self._get_time1()) period.reset() assert period.period_start_time is None assert period.period_started is False
def test_start_period_with_start_time(self): start_time = self._get_time1() period = TimePeriod(90) period.start_period(start_time) assert period.period_start_time == start_time assert period.period_started is True assert period.period_length_in_seconds == 90
def test_start_period(self): start_time = self._get_time1() period = TimePeriod(30, time_provider=TestTimePeriod._get_time1) period.start_period() assert period.period_start_time == start_time assert period.period_started is True assert period.period_length_in_seconds == 30
def __init__(self, instance_uuid, policy): self._logger = logging.getLogger(__name__) self.state = ScalingStateUntriggered() threshold_period_in_seconds = policy.get_threshold_period_in_seconds() self._logger.debug("threshold period of policy %s is %d", policy, threshold_period_in_seconds) self.threshold_period = TimePeriod(threshold_period_in_seconds) self._latest_metric_update = None self.instance_uuid = instance_uuid self.policy = policy
def __init__(self, scaling_policy_configuration, service, scaling_policy_type): self._logger = logging.getLogger(__name__) self._policy_instances = {} self.state = ScalingStateUntriggered() self._policy_config = scaling_policy_configuration self.service_type = self._policy_config.service_type self.policy_name = scaling_policy_configuration.name cooldown_period_in_seconds = self._calculate_period_in_seconds( scaling_policy_configuration.cooldown_period, scaling_policy_configuration.cooldown_period_unit) self._logger.debug("cooldown period of policy %s is %d", self.policy_name, cooldown_period_in_seconds) self.cooldown_period = TimePeriod(cooldown_period_in_seconds) self.service = service self._last_in_period_uuid_of_service_type = {} self._scaling_policy_type = scaling_policy_type
def test_is_in_period_with_specific_time(self): start_time = self._get_time2() period_length = timedelta(seconds=30) period = TimePeriod(period_length.seconds, time_provider=self._get_time2) period.start_period() in_period_time_1 = start_time + timedelta(seconds=30) in_period_time_2 = start_time + timedelta(seconds=29) in_period_time_3 = start_time + timedelta(seconds=1) in_period_time_4 = start_time out_period_time_1 = start_time + timedelta(seconds=31) out_period_time_2 = start_time + timedelta(seconds=30, microseconds=1) assert period.is_in_period(time=in_period_time_1) is True assert period.is_in_period(time=in_period_time_2) is True assert period.is_in_period(time=in_period_time_3) is True assert period.is_in_period(time=in_period_time_4) is True assert period.is_in_period(time=out_period_time_1) is False assert period.is_in_period(time=out_period_time_2) is False
def test_is_in_period_now(self): start_time = self._get_time1() period_length = timedelta(seconds=30) in_period_time_1 = start_time + timedelta(seconds=30) in_period_time_2 = start_time + timedelta(seconds=29) in_period_time_3 = start_time + timedelta(seconds=1) in_period_time_4 = start_time out_period_time_1 = start_time + timedelta(seconds=31) out_period_time_2 = start_time + timedelta(seconds=30, microseconds=1) period = TimePeriod(period_length.seconds, time_provider=lambda: in_period_time_1) period.start_period(start_time) assert period.is_in_period() is True period = TimePeriod(period_length.seconds, time_provider=lambda: in_period_time_2) period.start_period(start_time) assert period.is_in_period() is True period = TimePeriod(period_length.seconds, time_provider=lambda: in_period_time_3) period.start_period(start_time) assert period.is_in_period() is True period = TimePeriod(period_length.seconds, time_provider=lambda: in_period_time_4) period.start_period(start_time) assert period.is_in_period() is True period = TimePeriod(period_length.seconds, time_provider=lambda: out_period_time_1) period.start_period(start_time) assert period.is_in_period() is False period = TimePeriod(period_length.seconds, time_provider=lambda: out_period_time_2) period.start_period(start_time) assert period.is_in_period() is False
def test_calculate_period_end_with_unstarted_period(self): with pytest.raises(ValueError): period = TimePeriod(1000) period_end = period.calculate_period_end() assert period_end is None