Exemplo n.º 1
0
 def testLastRecvContainsCompleteChunk(self):
     reactor = CallTrace('Reactor')
     sokket = CallTrace('Sokket')
     data = []
     done = []
     class Handler:
         def send(self, chunk):
             data.append(chunk)
         def throw(self, exception):
             done.append(True)
     httpreader = HttpReader(reactor, sokket, Handler(), 'GET', 'host,nl', '/')
     httpreader._chunked = True
     chunkOne = '9\r\n123456789\r\n'
     chunkTwo = '8\r\n87654321\r\n'
     httpreader._sendFragment(chunkOne)
     self.assertEquals(['123456789'], data)
     httpreader._sendFragment(chunkTwo)
     self.assertEquals(['123456789', '87654321'], data)
     while data: del data[0] # now both in one network message
     httpreader._sendFragment(chunkOne + chunkTwo +'0\r\n\r\n')
     # Send fragment will only read one fragment.
     # Now feed it until all chunks are finished
     httpreader._sendFragment('')
     httpreader._sendFragment('')
     self.assertEquals(['123456789', '87654321'], data)
     self.assertEquals([True], done)
Exemplo n.º 2
0
    def testLastRecvContainsCompleteChunk(self):
        reactor = CallTrace('Reactor')
        sokket = CallTrace('Sokket')
        data = []
        done = []

        class Handler:
            def send(self, chunk):
                data.append(chunk)

            def throw(self, exception):
                done.append(True)

        httpreader = HttpReader(reactor, sokket, Handler(), 'GET', 'host,nl',
                                '/')
        httpreader._chunked = True
        chunkOne = '9\r\n123456789\r\n'
        chunkTwo = '8\r\n87654321\r\n'
        httpreader._sendFragment(chunkOne)
        self.assertEquals(['123456789'], data)
        httpreader._sendFragment(chunkTwo)
        self.assertEquals(['123456789', '87654321'], data)
        while data:
            del data[0]  # now both in one network message
        httpreader._sendFragment(chunkOne + chunkTwo + '0\r\n\r\n')
        # Send fragment will only read one fragment.
        # Now feed it until all chunks are finished
        httpreader._sendFragment('')
        httpreader._sendFragment('')
        self.assertEquals(['123456789', '87654321'], data)
        self.assertEquals([True], done)
Exemplo n.º 3
0
    def testChunkedAllTheWay(self):
        reactor = CallTrace('Reactor')
        sokket = CallTrace('Sokket')
        data = []

        class Handler:
            def send(self, chunk):
                data.append(chunk)

            def throw(self, exception):
                pass

        httpreader = HttpReader(reactor, sokket, Handler(), 'GET', 'host,nl',
                                '/')
        httpreader._chunked = True
        # chunk == network message
        httpreader._sendFragment('4\r\n1234\r\n')
        self.assertEquals(['1234'], data)
        httpreader._sendFragment('10\r\n0123456789abcdef\r\n')
        self.assertEquals(['1234', '0123456789abcdef'], data)
        del data[0]
        del data[0]
        # chunk = 2 network messages
        httpreader._sendFragment('10\r\nfedcba')
        #self.assertEquals(['fedcba'], data)
        httpreader._sendFragment('9876543210\r\n')
        self.assertEquals(['fedcba9876543210'], data)
Exemplo n.º 4
0
 def testChunkedAllTheWay(self):
     reactor = CallTrace('Reactor')
     sokket = CallTrace('Sokket')
     data = []
     class Handler:
         def send(self, chunk):
             data.append(chunk)
         def throw(self, exception):
             pass
     httpreader = HttpReader(reactor, sokket, Handler(), 'GET', 'host,nl', '/')
     httpreader._chunked = True
     # chunk == network message
     httpreader._sendFragment('4\r\n1234\r\n')
     self.assertEquals(['1234'], data)
     httpreader._sendFragment('10\r\n0123456789abcdef\r\n')
     self.assertEquals(['1234', '0123456789abcdef'], data)
     del data[0]
     del data[0]
     # chunk = 2 network messages
     httpreader._sendFragment('10\r\nfedcba')
     #self.assertEquals(['fedcba'], data)
     httpreader._sendFragment('9876543210\r\n')
     self.assertEquals(['fedcba9876543210'], data)