diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-06-07 17:16:48 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-06-07 17:16:48 +0200 |
commit | edd9e23c766cfd51b3a6f6eee5aac0b791ef2fd0 (patch) | |
tree | 5b1972319baf4c2b3d25c57ec3c7e5f6b2c3d903 /test/git/async/test_pool.py | |
parent | 8c3c271b0d6b5f56b86e3f177caf3e916b509b52 (diff) | |
download | gitpython-edd9e23c766cfd51b3a6f6eee5aac0b791ef2fd0.tar.gz |
added high-speed locking facilities, allowing our Queue to be faster, at least in tests, and with multiple threads. There is still an sync bug in regard to closed channels to be fixed, as the Task.set_done handling is incorrecft
Diffstat (limited to 'test/git/async/test_pool.py')
-rw-r--r-- | test/git/async/test_pool.py | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/test/git/async/test_pool.py b/test/git/async/test_pool.py index df3eaf11..791f89d4 100644 --- a/test/git/async/test_pool.py +++ b/test/git/async/test_pool.py @@ -2,6 +2,7 @@ from test.testlib import * from git.async.pool import * from git.async.task import * +from git.async.thread import terminate_threads from git.async.util import cpu_count import threading import time @@ -46,7 +47,7 @@ class TestThreadPool(TestBase): # add a simple task # it iterates n items - ni = 1000 + ni = 500 assert ni % 2 == 0, "ni needs to be dividable by 2" assert ni % 4 == 0, "ni needs to be dividable by 4" @@ -106,8 +107,9 @@ class TestThreadPool(TestBase): assert len(rc.read(1)) == 1 # processes nothing # rest - it has ni/2 - 2 on the queue, and pulls ni-2 # It wants too much, so the task realizes its done. The task - # doesn't care about the items in its output channel - assert len(rc.read(ni-2)) == ni - 2 + # doesn't care about the items in its output channel + items = rc.read(ni-2) + assert len(items) == ni - 2 assert p.num_tasks() == null_tasks task._assert(2, ni) # two chunks, 20 calls ( all items ) @@ -125,7 +127,8 @@ class TestThreadPool(TestBase): assert len(rc.read(ni / 2 + 2)) == ni / 2 + 2 # have n / 4 - 2 items on queue, want n / 4 in first chunk, cause 1 processing # ( 4 in total ). Still want n / 4 - 2 in second chunk, causing another processing - assert len(rc.read(ni / 2 - 2)) == ni / 2 - 2 + items = rc.read(ni / 2 - 2) + assert len(items) == ni / 2 - 2 task._assert( 5, ni) assert p.num_tasks() == null_tasks # depleted @@ -158,9 +161,12 @@ class TestThreadPool(TestBase): task.min_count = ni / 4 rc = p.add_task(task) for i in range(ni): - assert rc.read(1)[0] == i + if async: + assert len(rc.read(1)) == 1 + else: + assert rc.read(1)[0] == i # END for each item - task._assert(ni / task.min_count, ni) + task._assert(ni / task.min_count + 1, ni) del(rc) assert p.num_tasks() == null_tasks @@ -181,6 +187,7 @@ class TestThreadPool(TestBase): # t1 -> x -> t3 pass + @terminate_threads def test_base(self): p = ThreadPool() @@ -239,7 +246,6 @@ class TestThreadPool(TestBase): p.set_size(2) self._assert_single_task(p, True) - # DEPENDENT TASK ASYNC MODE ########################### self._assert_async_dependent_tasks(p) |