/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_http.py

  • Committer: Vincent Ladeuil
  • Date: 2007-12-08 23:15:18 UTC
  • mto: (2929.3.16 https) (3097.2.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 3099.
  • Revision ID: v.ladeuil+lp@free.fr-20071208231518-sj2ui57xyd4mkjra
Limit GET requests by body size instead of number of ranges.

* bzrlib/transport/http/response.py:
Fix some error messages.
(RangeFile.read_range_definition): Keep the range headers in the
_headers attribute for easier debugging (especially for remote
debugging).

* bzrlib/transport/http/_pycurl.py:
(PyCurlTransport): Replace _max_readv_combine by _get_max_size
which is more approriate to the problem.

* bzrlib/transport/http/__init__.py:
(HttpTransportBase): Add a _get_max_size class attribute
corresponding to the max_size _coalesced_offets max_size
parameter.
(HttpTransportBase._coalesce_readv): Limit the size of the get
requests if _get_max_size is greater than 0 while still respecting
the maximum number of ranges in a request.

* bzrlib/tests/test_http.py:
(TestRangeRequestServer.test_readv_get_max_size): Test the
_get_max_size parameter.

* bzrlib/transport/__init__.py:
(Transport._coalesce_offsets): Add a max_size parameter limiting
the size of the coalesced offsets.

* bzrlib/tests/test_transport.py:
(TestCoalesceOffsets.check): Add the max_size parameter.
(TestCoalesceOffsets.test_coalesce_max_size,
TestCoalesceOffsets.test_coalesce_no_max_size): Test the max_size
parameter.

Show diffs side-by-side

added added

removed removed

Lines of Context:
660
660
        self.assertEqual(l[2], (3, '34'))
661
661
        self.assertEqual(l[3], (9, '9'))
662
662
        # The server should have issued 4 requests
663
 
        self.assertEqual(4, self.get_readonly_server().GET_request_nb)
 
663
        self.assertEqual(4, server.GET_request_nb)
 
664
 
 
665
    def test_readv_get_max_size(self):
 
666
        server = self.get_readonly_server()
 
667
        t = self._transport(server.get_url())
 
668
        # force transport to issue multiple requests by limiting the number of
 
669
        # bytes by request. Note that this apply to coalesced offsets only, a
 
670
        # single range ill keep its size even if bigger than the limit.
 
671
        t._get_max_size = 2
 
672
        l = list(t.readv('a', ((0, 1), (1, 1), (2, 4), (6, 4))))
 
673
        self.assertEqual(l[0], (0, '0'))
 
674
        self.assertEqual(l[1], (1, '1'))
 
675
        self.assertEqual(l[2], (2, '2345'))
 
676
        self.assertEqual(l[3], (6, '6789'))
 
677
        # The server should have issued 3 requests
 
678
        self.assertEqual(3, server.GET_request_nb)
664
679
 
665
680
 
666
681
class TestSingleRangeRequestServer(TestRangeRequestServer):