##// END OF EJS Templates
move some general parallel test utilities to clienttest
MinRK -
Show More
@@ -15,6 +15,7 b' Authors:'
15 15 import sys
16 16 import tempfile
17 17 import time
18 from StringIO import StringIO
18 19
19 20 from nose import SkipTest
20 21
@@ -59,6 +60,28 b' def raiser(eclass):'
59 60 """raise an exception"""
60 61 raise eclass()
61 62
63 def generate_output():
64 """function for testing output
65
66 publishes two outputs of each type, and returns
67 a rich displayable object.
68 """
69
70 import sys
71 from IPython.core.display import display, HTML, Math
72
73 print "stdout"
74 print >> sys.stderr, "stderr"
75
76 display(HTML("<b>HTML</b>"))
77
78 print "stdout2"
79 print >> sys.stderr, "stderr2"
80
81 display(Math(r"\alpha=\beta"))
82
83 return Math("42")
84
62 85 # test decorator for skipping tests when libraries are unavailable
63 86 def skip_without(*names):
64 87 """skip a test if some names are not importable"""
@@ -73,6 +96,41 b' def skip_without(*names):'
73 96 return f(*args, **kwargs)
74 97 return skip_without_names
75 98
99 #-------------------------------------------------------------------------------
100 # Classes
101 #-------------------------------------------------------------------------------
102
103 class CapturedIO(object):
104 """Simple object for containing captured stdout/err StringIO objects"""
105
106 def __init__(self, stdout, stderr):
107 self.stdout_io = stdout
108 self.stderr_io = stderr
109
110 @property
111 def stdout(self):
112 return self.stdout_io.getvalue()
113
114 @property
115 def stderr(self):
116 return self.stderr_io.getvalue()
117
118
119 class capture_output(object):
120 """context manager for capturing stdout/err"""
121
122 def __enter__(self):
123 self.sys_stdout = sys.stdout
124 self.sys_stderr = sys.stderr
125 stdout = sys.stdout = StringIO()
126 stderr = sys.stderr = StringIO()
127 return CapturedIO(stdout, stderr)
128
129 def __exit__(self, exc_type, exc_value, traceback):
130 sys.stdout = self.sys_stdout
131 sys.stderr = self.sys_stderr
132
133
76 134 class ClusterTestCase(BaseZMQTestCase):
77 135
78 136 def add_engines(self, n=1, block=True):
@@ -117,6 +175,17 b' class ClusterTestCase(BaseZMQTestCase):'
117 175 else:
118 176 self.fail("should have raised a RemoteError")
119 177
178 def _wait_for(self, f, timeout=10):
179 """wait for a condition"""
180 tic = time.time()
181 while time.time() <= tic + timeout:
182 if f():
183 return
184 time.sleep(0.1)
185 self.client.spin()
186 if not f():
187 print "Warning: Awaited condition never arrived"
188
120 189 def setUp(self):
121 190 BaseZMQTestCase.setUp(self)
122 191 self.client = self.connect_client()
@@ -590,16 +590,6 b' class TestView(ClusterTestCase, ParametricTestCase):'
590 590
591 591
592 592 # begin execute tests
593 def _wait_for(self, f, timeout=10):
594 tic = time.time()
595 while time.time() <= tic + timeout:
596 if f():
597 return
598 time.sleep(0.1)
599 self.client.spin()
600 if not f():
601 print "Warning: Awaited condition never arrived"
602
603 593
604 594 def test_execute_reply(self):
605 595 e0 = self.client[self.client.ids[0]]
General Comments 0
You need to be logged in to leave comments. Login now