1
"""Tests for dependency.py
8
__docformat__ = "restructuredtext en"
10
#-------------------------------------------------------------------------------
11
# Copyright (C) 2011 The IPython Development Team
13
# Distributed under the terms of the BSD License. The full license is in
14
# the file COPYING, distributed as part of this software.
15
#-------------------------------------------------------------------------------
17
#-------------------------------------------------------------------------------
19
#-------------------------------------------------------------------------------
24
from IPython.utils.pickleutil import can, uncan
26
import IPython.parallel as pmod
27
from IPython.parallel.util import interactive
29
from IPython.parallel.tests import add_engines
30
from .clienttest import ClusterTestCase
40
mixed = map(str, range(10))
41
completed = map(str, range(0,10,2))
42
failed = map(str, range(1,10,2))
44
class DependencyTest(ClusterTestCase):
47
ClusterTestCase.setUp(self)
48
self.user_ns = {'__builtins__' : __builtins__}
49
self.view = self.client.load_balanced_view()
50
self.dview = self.client[-1]
51
self.succeeded = set(map(str, range(0,25,2)))
52
self.failed = set(map(str, range(1,25,2)))
54
def assertMet(self, dep):
55
self.assertTrue(dep.check(self.succeeded, self.failed), "Dependency should be met")
57
def assertUnmet(self, dep):
58
self.assertFalse(dep.check(self.succeeded, self.failed), "Dependency should not be met")
60
def assertUnreachable(self, dep):
61
self.assertTrue(dep.unreachable(self.succeeded, self.failed), "Dependency should be unreachable")
63
def assertReachable(self, dep):
64
self.assertFalse(dep.unreachable(self.succeeded, self.failed), "Dependency should be reachable")
67
"""decorator to pass through canning into self.user_ns"""
68
return uncan(can(f), self.user_ns)
70
def test_require_imports(self):
71
"""test that @require imports names"""
73
@pmod.require('urllib')
76
return urllib.urlencode(dikt)
77
# must pass through canning to properly connect namespaces
78
self.assertEquals(encode(dict(a=5)), 'a=5')
80
def test_success_only(self):
81
dep = pmod.Dependency(mixed, success=True, failure=False)
83
self.assertUnreachable(dep)
86
self.assertReachable(dep)
87
dep = pmod.Dependency(completed, success=True, failure=False)
89
self.assertReachable(dep)
92
self.assertReachable(dep)
94
def test_failure_only(self):
95
dep = pmod.Dependency(mixed, success=False, failure=True)
97
self.assertUnreachable(dep)
100
self.assertReachable(dep)
101
dep = pmod.Dependency(completed, success=False, failure=True)
102
self.assertUnmet(dep)
103
self.assertUnreachable(dep)
105
self.assertUnmet(dep)
106
self.assertUnreachable(dep)