def test_download_nothing(self, fake_dispatch, fake_wait): primary = Mock() sources = [] requests = [] # test canceled = Mock() canceled.is_set.return_value = False batch = Batch(canceled, primary, sources, iter(requests), None) report = batch.download() # validation # initial dispatch self.assertFalse(fake_dispatch.called) self.assertTrue(isinstance(report, DownloadReport)) self.assertEqual(len(report.downloads), 0) fake_wait.assert_called_once_with(0)
def test_download(self, fake_dispatch, fake_wait): primary = Mock() sources = [Mock(), Mock()] requests = [Mock(), Mock(), Mock()] queue_1 = Mock() queue_1.downloader = Mock() queue_1.downloader.event_listener = Mock() queue_1.downloader.event_listener.total_succeeded = 100 queue_1.downloader.event_listener.total_failed = 3 queue_2 = Mock() queue_2.downloader = Mock() queue_2.downloader.event_listener = Mock() queue_2.downloader.event_listener.total_succeeded = 200 queue_2.downloader.event_listener.total_failed = 10 # test canceled = Mock() canceled.is_set.return_value = False batch = Batch(canceled, primary, sources, iter(requests), None) batch.queues = {'source-1': queue_1, 'source-2': queue_2} # simulated report = batch.download() # validation # initial dispatch for request in requests: request.find_sources.assert_called_with(primary, sources) calls = fake_dispatch.call_args_list self.assertEqual(len(calls), len(requests)) for i, request in enumerate(requests): self.assertEqual(calls[i][0][0], requests[i]) # wait fake_wait.assert_called_with(len(requests)) # queue shutdown for queue in batch.queues.values(): queue.put.assert_called_with(None) queue.halt.assert_called_with() queue.join.assert_called_with() # report self.assertTrue(isinstance(report, DownloadReport)) self.assertEqual(len(report.downloads), 2) self.assertEqual(report.downloads['source-1'].total_succeeded, 100) self.assertEqual(report.downloads['source-1'].total_failed, 3) self.assertEqual(report.downloads['source-2'].total_succeeded, 200) self.assertEqual(report.downloads['source-2'].total_failed, 10)
def test_download_canceled(self, fake_dispatch, fake_wait): queue_1 = Mock() queue_1.downloader = Mock() queue_1.downloader.event_listener = Mock() queue_1.downloader.event_listener.total_succeeded = 100 queue_1.downloader.event_listener.total_failed = 3 queue_2 = Mock() queue_2.downloader = Mock() queue_2.downloader.event_listener = Mock() queue_2.downloader.event_listener.total_succeeded = 200 queue_2.downloader.event_listener.total_failed = 10 # test canceled = Mock() canceled.is_set.return_value = True batch = Batch(canceled, None, [], [Mock()], None) batch.queues = {'source-1': queue_1, 'source-2': queue_2} # simulated report = batch.download() # validation # initial dispatch self.assertFalse(fake_dispatch.called) # queue shutdown for queue in batch.queues.values(): queue.put.assert_called_with(None) queue.halt.assert_called_with() queue.join.assert_called_with() # wait fake_wait.assert_called_once_with(0) # report self.assertTrue(isinstance(report, DownloadReport)) self.assertEqual(len(report.downloads), 2) self.assertEqual(report.downloads['source-1'].total_succeeded, 100) self.assertEqual(report.downloads['source-1'].total_failed, 3) self.assertEqual(report.downloads['source-2'].total_succeeded, 200) self.assertEqual(report.downloads['source-2'].total_failed, 10)