18870: Need to declare NODES as array
[arvados.git] / sdk / python / tests / test_retry.py
index 0c1110c5ceb10e5164d48db9c03bd2e74f8b9639..2d020059374b3dc3f42fd95010ebd675605ec929 100644 (file)
@@ -1,5 +1,10 @@
-#!/usr/bin/env python
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
 
+from builtins import zip
+from builtins import range
+from builtins import object
 import itertools
 import unittest
 
@@ -7,8 +12,6 @@ import arvados.errors as arv_error
 import arvados.retry as arv_retry
 import mock
 
-from arvados_testutil import fake_requests_response
-
 class RetryLoopTestMixin(object):
     @staticmethod
     def loop_success(result):
@@ -27,7 +30,7 @@ class RetryLoopTestMixin(object):
         responses = itertools.chain(results, itertools.repeat(None))
         retrier = arv_retry.RetryLoop(num_retries, self.loop_success,
                                       **kwargs)
-        for tries_left, response in itertools.izip(retrier, responses):
+        for tries_left, response in zip(retrier, responses):
             retrier.save_result(response)
         return retrier
 
@@ -143,15 +146,14 @@ class RetryLoopBackoffTestCase(unittest.TestCase, RetryLoopTestMixin):
 
     def test_backoff_multiplier(self, sleep_mock, time_mock):
         self.run_loop(5, 500, 501, 502, 503, 504, 505,
-                      backoff_start=5, backoff_growth=10)
+                      backoff_start=5, backoff_growth=10, max_wait=1000000000)
         self.check_backoff(sleep_mock, 5, 9)
 
 
 class CheckHTTPResponseSuccessTestCase(unittest.TestCase):
     def results_map(self, *codes):
         for code in codes:
-            response = fake_requests_response(code, None)
-            yield code, arv_retry.check_http_response_success(response)
+            yield code, arv_retry.check_http_response_success(code)
 
     def check(assert_name):
         def check_method(self, expected, *codes):
@@ -169,11 +171,11 @@ class CheckHTTPResponseSuccessTestCase(unittest.TestCase):
     check_is_not = check('assertIsNot')
 
     def test_obvious_successes(self):
-        self.check_is(True, *range(200, 207))
+        self.check_is(True, *list(range(200, 207)))
 
     def test_obvious_stops(self):
         self.check_is(False, 424, 426, 428, 431,
-                      *range(400, 408) + range(410, 420))
+                      *list(range(400, 408)) + list(range(410, 420)))
 
     def test_obvious_retries(self):
         self.check_is(None, 500, 502, 503, 504)
@@ -182,13 +184,13 @@ class CheckHTTPResponseSuccessTestCase(unittest.TestCase):
         self.check_is(None, 408, 409, 422, 423)
 
     def test_5xx_failures(self):
-        self.check_is(False, 501, *range(505, 512))
+        self.check_is(False, 501, *list(range(505, 512)))
 
     def test_1xx_not_retried(self):
         self.check_is_not(None, 100, 101)
 
     def test_redirects_not_retried(self):
-        self.check_is_not(None, *range(300, 309))
+        self.check_is_not(None, *list(range(300, 309)))
 
     def test_wacky_code_retries(self):
         self.check_is(None, 0, 99, 600, -200)
@@ -204,8 +206,10 @@ class RetryMethodTestCase(unittest.TestCase):
             return (a, num_retries, z)
 
 
-    def test_positional_arg_passed(self):
-        self.assertEqual((3, 2, 0), self.Tester().check(3, 2))
+    def test_positional_arg_raises(self):
+        # unsupported use -- make sure we raise rather than ignore
+        with self.assertRaises(TypeError):
+            self.assertEqual((3, 2, 0), self.Tester().check(3, 2))
 
     def test_keyword_arg_passed(self):
         self.assertEqual((4, 3, 0), self.Tester().check(num_retries=3, a=4))