##// END OF EJS Templates
Merge pull request #8296 from minrk/rm-kernel...
Merge pull request #8296 from minrk/rm-kernel remove ipython_kernel

File last commit:

r21070:1fdd9cb1
r21224:f9254a22 merge
Show More
test_dependency.py
136 lines | 4.0 KiB | text/x-python | PythonLexer
MinRK
update recently changed modules with Authors in docstring
r4018 """Tests for dependency.py
Authors:
* Min RK
"""
MinRK
update API after sagedays29...
r3664
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2011 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
# import
import os
Min RK
update pickleutil imports
r21070 from ipython_kernel.pickleutil import can, uncan
MinRK
update API after sagedays29...
r3664
Min RK
s/IPython.parallel/ipython_parallel/
r20860 import ipython_parallel as pmod
from ipython_parallel.util import interactive
MinRK
update API after sagedays29...
r3664
Min RK
s/IPython.parallel/ipython_parallel/
r20860 from ipython_parallel.tests import add_engines
MinRK
update API after sagedays29...
r3664 from .clienttest import ClusterTestCase
def setup():
MinRK
expedite IPython.parallel tests...
r6162 add_engines(1, total=True)
MinRK
update API after sagedays29...
r3664
MinRK
organize IPython.parallel into subpackages
r3673 @pmod.require('time')
MinRK
update API after sagedays29...
r3664 def wait(n):
time.sleep(n)
return n
MinRK
test new @require behavior
r9966 @pmod.interactive
def func(x):
return x*x
Thomas Kluyver
Fix parallel test suite
r13383 mixed = list(map(str, range(10)))
completed = list(map(str, range(0,10,2)))
failed = list(map(str, range(1,10,2)))
MinRK
update API after sagedays29...
r3664
class DependencyTest(ClusterTestCase):
def setUp(self):
ClusterTestCase.setUp(self)
self.user_ns = {'__builtins__' : __builtins__}
self.view = self.client.load_balanced_view()
self.dview = self.client[-1]
self.succeeded = set(map(str, range(0,25,2)))
self.failed = set(map(str, range(1,25,2)))
def assertMet(self, dep):
self.assertTrue(dep.check(self.succeeded, self.failed), "Dependency should be met")
def assertUnmet(self, dep):
self.assertFalse(dep.check(self.succeeded, self.failed), "Dependency should not be met")
def assertUnreachable(self, dep):
self.assertTrue(dep.unreachable(self.succeeded, self.failed), "Dependency should be unreachable")
def assertReachable(self, dep):
self.assertFalse(dep.unreachable(self.succeeded, self.failed), "Dependency should be reachable")
def cancan(self, f):
"""decorator to pass through canning into self.user_ns"""
return uncan(can(f), self.user_ns)
def test_require_imports(self):
"""test that @require imports names"""
@self.cancan
Thomas Kluyver
Fix parallel test suite
r13383 @pmod.require('base64')
MinRK
update API after sagedays29...
r3664 @interactive
Thomas Kluyver
Fix parallel test suite
r13383 def encode(arg):
return base64.b64encode(arg)
MinRK
update API after sagedays29...
r3664 # must pass through canning to properly connect namespaces
Thomas Kluyver
Fix parallel test suite
r13383 self.assertEqual(encode(b'foo'), b'Zm9v')
MinRK
update API after sagedays29...
r3664
def test_success_only(self):
MinRK
organize IPython.parallel into subpackages
r3673 dep = pmod.Dependency(mixed, success=True, failure=False)
MinRK
update API after sagedays29...
r3664 self.assertUnmet(dep)
self.assertUnreachable(dep)
dep.all=False
self.assertMet(dep)
self.assertReachable(dep)
MinRK
organize IPython.parallel into subpackages
r3673 dep = pmod.Dependency(completed, success=True, failure=False)
MinRK
update API after sagedays29...
r3664 self.assertMet(dep)
self.assertReachable(dep)
dep.all=False
self.assertMet(dep)
self.assertReachable(dep)
def test_failure_only(self):
MinRK
organize IPython.parallel into subpackages
r3673 dep = pmod.Dependency(mixed, success=False, failure=True)
MinRK
update API after sagedays29...
r3664 self.assertUnmet(dep)
self.assertUnreachable(dep)
dep.all=False
self.assertMet(dep)
self.assertReachable(dep)
MinRK
organize IPython.parallel into subpackages
r3673 dep = pmod.Dependency(completed, success=False, failure=True)
MinRK
update API after sagedays29...
r3664 self.assertUnmet(dep)
self.assertUnreachable(dep)
dep.all=False
self.assertUnmet(dep)
self.assertUnreachable(dep)
MinRK
test new @require behavior
r9966
def test_require_function(self):
@pmod.interactive
def bar(a):
return func(a)
@pmod.require(func)
@pmod.interactive
def bar2(a):
return func(a)
self.client[:].clear()
self.assertRaisesRemote(NameError, self.view.apply_sync, bar, 5)
ar = self.view.apply_async(bar2, 5)
self.assertEqual(ar.get(5), func(5))
def test_require_object(self):
@pmod.require(foo=func)
@pmod.interactive
def bar(a):
return foo(a)
ar = self.view.apply_async(bar, 5)
self.assertEqual(ar.get(5), func(5))