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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()