summaryrefslogtreecommitdiff
path: root/test/git/async/test_pool.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-06-07 17:16:48 +0200
committerSebastian Thiel <byronimo@gmail.com>2010-06-07 17:16:48 +0200
commitedd9e23c766cfd51b3a6f6eee5aac0b791ef2fd0 (patch)
tree5b1972319baf4c2b3d25c57ec3c7e5f6b2c3d903 /test/git/async/test_pool.py
parent8c3c271b0d6b5f56b86e3f177caf3e916b509b52 (diff)
downloadgitpython-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.py20
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)