Index: Lib/test/test_httplib.py =================================================================== --- Lib/test/test_httplib.py (revision 87228) +++ Lib/test/test_httplib.py (working copy) @@ -317,6 +317,43 @@ self.assertEqual("Basic realm=\"example\"", resp.getheader("www-authenticate")) + def test_memusage(self): + try: + import resource + import multiprocessing + except ImportError: + self.skipTest("Need resource and multiprocessing") + else: + serversocket = socket.socket( + socket.AF_INET, socket.SOCK_STREAM) + serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + serversocket.bind(('localhost', 8888)) + serversocket.listen(5) + + def runner(): + s = serversocket.accept()[0] + serversocket.close() + while True: + s.send(b'A') + + resource.setrlimit(resource.RLIMIT_AS, (104857600, -1)) + + p = multiprocessing.Process(target=runner) + p.start() + + try: + h = client.HTTPConnection("localhost", 8888) + h.connect() + h.request("GET", "/") + r = h.getresponse() + except MemoryError: + self.fail('Out of memory') + else: + self.assertEqual(r.getcode(), 200) + finally: + p.terminate() + resource.setrlimit(resource.RLIMIT_AS, (-1, -1)) + class OfflineTest(TestCase): def test_responses(self): self.assertEqual(client.responses[client.NOT_FOUND], "Not Found")