class TestDownloadNonSeekableOutputManager(BaseDownloadOutputManagerTest): def setUp(self): super(TestDownloadNonSeekableOutputManager, self).setUp() self.download_output_manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=None) def test_is_compatible_with_seekable_stream(self): with open(self.filename, 'wb') as f: self.assertTrue(self.download_output_manager.is_compatible(f)) def test_not_compatible_with_filename(self): self.assertFalse( self.download_output_manager.is_compatible(self.filename)) def test_compatible_with_non_seekable_stream(self): class NonSeekable(object): def write(self, data): pass f = NonSeekable() self.assertTrue(self.download_output_manager.is_compatible(f)) def test_is_compatible_with_bytesio(self): self.assertTrue( self.download_output_manager.is_compatible(six.BytesIO())) def test_get_download_task_tag(self): self.assertIs(self.download_output_manager.get_download_task_tag(), IN_MEMORY_DOWNLOAD_TAG) def test_submit_writes_from_internal_queue(self): class FakeQueue(object): def request_writes(self, offset, data): return [ { 'offset': 0, 'data': 'foo' }, { 'offset': 3, 'data': 'bar' }, ] q = FakeQueue() io_executor = BoundedExecutor(1000, 1) manager = DownloadNonSeekableOutputManager(self.osutil, self.transfer_coordinator, io_executor=io_executor, defer_queue=q) fileobj = WriteCollector() manager.queue_file_io_task(fileobj=fileobj, data='foo', offset=1) io_executor.shutdown() self.assertEqual(fileobj.writes, [(0, 'foo'), (3, 'bar')])
def test_submit_writes_from_internal_queue(self): class FakeQueue(object): def request_writes(self, offset, data): return [ {'offset': 0, 'data': 'foo'}, {'offset': 3, 'data': 'bar'}, ] q = FakeQueue() io_executor = BoundedExecutor(1000, 1) manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=io_executor, defer_queue=q) fileobj = WriteCollector() manager.queue_file_io_task( fileobj=fileobj, data='foo', offset=1) io_executor.shutdown() self.assertEqual(fileobj.writes, [(0, 'foo'), (3, 'bar')])
def test_submit_writes_from_internal_queue(self): class FakeQueue(object): def request_writes(self, offset, data): return [ {'offset': 0, 'data': 'foo'}, {'offset': 3, 'data': 'bar'}, ] q = FakeQueue() io_executor = BoundedExecutor(1000, 1) manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=io_executor, defer_queue=q) fileobj = WriteCollector() manager.queue_file_io_task( fileobj=fileobj, data='foo', offset=1) io_executor.shutdown() self.assertEqual(fileobj.writes, [(0, 'foo'), (3, 'bar')])
def setUp(self): super(TestDownloadNonSeekableOutputManager, self).setUp() self.download_output_manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=None)
def setUp(self): super(TestDownloadNonSeekableOutputManager, self).setUp() self.download_output_manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=None)
class TestDownloadNonSeekableOutputManager(BaseDownloadOutputManagerTest): def setUp(self): super(TestDownloadNonSeekableOutputManager, self).setUp() self.download_output_manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=None) def test_is_compatible_with_seekable_stream(self): with open(self.filename, 'wb') as f: self.assertTrue(self.download_output_manager.is_compatible( f, self.osutil) ) def test_not_compatible_with_filename(self): self.assertFalse(self.download_output_manager.is_compatible( self.filename, self.osutil)) def test_compatible_with_non_seekable_stream(self): class NonSeekable(object): def write(self, data): pass f = NonSeekable() self.assertTrue(self.download_output_manager.is_compatible( f, self.osutil) ) def test_is_compatible_with_bytesio(self): self.assertTrue( self.download_output_manager.is_compatible( six.BytesIO(), self.osutil) ) def test_get_download_task_tag(self): self.assertIs( self.download_output_manager.get_download_task_tag(), IN_MEMORY_DOWNLOAD_TAG) def test_submit_writes_from_internal_queue(self): class FakeQueue(object): def request_writes(self, offset, data): return [ {'offset': 0, 'data': 'foo'}, {'offset': 3, 'data': 'bar'}, ] q = FakeQueue() io_executor = BoundedExecutor(1000, 1) manager = DownloadNonSeekableOutputManager( self.osutil, self.transfer_coordinator, io_executor=io_executor, defer_queue=q) fileobj = WriteCollector() manager.queue_file_io_task( fileobj=fileobj, data='foo', offset=1) io_executor.shutdown() self.assertEqual(fileobj.writes, [(0, 'foo'), (3, 'bar')]) def test_get_file_io_write_task(self): fileobj = WriteCollector() io_write_task = self.download_output_manager.get_io_write_task( fileobj=fileobj, data='foo', offset=1) self.assertIsInstance(io_write_task, IOStreamingWriteTask) io_write_task() self.assertEqual(fileobj.writes, [(0, 'foo')])