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)
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)
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)