home *** CD-ROM | disk | FTP | other *** search
- from test import test_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 test_support.verbose:
- print 'task', self.name, 'will run for', delay, 'sec'
- sema.acquire()
- mutex.acquire()
- running += 1
- if test_support.verbose:
- print running, 'tasks are running'
- mutex.release()
- time.sleep(delay)
- if test_support.verbose:
- print 'task', self.name, 'done'
- mutex.acquire()
- running -= 1
- if test_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 test_support.verbose:
- print 'waiting for all tasks to complete'
- for t in self.threads:
- t.join()
- if test_support.verbose:
- print 'all tasks done'
-
- def test_main():
- test_support.run_unittest(DummyThreadingTestCase)
-
- if __name__ == '__main__':
- test_main()
-