def test_09_alias_stopped(self): # relies on Queue.first mock as per setUp providers = [ProviderMock()] pat = ProvidersAliasThread(providers, self.config) pat.queue = QueueMock() pat.start() pat.stop() pat.join() # there are no assertions to make here, only that the # test completes without error assert True
def test_18_alias_exceptions(self): """ test_18_alias_exceptions Set up the ProvidersAliasThread with a two mock providers, which simulate errors on processing aliases for various items. Check that we handle retries correctly. """ mock_provider1 = ProviderMock( aliases_exceptions={ 1:[ProviderRateLimitError,ProviderRateLimitError,ProviderRateLimitError], 2:[ProviderTimeout,ProviderTimeout,ProviderTimeout,ProviderTimeout], 4:[ProviderTimeout], } ) mock_provider1.name = 'mock1' mock_provider2 = ProviderMock( aliases_exceptions={ 1:[ProviderRateLimitError,ProviderRateLimitError,ProviderRateLimitError], 3:[ProviderTimeout,ProviderTimeout,ProviderTimeout,ProviderTimeout], 4:[ProviderTimeout], } ) mock_provider2.name = 'mock2' pmt = ProvidersAliasThread([mock_provider1,mock_provider2], self.config) pmt.queue = QueueMock(max_items=4) pmt.start() while (pmt.queue.current_item <= 4): time.sleep(1) pmt.stop() pmt.join() # Check that item 1 was processed correctly, after a retry self.assertTrue(mock_provider1.aliases_processed.has_key(1)) self.assertTrue(mock_provider2.aliases_processed.has_key(1)) ns_list = [k for (k,v) in pmt.queue.items[1].aliases.get_aliases_list()] self.assertEqual(set(ns_list),set(['mock','doi'])) # Check that item 2 failed on the first provider ## FIXME re-enable this test after queue refactor in sprint 6 ## self.assertFalse(mock_provider1.aliases_processed.has_key(2)) ## self.assertFalse(mock_provider2.aliases_processed.has_key(2)) ## self.assertEqual(pmt.queue.items[2].aliases.get_aliases_list(),[]) # Check that item 3 failed on the second provider self.assertTrue(mock_provider1.aliases_processed.has_key(3))
def test_11_alias_provider_not_implemented(self): # relies on Queue.first mock as per setUp providers = [ProviderNotImplemented()] pat = ProvidersAliasThread(providers, self.d) pat.queue = QueueMock() start = time.time() pat.start() time.sleep(2) pat.stop() pat.join() took = time.time() - start # The NotImplementedErrors should not derail the thread assert took > 2.0 assert took < 2.5
def test_10_alias_running(self): # relies on Queue.first mock as per setUp providers = [ProviderMock()] pat = ProvidersAliasThread(providers, self.config) pat.queue = QueueMock() start = time.time() pat.start() time.sleep(2) pat.stop() pat.join() took = time.time() - start # there are no assertions to make here, only that the # test completes without error in the appropriate time assert took > 2.0 assert took < 2.5
def test_17_alias_thread(self): """ test_17_alias_thread Set up the ProvidersAliasThread with a single mock provider. Check that it runs successfully with a single item in the queue, and that it processes the item ok. """ mock_provider = ProviderMock() pmt = ProvidersAliasThread([mock_provider], self.config) pmt.queue = QueueMock(max_items=1) pmt.start() while (pmt.queue.current_item <= 1): time.sleep(1) pmt.stop() pmt.join() # Check that item 1 was processed correctly, after a retry self.assertTrue(mock_provider.aliases_processed.has_key(1))