diff options
author | Antoine Pitrou <pitrou@free.fr> | 2017-09-18 22:04:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-18 22:04:20 +0200 |
commit | b43c4caf81b10e5c7ebaeb3a712c6db584f60bbd (patch) | |
tree | dd02bc320029d436470d906bde52e8357e191217 /Lib/test/test_dummy_threading.py | |
parent | a8e7d903d7c4dd3a64412016e9f44f0e75f1fb3f (diff) | |
download | cpython-git-b43c4caf81b10e5c7ebaeb3a712c6db584f60bbd.tar.gz |
Restore dummy_threading and _dummy_thread, but deprecate them (bpo-31370) (#3648)
Diffstat (limited to 'Lib/test/test_dummy_threading.py')
-rw-r--r-- | Lib/test/test_dummy_threading.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Lib/test/test_dummy_threading.py b/Lib/test/test_dummy_threading.py new file mode 100644 index 0000000000..a0c2972a60 --- /dev/null +++ b/Lib/test/test_dummy_threading.py @@ -0,0 +1,60 @@ +from test import support +import unittest +import dummy_threading as _threading +import time + +class DummyThreadingTestCase(unittest.TestCase): + + class TestThread(_threading.Thread): + + def run(self): + global running + global sema + global mutex + # Uncomment if testing another module, such as the real 'threading' + # module. + #delay = random.random() * 2 + delay = 0 + if support.verbose: + print('task', self.name, 'will run for', delay, 'sec') + sema.acquire() + mutex.acquire() + running += 1 + if support.verbose: + print(running, 'tasks are running') + mutex.release() + time.sleep(delay) + if support.verbose: + print('task', self.name, 'done') + mutex.acquire() + running -= 1 + if support.verbose: + print(self.name, 'is finished.', running, 'tasks are running') + mutex.release() + sema.release() + + def setUp(self): + self.numtasks = 10 + global sema + sema = _threading.BoundedSemaphore(value=3) + global mutex + mutex = _threading.RLock() + global running + running = 0 + self.threads = [] + + def test_tasks(self): + for i in range(self.numtasks): + t = self.TestThread(name="<thread %d>"%i) + self.threads.append(t) + t.start() + + if support.verbose: + print('waiting for all tasks to complete') + for t in self.threads: + t.join() + if support.verbose: + print('all tasks done') + +if __name__ == '__main__': + unittest.main() |