Exemple #1
0
    def test_double_iteration_over_same_response_body(self):
        class TestHttpResp(object):
            msg = {'transfer-encoding': 'chunked'}

            def __init__(self, fp):
                self.fp = fp

            def isclosed(self):
                return len(self.fp.buf) == self.fp.tell()

        data = 'foobarbaz'
        data = '\n'.join([hex(len(data))[2:], data])
        response = http.ResponseBody(TestHttpResp(StringIO(data)),
                                     lambda *a, **k: None)
        self.assertEqual(list(response.iterchunks()), ['foobarbaz'])
        self.assertEqual(list(response.iterchunks()), [])
Exemple #2
0
    def test_double_iteration_over_same_response_body(self):
        class TestHttpResp(object):
            msg = {'transfer-encoding': 'chunked'}

            def __init__(self, fp):
                self.fp = fp

            def close(self):
                pass

            def isclosed(self):
                return len(self.fp.getvalue()) == self.fp.tell()

        data = b'foobarbaz'
        data = b'\n'.join([hex(len(data))[2:].encode('utf-8'), data])
        response = http.ResponseBody(TestHttpResp(util.StringIO(data)), None,
                                     None, None)
        self.assertEqual(list(response.iterchunks()), [b'foobarbaz'])
        self.assertEqual(list(response.iterchunks()), [])
Exemple #3
0
    def test_close(self):
        class TestStream(StringIO):
            def isclosed(self):
                return len(self.buf) == self.tell()

        class Counter(object):
            def __init__(self):
                self.value = 0

            def __call__(self):
                self.value += 1

        counter = Counter()

        response = http.ResponseBody(TestStream('foobar'), counter)

        response.read(10)  # read more than stream has. close() is called
        response.read()  # steam ended. another close() call

        self.assertEqual(counter.value, 1)
Exemple #4
0
    def test_close(self):
        class TestStream(util.StringIO):
            def isclosed(self):
                return len(self.getvalue()) == self.tell()

        class ConnPool(object):
            def __init__(self):
                self.value = 0

            def release(self, url, conn):
                self.value += 1

        conn_pool = ConnPool()
        stream = TestStream(b'foobar')
        stream.msg = {}
        response = http.ResponseBody(stream, conn_pool, 'a', 'b')

        response.read(10)  # read more than stream has. close() is called
        response.read()  # steam ended. another close() call

        self.assertEqual(conn_pool.value, 1)