示例#1
0
    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
示例#2
0
 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
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
 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
示例#7
0
 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
示例#8
0
    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
示例#9
0
    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
示例#10
0
 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