diff --git a/tests/thread_test.py b/tests/thread_test.py new file mode 100644 index 0000000..f2ab8bc --- /dev/null +++ b/tests/thread_test.py @@ -0,0 +1,39 @@ +from eventlet.green import thread +from eventlet import greenthread +from eventlet import event +import eventlet + +from tests import LimitedTestCase + +class Locals(LimitedTestCase): + def passthru(self, *args, **kw): + self.results.append((args, kw)) + return args, kw + + def setUp(self): + self.results = [] + super(Locals, self).setUp() + + def tearDown(self): + self.results = [] + super(Locals, self).tearDown() + + def test_simple(self): + tls = thread._local() + g_ids = [] + evt = event.Event() + def setter(tls, v): + g_id = id(greenthread.getcurrent()) + g_ids.append(g_id) + tls.value = v + evt.wait() + thread.start_new_thread(setter, args=(tls, 1)) + thread.start_new_thread(setter, args=(tls, 2)) + eventlet.sleep() + objs = object.__getattribute__(tls, "__objs") + self.failUnlessEqual(sorted(g_ids), sorted(objs.keys())) + self.failUnlessEqual(objs[g_ids[0]]['value'], 1) + self.failUnlessEqual(objs[g_ids[1]]['value'], 2) + self.failUnlessRaises(AttributeError, lambda: tls.value) + evt.send("done") + eventlet.sleep()