def test_timeout(monkeypatch): """ Check that in case of a timeout API will not give up easily. """ class mock_fetch (object): def __init__(self): self.calls = 0 def __call__(self, _, url): self.calls += 1 print('call {0}: {1}'.format(self.calls, url)) raise URLError(socket.timeout()) fetcher = mock_fetch() monkeypatch.setattr(API, '_fetch', fetcher) api = RetryAPI(locale='de') itworked = False try: api.call(operation='DummyOperation') itworked = True except URLError: e = sys.exc_info()[1] # Python 2/3 compatible assert isinstance(e.reason, socket.timeout) # timeout WAS raised and fetch was called TRIES times assert not itworked assert fetcher.calls == api.TRIES
def amz_get_info(url): params = {'ResponseGroup': 'Images'} m = re.match(r'^https?://(?:www.)?amazon\.(.*?)(?:\:[0-9]+)?/.*/([0-9B][0-9A-Z]{9})(?:[^0-9A-Z]|$)', url) if m is None: return (None, None) locale = m.group(1).replace('co.', '').replace('com', 'us') asin = m.group(2) amazon_api = RetryAPI(cfg.AWS_KEY, cfg.AWS_SECRET_KEY, locale, cfg.AWS_ASSOCIATE_TAG) try: root = amazon_api.item_lookup(asin, **params) except amazonproduct.errors.InvalidParameterValue, e: return (None, None)
def amz_get_info(url): params = { 'ResponseGroup' : 'Images' } m = re.match(r'^https?://(?:www.)?amazon\.(.*?)(?:\:[0-9]+)?/.*/([0-9B][0-9A-Z]{9})(?:[^0-9A-Z]|$)', url) if m is None: return (None, None) locale = m.group(1).replace('co.', '').replace('com', 'us') asin = m.group(2) amazon_api = RetryAPI(cfg.AWS_KEY, cfg.AWS_SECRET_KEY, locale, cfg.AWS_ASSOCIATE_TAG) try: root = amazon_api.item_lookup(asin, **params) except amazonproduct.errors.InvalidParameterValue, e: return None
def test_timeout(monkeypatch): """ Check that in case of a timeout API will not give up easily. """ class mock_fetch (object): def __init__(self): self.calls = 0 def __call__(self, _, url): self.calls += 1 print 'call %i: %s' % (self.calls, url) raise URLError(socket.timeout()) fetcher = mock_fetch() monkeypatch.setattr(API, '_fetch', fetcher) api = RetryAPI(locale='de') itworked = False try: api.call(operation='DummyOperation') itworked = True except URLError, e: assert isinstance(e.reason, socket.timeout)