Skip to content

Commit 5342e6d

Browse files
committed
Add a test for running subpool_map outside of a Job. Tag as 0.1.4
1 parent 0bd5cca commit 5342e6d

3 files changed

Lines changed: 28 additions & 12 deletions

File tree

mrq/context.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from .logger import LoggerInterface
22
import gevent
3+
import gevent.pool
34
import urlparse
45
import re
56
import time

tests/tasks/general.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ class SubPool(Task):
127127

128128
def inner(self, x):
129129

130-
assert get_current_job() == self.job
130+
if self.job:
131+
assert get_current_job() == self.job
131132

132133
if x == "import-large-file":
133134
from tests.tasks.largefile import a

tests/test_subpool.py

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,43 @@
66
import pytest
77

88

9-
def test_subpool_simple(worker):
9+
@pytest.mark.parametrize(["use_worker"], [[False], [True]])
10+
def test_subpool_simple(worker, use_worker):
1011

11-
worker.start()
12+
# Check that a subpool can be used both in an outside of a Job context
13+
if use_worker:
14+
worker.start()
15+
else:
16+
from tests.tasks.general import SubPool
17+
18+
def run(params):
19+
if use_worker:
20+
return worker.send_task("tests.tasks.general.SubPool", params)
21+
else:
22+
return SubPool().run(params)
1223

1324
# Check that sequential sleeps work
1425
start_time = time.time()
15-
result = worker.send_task("tests.tasks.general.SubPool", {
26+
result = run({
1627
"pool_size": 1, "inner_params": [1, 1]
1728
})
1829
total_time = time.time() - start_time
1930

2031
assert result == [1, 1]
2132
assert total_time > 2
2233

23-
# Parallel sleeps
24-
start_time = time.time()
25-
result = worker.send_task("tests.tasks.general.SubPool", {
26-
"pool_size": 20, "inner_params": [1] * 20
27-
})
28-
total_time = time.time() - start_time
34+
# py.test doesn't use gevent so we don't get the benefits of the hub
35+
if use_worker:
36+
37+
# Parallel sleeps
38+
start_time = time.time()
39+
result = run({
40+
"pool_size": 20, "inner_params": [1] * 20
41+
})
42+
total_time = time.time() - start_time
2943

30-
assert result == [1] * 20
31-
assert total_time < 2
44+
assert result == [1] * 20
45+
assert total_time < 2
3246

3347

3448
def test_subpool_exception(worker):

0 commit comments

Comments
 (0)