Commit 29643b09 authored by Antoine Pitrou's avatar Antoine Pitrou

Recorded merge of revisions 83678 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r83678 | antoine.pitrou | 2010-08-03 20:32:26 +0200 (mar., 03 août 2010) | 4 lines

  In test_threading_local, test both the default _thread._local implementation
  and the pure Python implementation in Lib/_threading_local.py
........
parent 732cc9be
import unittest import unittest
from doctest import DocTestSuite from doctest import DocTestSuite
from test import support from test import support
import threading
import weakref import weakref
import gc import gc
# Modules under test
_thread = support.import_module('_thread')
threading = support.import_module('threading')
import _threading_local
class Weak(object): class Weak(object):
pass pass
...@@ -13,7 +18,8 @@ def target(local, weaklist): ...@@ -13,7 +18,8 @@ def target(local, weaklist):
local.weak = weak local.weak = weak
weaklist.append(weakref.ref(weak)) weaklist.append(weakref.ref(weak))
class ThreadingLocalTest(unittest.TestCase):
class BaseLocalTest:
def test_local_refs(self): def test_local_refs(self):
self._local_refs(20) self._local_refs(20)
...@@ -21,7 +27,7 @@ class ThreadingLocalTest(unittest.TestCase): ...@@ -21,7 +27,7 @@ class ThreadingLocalTest(unittest.TestCase):
self._local_refs(100) self._local_refs(100)
def _local_refs(self, n): def _local_refs(self, n):
local = threading.local() local = self._local()
weaklist = [] weaklist = []
for i in range(n): for i in range(n):
t = threading.Thread(target=target, args=(local, weaklist)) t = threading.Thread(target=target, args=(local, weaklist))
...@@ -48,7 +54,7 @@ class ThreadingLocalTest(unittest.TestCase): ...@@ -48,7 +54,7 @@ class ThreadingLocalTest(unittest.TestCase):
# is created but not correctly set on the object. # is created but not correctly set on the object.
# The first member set may be bogus. # The first member set may be bogus.
import time import time
class Local(threading.local): class Local(self._local):
def __init__(self): def __init__(self):
time.sleep(0.01) time.sleep(0.01)
local = Local() local = Local()
...@@ -69,7 +75,7 @@ class ThreadingLocalTest(unittest.TestCase): ...@@ -69,7 +75,7 @@ class ThreadingLocalTest(unittest.TestCase):
def test_derived_cycle_dealloc(self): def test_derived_cycle_dealloc(self):
# http://bugs.python.org/issue6990 # http://bugs.python.org/issue6990
class Local(threading.local): class Local(self._local):
pass pass
locals = None locals = None
passed = False passed = False
...@@ -107,10 +113,18 @@ class ThreadingLocalTest(unittest.TestCase): ...@@ -107,10 +113,18 @@ class ThreadingLocalTest(unittest.TestCase):
self.assertTrue(passed) self.assertTrue(passed)
class ThreadLocalTest(unittest.TestCase, BaseLocalTest):
_local = _thread._local
class PyThreadingLocalTest(unittest.TestCase, BaseLocalTest):
_local = _threading_local.local
def test_main(): def test_main():
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest(DocTestSuite('_threading_local')) suite.addTest(DocTestSuite('_threading_local'))
suite.addTest(unittest.makeSuite(ThreadingLocalTest)) suite.addTest(unittest.makeSuite(ThreadLocalTest))
suite.addTest(unittest.makeSuite(PyThreadingLocalTest))
try: try:
from thread import _local from thread import _local
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment