diff --git a/eventlet/hubs/hub.py b/eventlet/hubs/hub.py index 90a1ad7..c1d2eb3 100644 --- a/eventlet/hubs/hub.py +++ b/eventlet/hubs/hub.py @@ -102,6 +102,7 @@ class BaseHub(object): switch_out() except: self.squelch_generic_exception(sys.exc_info()) + sys.exc_clear() if self.greenlet.dead: self.greenlet = greenlet.greenlet(self.run) try: @@ -251,6 +252,7 @@ class BaseHub(object): raise except: self.squelch_timer_exception(timer, sys.exc_info()) + sys.exc_clear() finally: self.timer_finished(timer) diff --git a/tests/greenio_test.py b/tests/greenio_test.py index f71e40c..174bdb9 100644 --- a/tests/greenio_test.py +++ b/tests/greenio_test.py @@ -153,30 +153,27 @@ class TestGreenIo(LimitedTestCase): gt.wait() def test_send_timeout(self): - listener = greenio.GreenSocket(socket.socket()) - listener.bind(('', 0)) - listener.listen(50) + listener = bufsized(eventlet.listen(('', 0))) def server(): # accept the connection in another greenlet sock, addr = listener.accept() - + sock = bufsized(sock) eventlet.sleep(.5) gt = eventlet.spawn(server) addr = listener.getsockname() - client = greenio.GreenSocket(socket.socket()) - client.settimeout(0.1) - + client = bufsized(greenio.GreenSocket(socket.socket())) client.connect(addr) - try: - msg = "A"*8192*1024 + client.settimeout(0.00001) + msg = "A"*(100000) # large enough number to overwhelm most buffers total_sent = 0 - # want to exceed the size of the OS buffer so it'll block + # want to exceed the size of the OS buffer so it'll block in a + # single send for x in range(10): total_sent += client.send(msg) self.fail("socket.timeout not raised") @@ -473,6 +470,7 @@ class TestGreenIo(LimitedTestCase): gt.wait() + class TestGreenIoLong(LimitedTestCase): TEST_TIMEOUT=10 # the test here might take a while depending on the OS @skip_with_pyevent