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
This commit is contained in:
parent
6519c0a953
commit
eba4912fc4
@ -13,13 +13,11 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
import inspect
|
|
||||||
import json
|
import json
|
||||||
import mock
|
import mock
|
||||||
import operator
|
import operator
|
||||||
import requests
|
import requests
|
||||||
import six
|
import six
|
||||||
import tenacity
|
|
||||||
import urllib3
|
import urllib3
|
||||||
|
|
||||||
from oslo_concurrency import processutils
|
from oslo_concurrency import processutils
|
||||||
@ -166,6 +164,10 @@ class TestDockerImageUploader(base.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestDockerImageUploader, self).setUp()
|
super(TestDockerImageUploader, self).setUp()
|
||||||
self.uploader = image_uploader.DockerImageUploader()
|
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.patcher = mock.patch('tripleo_common.image.image_uploader.Client')
|
||||||
self.dockermock = self.patcher.start()
|
self.dockermock = self.patcher.start()
|
||||||
|
|
||||||
@ -636,8 +638,6 @@ class TestDockerImageUploader(base.TestCase):
|
|||||||
])
|
])
|
||||||
|
|
||||||
def test_pull_retry(self):
|
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'
|
image = 'docker.io/tripleomaster/heat-docker-agents-centos'
|
||||||
|
|
||||||
dockerc = self.dockermock.return_value
|
dockerc = self.dockermock.return_value
|
||||||
@ -648,22 +648,16 @@ class TestDockerImageUploader(base.TestCase):
|
|||||||
['{"error": "ouch"}'],
|
['{"error": "ouch"}'],
|
||||||
['{"status": "done"}']
|
['{"status": "done"}']
|
||||||
]
|
]
|
||||||
with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f:
|
self.uploader._pull(dockerc, image)
|
||||||
f.return_value = 0
|
|
||||||
with mock.patch('inspect.getargspec') as mock_args:
|
|
||||||
mock_args.return_value = orig_argspec
|
|
||||||
|
|
||||||
self.uploader._pull(dockerc, image)
|
self.assertEqual(dockerc.pull.call_count, 5)
|
||||||
|
dockerc.pull.assert_has_calls([
|
||||||
self.assertEqual(dockerc.pull.call_count, 5)
|
mock.call(image, tag=None, stream=True)
|
||||||
dockerc.pull.assert_has_calls([
|
])
|
||||||
mock.call(image, tag=None, stream=True)
|
|
||||||
])
|
|
||||||
|
|
||||||
def test_pull_retry_failure(self):
|
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'
|
image = 'docker.io/tripleomaster/heat-docker-agents-centos'
|
||||||
|
|
||||||
dockerc = self.dockermock.return_value
|
dockerc = self.dockermock.return_value
|
||||||
dockerc.pull.side_effect = [
|
dockerc.pull.side_effect = [
|
||||||
urllib3.exceptions.ReadTimeoutError('p', '/foo', 'ouch'),
|
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'),
|
||||||
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:
|
self.assertEqual(dockerc.pull.call_count, 5)
|
||||||
f.return_value = 0
|
dockerc.pull.assert_has_calls([
|
||||||
with mock.patch('inspect.getargspec') as mock_args:
|
mock.call(image, tag=None, stream=True)
|
||||||
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)
|
|
||||||
])
|
|
||||||
|
|
||||||
def test_push_retry(self):
|
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'
|
image = 'docker.io/tripleoupstream/heat-docker-agents-centos'
|
||||||
|
|
||||||
dockerc = self.dockermock.return_value
|
dockerc = self.dockermock.return_value
|
||||||
@ -699,21 +685,14 @@ class TestDockerImageUploader(base.TestCase):
|
|||||||
['{"error": "ouch"}'],
|
['{"error": "ouch"}'],
|
||||||
['{"status": "done"}']
|
['{"status": "done"}']
|
||||||
]
|
]
|
||||||
with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f:
|
self.uploader._push(dockerc, image)
|
||||||
f.return_value = 0
|
|
||||||
with mock.patch('inspect.getargspec') as mock_args:
|
|
||||||
mock_args.return_value = orig_argspec
|
|
||||||
|
|
||||||
self.uploader._push(dockerc, image)
|
self.assertEqual(dockerc.push.call_count, 5)
|
||||||
|
dockerc.push.assert_has_calls([
|
||||||
self.assertEqual(dockerc.push.call_count, 5)
|
mock.call(image, tag=None, stream=True)
|
||||||
dockerc.push.assert_has_calls([
|
])
|
||||||
mock.call(image, tag=None, stream=True)
|
|
||||||
])
|
|
||||||
|
|
||||||
def test_push_retry_failure(self):
|
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'
|
image = 'docker.io/tripleoupstream/heat-docker-agents-centos'
|
||||||
|
|
||||||
dockerc = self.dockermock.return_value
|
dockerc = self.dockermock.return_value
|
||||||
@ -724,18 +703,13 @@ class TestDockerImageUploader(base.TestCase):
|
|||||||
['{"error": "ouch"}'],
|
['{"error": "ouch"}'],
|
||||||
['{"error": "ouch"}'],
|
['{"error": "ouch"}'],
|
||||||
]
|
]
|
||||||
with mock.patch('tenacity.wait.wait_random_exponential.__call__') as f:
|
self.assertRaises(ImageUploaderException,
|
||||||
f.return_value = 0
|
self.uploader._push, dockerc, image)
|
||||||
with mock.patch('inspect.getargspec') as mock_args:
|
|
||||||
mock_args.return_value = orig_argspec
|
|
||||||
|
|
||||||
self.assertRaises(ImageUploaderException,
|
self.assertEqual(dockerc.push.call_count, 5)
|
||||||
self.uploader._push, dockerc, image)
|
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.'
|
@mock.patch('tripleo_common.image.image_uploader.'
|
||||||
'DockerImageUploader._inspect')
|
'DockerImageUploader._inspect')
|
||||||
|
Loading…
Reference in New Issue
Block a user