Пример #1
0
    def test_consume_next_chunk(self):
        start = 1536
        stream = io.BytesIO()
        data = b'Just one chunk.'
        chunk_size = len(data)
        download = download_mod.ChunkedDownload(
            EXAMPLE_URL, chunk_size, stream, start=start)
        total_bytes = 16384
        transport = self._mock_transport(
            start, chunk_size, total_bytes, content=data)

        # Verify the internal state before consuming a chunk.
        assert not download.finished
        assert download.bytes_downloaded == 0
        assert download.total_bytes is None
        # Actually consume the chunk and check the output.
        ret_val = download.consume_next_chunk(transport)
        assert ret_val is transport.request.return_value
        range_bytes = u'bytes={:d}-{:d}'.format(start, start + chunk_size - 1)
        download_headers = {u'range': range_bytes}
        transport.request.assert_called_once_with(
            u'GET', EXAMPLE_URL, data=None, headers=download_headers)
        assert stream.getvalue() == data
        # Go back and check the internal state after consuming the chunk.
        assert not download.finished
        assert download.bytes_downloaded == chunk_size
        assert download.total_bytes == total_bytes
Пример #2
0
    def test_consume_next_chunk_with_custom_timeout(self):
        start = 1536
        stream = io.BytesIO()
        data = b"Just one chunk."
        chunk_size = len(data)
        download = download_mod.ChunkedDownload(EXAMPLE_URL,
                                                chunk_size,
                                                stream,
                                                start=start)
        total_bytes = 16384
        transport = self._mock_transport(start,
                                         chunk_size,
                                         total_bytes,
                                         content=data)

        # Actually consume the chunk and check the output.
        download.consume_next_chunk(transport, timeout=14.7)

        range_bytes = u"bytes={:d}-{:d}".format(start, start + chunk_size - 1)
        download_headers = {u"range": range_bytes}
        transport.request.assert_called_once_with(
            u"GET",
            EXAMPLE_URL,
            data=None,
            headers=download_headers,
            timeout=14.7,
        )
Пример #3
0
 def test_consume_next_chunk_already_finished(self):
     download = download_mod.ChunkedDownload(EXAMPLE_URL, 512, None)
     download._finished = True
     with pytest.raises(ValueError):
         download.consume_next_chunk(None)