Exemplo n.º 1
0
class ExponentialBackoffTests(TestCase):


    TEST_CASES = [
        {"attempts": 0, "expected_delay": 0},
        {"attempts": 1, "expected_delay": BASE_DELAY},
        {"attempts": 4, "expected_delay": BASE_DELAY * fake_pick_up_to(2**4-1)}
    ]

    def setUp(self):
        self.backoff = ExponentialBackoff(BASE_DELAY)

    @patch.object(ExponentialBackoff, "_pick_up_to", side_effect=fake_pick_up_to)
    def test_delay(self, mock):
        for each_case in self.TEST_CASES:
            self._do_test_delay(**each_case)

    def _do_test_delay(self, attempts, expected_delay):
        delay = self.backoff.delay(attempts)

        self.assertEqual(expected_delay, delay,
                         "Error! delay({0:d}) = {1:d} (found {2:d})".format(attempts, expected_delay, delay))

    def test_pick_up_to(self):
        limit = BASE_DELAY * (2 ** 5 - 1)
        for i in range(100):
            delay = self.backoff.delay(5)
            self.assertGreaterEqual(limit, delay)
Exemplo n.º 2
0
 def create_backoff(self, delay):
     if delay.strategy == delay.CONSTANT:
         return ConstantBackoff(delay.base_delay)
     elif delay.strategy == delay.EXPONENTIAL:
         return ExponentialBackoff(delay.base_delay)
     else:
         raise ValueError("Unknown backoff strategy '{0:s}' (options are 'constant' and 'exponential')")
Exemplo n.º 3
0
class ExponentialBackoffTests(TestCase):

    TEST_CASES = [{
        "attempts": 0,
        "expected_delay": 0
    }, {
        "attempts": 1,
        "expected_delay": BASE_DELAY
    }, {
        "attempts": 4,
        "expected_delay": BASE_DELAY * fake_pick_up_to(2**4 - 1)
    }]

    def setUp(self):
        self.backoff = ExponentialBackoff(BASE_DELAY)

    @patch.object(ExponentialBackoff,
                  "_pick_up_to",
                  side_effect=fake_pick_up_to)
    def test_delay(self, mock):
        for each_case in self.TEST_CASES:
            self._do_test_delay(**each_case)

    def _do_test_delay(self, attempts, expected_delay):
        delay = self.backoff.delay(attempts)

        self.assertEqual(
            expected_delay, delay,
            "Error! delay({0:d}) = {1:d} (found {2:d})".format(
                attempts, expected_delay, delay))

    def test_pick_up_to(self):
        limit = BASE_DELAY * (2**5 - 1)
        for i in range(100):
            delay = self.backoff.delay(5)
            self.assertGreaterEqual(limit, delay)
Exemplo n.º 4
0
 def setUp(self):
     self.backoff = ExponentialBackoff(BASE_DELAY)
Exemplo n.º 5
0
 def setUp(self):
     self.backoff = ExponentialBackoff(BASE_DELAY)