~ubuntu-branches/debian/experimental/ipython/experimental

« back to all changes in this revision

Viewing changes to IPython/parallel/tests/test_dependency.py

  • Committer: Bazaar Package Importer
  • Author(s): Julian Taylor
  • Date: 2011-05-10 16:18:45 UTC
  • mfrom: (1.2.14 upstream)
  • Revision ID: james.westby@ubuntu.com-20110510161845-0nrh795uiyp1a20r
Tags: 0.11~rc1-1
* New upstream release candidate
* change to source format 3.0 (quilt)
* run testsuite during build
* add clean target
* build-depends:
  - matplotlib, pymongo, xauth, xvfb and qt4 for tests
  - graphviz, sphinx for docs
* add dependencies and don't install embedded copy:
  - python-argparse(Closes: #555348)
  - python-configobj (Closes: #555339)
  - python-simplegeneric
  - python-decorator
  - python-pyparsing
  - pexpect
* update patches
  - disabled obsolete patches 03, 04 and 06
  - refresh default background color patch 07
  - add patch to fix testsuite
  - add patch to improve error message on missing ipython-qtconsole
* change to compat 7
* split out -parallel package
* split out -qtconsole package
* split out -doc package
* improve dependencies for each package
* add doc-base control file
* fix the ipythonX.Y startup scripts

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"""Tests for dependency.py
 
2
 
 
3
Authors:
 
4
 
 
5
* Min RK
 
6
"""
 
7
 
 
8
__docformat__ = "restructuredtext en"
 
9
 
 
10
#-------------------------------------------------------------------------------
 
11
#  Copyright (C) 2011  The IPython Development Team
 
12
#
 
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
#-------------------------------------------------------------------------------
 
16
 
 
17
#-------------------------------------------------------------------------------
 
18
# Imports
 
19
#-------------------------------------------------------------------------------
 
20
 
 
21
# import
 
22
import os
 
23
 
 
24
from IPython.utils.pickleutil import can, uncan
 
25
 
 
26
import IPython.parallel as pmod
 
27
from IPython.parallel.util import interactive
 
28
 
 
29
from IPython.parallel.tests import add_engines
 
30
from .clienttest import ClusterTestCase
 
31
 
 
32
def setup():
 
33
    add_engines(1)
 
34
 
 
35
@pmod.require('time')
 
36
def wait(n):
 
37
    time.sleep(n)
 
38
    return n
 
39
 
 
40
mixed = map(str, range(10))
 
41
completed = map(str, range(0,10,2))
 
42
failed = map(str, range(1,10,2))
 
43
 
 
44
class DependencyTest(ClusterTestCase):
 
45
    
 
46
    def setUp(self):
 
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)))
 
53
    
 
54
    def assertMet(self, dep):
 
55
        self.assertTrue(dep.check(self.succeeded, self.failed), "Dependency should be met")
 
56
        
 
57
    def assertUnmet(self, dep):
 
58
        self.assertFalse(dep.check(self.succeeded, self.failed), "Dependency should not be met")
 
59
        
 
60
    def assertUnreachable(self, dep):
 
61
        self.assertTrue(dep.unreachable(self.succeeded, self.failed), "Dependency should be unreachable")
 
62
    
 
63
    def assertReachable(self, dep):
 
64
        self.assertFalse(dep.unreachable(self.succeeded, self.failed), "Dependency should be reachable")
 
65
    
 
66
    def cancan(self, f):
 
67
        """decorator to pass through canning into self.user_ns"""
 
68
        return uncan(can(f), self.user_ns)
 
69
    
 
70
    def test_require_imports(self):
 
71
        """test that @require imports names"""
 
72
        @self.cancan
 
73
        @pmod.require('urllib')
 
74
        @interactive
 
75
        def encode(dikt):
 
76
            return urllib.urlencode(dikt)
 
77
        # must pass through canning to properly connect namespaces
 
78
        self.assertEquals(encode(dict(a=5)), 'a=5')
 
79
    
 
80
    def test_success_only(self):
 
81
        dep = pmod.Dependency(mixed, success=True, failure=False)
 
82
        self.assertUnmet(dep)
 
83
        self.assertUnreachable(dep)
 
84
        dep.all=False
 
85
        self.assertMet(dep)
 
86
        self.assertReachable(dep)
 
87
        dep = pmod.Dependency(completed, success=True, failure=False)
 
88
        self.assertMet(dep)
 
89
        self.assertReachable(dep)
 
90
        dep.all=False
 
91
        self.assertMet(dep)
 
92
        self.assertReachable(dep)
 
93
 
 
94
    def test_failure_only(self):
 
95
        dep = pmod.Dependency(mixed, success=False, failure=True)
 
96
        self.assertUnmet(dep)
 
97
        self.assertUnreachable(dep)
 
98
        dep.all=False
 
99
        self.assertMet(dep)
 
100
        self.assertReachable(dep)
 
101
        dep = pmod.Dependency(completed, success=False, failure=True)
 
102
        self.assertUnmet(dep)
 
103
        self.assertUnreachable(dep)
 
104
        dep.all=False
 
105
        self.assertUnmet(dep)
 
106
        self.assertUnreachable(dep)