Exemplo n.º 1
0
 def test_write_soon_filewrapper(self):
     from waitress.buffers import ReadOnlyFileBasedBuffer
     f = io.BytesIO(b'abc')
     wrapper = ReadOnlyFileBasedBuffer(f, 8192)
     wrapper.prepare()
     inst, sock, map = self._makeOneWithMap()
     outbufs = inst.outbufs
     orig_outbuf = outbufs[0]
     wrote = inst.write_soon(wrapper)
     self.assertEqual(wrote, 3)
     self.assertEqual(len(outbufs), 3)
     self.assertEqual(outbufs[0], orig_outbuf)
     self.assertEqual(outbufs[1], wrapper)
     self.assertEqual(outbufs[2].__class__.__name__, 'OverflowableBuffer')
Exemplo n.º 2
0
    def test_write_soon_filewrapper(self):
        from waitress.buffers import ReadOnlyFileBasedBuffer

        f = io.BytesIO(b"abc")
        wrapper = ReadOnlyFileBasedBuffer(f, 8192)
        wrapper.prepare()
        inst, sock, map = self._makeOneWithMap()

        # _flush_some will no longer flush
        def send(_):
            return 0

        sock.send = send

        outbufs = inst.outbufs
        wrote = inst.write_soon(wrapper)
        self.assertEqual(wrote, 3)
        self.assertEqual(len(outbufs), 2)
        self.assertEqual(outbufs[0], wrapper)
        self.assertEqual(outbufs[1].__class__.__name__, "OverflowableBuffer")
Exemplo n.º 3
0
 def test_execute_app_returns_filewrapper_prepare_returns_True(self):
     from waitress.buffers import ReadOnlyFileBasedBuffer
     f = io.BytesIO(b'abc')
     app_iter = ReadOnlyFileBasedBuffer(f, 8192)
     def app(environ, start_response):
         start_response('200 OK', [('Content-Length', '3')])
         return app_iter
     inst = self._makeOne()
     inst.channel.server.application = app
     inst.execute()
     self.assertTrue(inst.channel.written) # header
     self.assertEqual(inst.channel.otherdata, [app_iter])
Exemplo n.º 4
0
    def test_execute_app_returns_filewrapper_prepare_returns_True_badcl(self):
        from waitress.buffers import ReadOnlyFileBasedBuffer

        f = io.BytesIO(b"abc")
        app_iter = ReadOnlyFileBasedBuffer(f, 8192)

        def app(environ, start_response):
            start_response("200 OK", [])
            return app_iter

        inst = self._makeOne()
        inst.channel.server.application = app
        inst.content_length = 10
        inst.response_headers = [("Content-Length", "10")]
        inst.execute()
        self.assertTrue(inst.channel.written)  # header
        self.assertEqual(inst.channel.otherdata, [app_iter])
        self.assertEqual(inst.content_length, 3)
        self.assertEqual(dict(inst.response_headers)["Content-Length"], "3")
Exemplo n.º 5
0
 def _makeOne(self, file, block_size=8192):
     from waitress.buffers import ReadOnlyFileBasedBuffer
     return ReadOnlyFileBasedBuffer(file, block_size)
Exemplo n.º 6
0
    def _makeOne(self, file, block_size=8192):
        from waitress.buffers import ReadOnlyFileBasedBuffer

        buf = ReadOnlyFileBasedBuffer(file, block_size)
        self.buffers_to_close.append(buf)
        return buf