diff --git a/eventlet/tpool.py b/eventlet/tpool.py index 551cd4f..5d41fb3 100644 --- a/eventlet/tpool.py +++ b/eventlet/tpool.py @@ -257,6 +257,7 @@ def setup(): _reqq = Queue(maxsize=-1) _rspq = Queue(maxsize=-1) + assert _nthreads >= 0, "Can't specify negative number of threads" for i in range(0,_nthreads): t = threading.Thread(target=tworker, name="tpool_thread_%s" % i) t.setDaemon(True) diff --git a/tests/env_test.py b/tests/env_test.py index 2e262d9..bf5dad0 100644 --- a/tests/env_test.py +++ b/tests/env_test.py @@ -44,6 +44,27 @@ assert highwater[0] == expected, "%s != %s" % (highwater[0], expected)""" finally: del os.environ['EVENTLET_THREADPOOL_SIZE'] + def test_tpool_negative(self): + new_mod = """from eventlet import tpool +import eventlet +import time +def do(): + print "should not get here" +try: + tpool.execute(do) +except AssertionError: + print "success" +""" + os.environ['EVENTLET_THREADPOOL_SIZE'] = "-1" + try: + self.write_to_tempfile("newmod", new_mod) + output, lines = self.launch_subprocess('newmod.py') + self.assertEqual(len(lines), 2, lines) + self.assertEqual(lines[0], "success", output) + finally: + del os.environ['EVENTLET_THREADPOOL_SIZE'] + + class Hub(ProcessBase): def test_eventlet_hub(self): new_mod = """from eventlet import hubs