Mercurial > pygame
annotate test/threads_test.py @ 3172:d1b367fc08bc tests-returncode
Use a return code of 1 when the tests fail.
| author | Thomas Kluyver <takowl@gmail.com> |
|---|---|
| date | Wed, 09 Jan 2013 10:13:57 +0000 |
| parents | 7cec8bcc2b75 |
| children |
| rev | line source |
|---|---|
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
1 #################################### IMPORTS ################################### |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
2 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
3 if __name__ == '__main__': |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
4 import sys |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
5 import os |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
6 pkg_dir = os.path.split(os.path.abspath(__file__))[0] |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
7 parent_dir, pkg_name = os.path.split(pkg_dir) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
8 is_pygame_pkg = (pkg_name == 'tests' and |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
9 os.path.split(parent_dir)[1] == 'pygame') |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
10 if not is_pygame_pkg: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
11 sys.path.insert(0, parent_dir) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
12 else: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
13 is_pygame_pkg = __name__.startswith('pygame.tests.') |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
14 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
15 if is_pygame_pkg: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
16 from pygame.tests.test_utils import test_not_implemented, unittest |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
17 else: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
18 from test.test_utils import test_not_implemented, unittest |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
19 from pygame.threads import FuncResult, tmap, WorkerQueue, Empty, STOP |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
20 from pygame import threads |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
21 from pygame.compat import xrange_ |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
22 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
23 import time |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
24 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
25 ################################################################################ |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
26 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
27 class WorkerQueueTypeTest(unittest.TestCase): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
28 def test_usage_with_different_functions(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
29 def f(x): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
30 return x+1 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
31 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
32 def f2(x): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
33 return x+2 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
34 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
35 wq = WorkerQueue() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
36 fr = FuncResult(f) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
37 fr2 = FuncResult(f2) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
38 wq.do(fr, 1) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
39 wq.do(fr2, 1) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
40 wq.wait() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
41 wq.stop() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
42 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
43 self.assert_(fr.result == 2) |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
44 self.assertEqual(fr2.result, 3) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
45 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
46 def test_do(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
47 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
48 # __doc__ (as of 2008-06-28) for pygame.threads.WorkerQueue.do: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
49 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
50 # puts a function on a queue for running later. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
51 # |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
52 return |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
53 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
54 def test_stop(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
55 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
56 # __doc__ (as of 2008-06-28) for pygame.threads.WorkerQueue.stop: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
57 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
58 # Stops the WorkerQueue, waits for all of the threads to finish up. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
59 # |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
60 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
61 wq = WorkerQueue() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
62 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
63 self.assert_(len(wq.pool) > 0) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
64 for t in wq.pool: self.assert_(t.isAlive()) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
65 |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
66 for i in xrange_(200): wq.do(lambda x: x+1, i) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
67 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
68 wq.stop() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
69 for t in wq.pool: self.assert_(not t.isAlive()) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
70 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
71 self.assert_(wq.queue.get() is STOP) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
72 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
73 def todo_test_threadloop(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
74 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
75 # __doc__ (as of 2008-06-28) for pygame.threads.WorkerQueue.threadloop: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
76 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
77 # Loops until all of the tasks are finished. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
78 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
79 self.fail() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
80 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
81 def test_wait(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
82 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
83 # __doc__ (as of 2008-06-28) for pygame.threads.WorkerQueue.wait: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
84 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
85 # waits until all tasks are complete. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
86 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
87 wq = WorkerQueue() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
88 |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
89 for i in xrange_(2000): wq.do(lambda x: x+1, i) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
90 wq.wait() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
91 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
92 self.assertRaises(Empty, wq.queue.get_nowait) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
93 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
94 wq.stop() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
95 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
96 class ThreadsModuleTest(unittest.TestCase): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
97 def todo_test_benchmark_workers(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
98 "tags:long_running" |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
99 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
100 # __doc__ (as of 2008-06-28) for pygame.threads.benchmark_workers: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
101 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
102 # does a little test to see if workers are at all faster. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
103 # Returns the number of workers which works best. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
104 # Takes a little bit of time to run, so you should only really call |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
105 # it once. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
106 # You can pass in benchmark data, and functions if you want. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
107 # a_bench_func - f(data) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
108 # the_data - data to work on. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
109 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
110 self.fail() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
111 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
112 def test_init(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
113 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
114 # __doc__ (as of 2008-06-28) for pygame.threads.init: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
115 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
116 # Does a little test to see if threading is worth it. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
117 # Sets up a global worker queue if it's worth it. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
118 # |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
119 # Calling init() is not required, but is generally better to do. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
120 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
121 threads.init(8) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
122 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
123 self.assert_(isinstance(threads._wq, WorkerQueue)) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
124 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
125 threads.quit() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
126 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
127 def test_quit(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
128 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
129 # __doc__ (as of 2008-06-28) for pygame.threads.quit: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
130 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
131 # cleans up everything. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
132 # |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
133 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
134 threads.init(8) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
135 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
136 threads.quit() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
137 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
138 self.assert_(threads._wq is None) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
139 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
140 def test_tmap(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
141 # __doc__ (as of 2008-06-28) for pygame.threads.tmap: |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
142 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
143 # like map, but uses a thread pool to execute. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
144 # num_workers - the number of worker threads that will be used. If pool |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
145 # is passed in, then the num_workers arg is ignored. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
146 # worker_queue - you can optionally pass in an existing WorkerQueue. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
147 # wait - True means that the results are returned when everything is finished. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
148 # False means that we return the [worker_queue, results] right away instead. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
149 # results, is returned as a list of FuncResult instances. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
150 # stop_on_error - |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
151 |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
152 func, data = lambda x:x+1, xrange_(100) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
153 |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
154 tmapped = list(tmap(func, data)) |
|
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
155 mapped = list(map(func, data)) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
156 |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
157 self.assertEqual(tmapped, mapped) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
158 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
159 def test_tmap__None_func_and_multiple_sequences(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
160 return #TODO |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
161 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
162 """ Using a None as func and multiple seqences """ |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
163 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
164 res = tmap(None, [1,2,3,4]) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
165 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
166 res2 = tmap(None, [1,2,3,4], [22, 33, 44, 55]) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
167 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
168 res3 = tmap(None, [1,2,3,4], [22, 33, 44, 55, 66]) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
169 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
170 res4 = tmap(None, [1,2,3,4,5], [22, 33, 44, 55]) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
171 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
172 self.assertEqual([1, 2, 3, 4], res) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
173 self.assertEqual([(1, 22), (2, 33), (3, 44), (4, 55)], res2) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
174 self.assertEqual([(1, 22), (2, 33), (3, 44), (4, 55), (None, 66)], res3) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
175 self.assertEqual([(1, 22), (2, 33), (3, 44), (4, 55), (5,None)], res4) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
176 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
177 def test_tmap__wait(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
178 r = range(1000) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
179 wq, results = tmap(lambda x:x, r, num_workers = 5, wait=False) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
180 wq.wait() |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
181 r2 = map(lambda x:x.result, results) |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
182 self.assertEqual(list(r), list(r2)) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
183 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
184 def test_FuncResult(self): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
185 # as of 2008-06-28 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
186 # FuncResult(f, callback = None, errback = None) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
187 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
188 # Used for wrapping up a function call so that the results are stored |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
189 # inside the instances result attribute. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
190 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
191 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
192 # f - is the function we that we call |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
193 # callback(result) - this is called when the function(f) returns |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
194 # errback(exception) - this is called when the function(f) raises |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
195 # an exception. |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
196 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
197 # Results are stored in result attribute |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
198 fr = FuncResult(lambda x:x+1) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
199 fr(2) |
|
3151
7cec8bcc2b75
Make pygame.threads Python 3.x compatible, as per issue #146
Lenard Lindstrom <len-l@telus.net>
parents:
2078
diff
changeset
|
200 self.assertEqual(fr.result, 3) |
|
2078
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
201 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
202 # Exceptions are store in exception attribute |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
203 self.assert_(fr.exception is None, "when no exception raised") |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
204 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
205 exception = ValueError('rast') |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
206 def x(sdf): |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
207 raise exception |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
208 fr = FuncResult(x) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
209 fr(None) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
210 self.assert_(fr.exception is exception) |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
211 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
212 ################################################################################ |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
213 |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
214 if __name__ == '__main__': |
|
2d7ce556083b
set svn file properties so svn branch and merge work as intended
Lenard Lindstrom <len-l@telus.net>
parents:
1418
diff
changeset
|
215 unittest.main() |
