Skip to content

Commit 2fe7084

Browse files
committed
add tests that should retry for other classes of error
1 parent 2ace932 commit 2fe7084

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

tests/unit/io/utils.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
from mock import Mock
2626

2727
import errno
28+
import logging
2829
import math
2930
import os
3031
from socket import error as socket_error
32+
import ssl
3133

3234
try:
3335
import unittest2 as unittest
@@ -37,6 +39,9 @@
3739
import time
3840

3941

42+
log = logging.getLogger(__name__)
43+
44+
4045
class TimerCallback(object):
4146

4247
invoked = False
@@ -247,18 +252,31 @@ def test_successful_connection(self):
247252
return c
248253

249254
def test_eagain_on_buffer_size(self):
255+
self._check_error_recovery_on_buffer_size(errno.EAGAIN)
256+
257+
def test_ewouldblock_on_buffer_size(self):
258+
self._check_error_recovery_on_buffer_size(errno.EWOULDBLOCK)
259+
260+
def test_sslwantread_on_buffer_size(self):
261+
self._check_error_recovery_on_buffer_size(ssl.SSL_ERROR_WANT_READ)
262+
263+
def test_sslwantwrite_on_buffer_size(self):
264+
self._check_error_recovery_on_buffer_size(ssl.SSL_ERROR_WANT_WRITE)
265+
266+
def _check_error_recovery_on_buffer_size(self, error_code):
250267
c = self.test_successful_connection()
251268

252269
header = six.b('\x00\x00\x00\x00') + int32_pack(20000)
253270
responses = [
254271
header + (six.b('a') * (4096 - len(header))),
255272
six.b('a') * 4096,
256-
socket_error(errno.EAGAIN),
273+
socket_error(error_code),
257274
six.b('a') * 100,
258-
socket_error(errno.EAGAIN)]
275+
socket_error(error_code)]
259276

260277
def side_effect(*args):
261278
response = responses.pop(0)
279+
log.debug('about to mock return {}'.format(response))
262280
if isinstance(response, socket_error):
263281
raise response
264282
else:

0 commit comments

Comments
 (0)