From eba4912fc4cd37442ce4603544bb070612a1df74 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Tue, 28 Aug 2018 12:00:34 +1200 Subject: [PATCH] Simplify tenacity sleep mocking This changes the tenacity sleep mocking to not rely on tenacity internals, and to mock for all tests so that slow tests are not accidently missed. Change-Id: I0519e5e1c0edc1f2192a011f9fa524b5380d3518 Related-Bug: #1788802 --- .../tests/image/test_image_uploader.py | 80 +++++++------------ 1 file changed, 27 insertions(+), 53 deletions(-) diff --git a/tripleo_common/tests/image/test_image_uploader.py b/tripleo_common/tests/image/test_image_uploader.py index 10d143a64..58003cdcd 100644 --- a/tripleo_common/tests/image/test_image_uploader.py +++ b/tripleo_common/tests/image/test_image_uploader.py @@ -13,13 +13,11 @@ # under the License. # -import inspect import json import mock import operator import requests import six -import tenacity import urllib3 from oslo_concurrency import processutils @@ -166,6 +164,10 @@ class TestDockerImageUploader(base.TestCase): def setUp(self): super(TestDockerImageUploader, self).setUp() self.uploader = image_uploader.DockerImageUploader() + self.uploader._push.retry.sleep = mock.Mock() + self.uploader._pull.retry.sleep = mock.Mock() + self.uploader._inspect.retry.sleep = mock.Mock() + self.patcher = mock.patch('tripleo_common.image.image_uploader.Client') self.dockermock = self.patcher.start() @@ -636,8 +638,6 @@ class TestDockerImageUploader(base.TestCase): ]) def test_pull_retry(self): - orig_call = tenacity.wait.wait_random_exponential.__call__ - orig_argspec = inspect.getargspec(orig_call) image = 'docker.io/tripleomaster/heat-docker-agents-centos' dockerc = self.dockermock.return_value @@ -648,22 +648,16 @@ class TestDockerImageUploader(base.TestCase): ['{"error": "ouch"}'], ['{"status": "done"}'] ] - with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f: - f.return_value = 0 - with mock.patch('inspect.getargspec') as mock_args: - mock_args.return_value = orig_argspec + self.uploader._pull(dockerc, image) - self.uploader._pull(dockerc, image) - - self.assertEqual(dockerc.pull.call_count, 5) - dockerc.pull.assert_has_calls([ - mock.call(image, tag=None, stream=True) - ]) + self.assertEqual(dockerc.pull.call_count, 5) + dockerc.pull.assert_has_calls([ + mock.call(image, tag=None, stream=True) + ]) def test_pull_retry_failure(self): - orig_call = tenacity.wait.wait_random_exponential.__call__ - orig_argspec = inspect.getargspec(orig_call) image = 'docker.io/tripleomaster/heat-docker-agents-centos' + dockerc = self.dockermock.return_value dockerc.pull.side_effect = [ urllib3.exceptions.ReadTimeoutError('p', '/foo', 'ouch'), @@ -672,23 +666,15 @@ class TestDockerImageUploader(base.TestCase): urllib3.exceptions.ReadTimeoutError('p', '/foo', 'ouch'), urllib3.exceptions.ReadTimeoutError('p', '/foo', 'ouch'), ] + self.assertRaises(urllib3.exceptions.ReadTimeoutError, + self.uploader._pull, dockerc, image) - with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f: - f.return_value = 0 - with mock.patch('inspect.getargspec') as mock_args: - mock_args.return_value = orig_argspec - - self.assertRaises(urllib3.exceptions.ReadTimeoutError, - self.uploader._pull, dockerc, image) - - self.assertEqual(dockerc.pull.call_count, 5) - dockerc.pull.assert_has_calls([ - mock.call(image, tag=None, stream=True) - ]) + self.assertEqual(dockerc.pull.call_count, 5) + dockerc.pull.assert_has_calls([ + mock.call(image, tag=None, stream=True) + ]) def test_push_retry(self): - orig_call = tenacity.wait.wait_random_exponential.__call__ - orig_argspec = inspect.getargspec(orig_call) image = 'docker.io/tripleoupstream/heat-docker-agents-centos' dockerc = self.dockermock.return_value @@ -699,21 +685,14 @@ class TestDockerImageUploader(base.TestCase): ['{"error": "ouch"}'], ['{"status": "done"}'] ] - with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f: - f.return_value = 0 - with mock.patch('inspect.getargspec') as mock_args: - mock_args.return_value = orig_argspec + self.uploader._push(dockerc, image) - self.uploader._push(dockerc, image) - - self.assertEqual(dockerc.push.call_count, 5) - dockerc.push.assert_has_calls([ - mock.call(image, tag=None, stream=True) - ]) + self.assertEqual(dockerc.push.call_count, 5) + dockerc.push.assert_has_calls([ + mock.call(image, tag=None, stream=True) + ]) def test_push_retry_failure(self): - orig_call = tenacity.wait.wait_random_exponential.__call__ - orig_argspec = inspect.getargspec(orig_call) image = 'docker.io/tripleoupstream/heat-docker-agents-centos' dockerc = self.dockermock.return_value @@ -724,18 +703,13 @@ class TestDockerImageUploader(base.TestCase): ['{"error": "ouch"}'], ['{"error": "ouch"}'], ] - with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f: - f.return_value = 0 - with mock.patch('inspect.getargspec') as mock_args: - mock_args.return_value = orig_argspec + self.assertRaises(ImageUploaderException, + self.uploader._push, dockerc, image) - self.assertRaises(ImageUploaderException, - self.uploader._push, dockerc, image) - - self.assertEqual(dockerc.push.call_count, 5) - dockerc.push.assert_has_calls([ - mock.call(image, tag=None, stream=True) - ]) + self.assertEqual(dockerc.push.call_count, 5) + dockerc.push.assert_has_calls([ + mock.call(image, tag=None, stream=True) + ]) @mock.patch('tripleo_common.image.image_uploader.' 'DockerImageUploader._inspect')