##// END OF EJS Templates
move check for any engines into _build_targets...
move check for any engines into _build_targets This prevents load-balancing apply submissions from raising NoEnginesRegistered

File last commit:

r3680:c7dc17a6
r3777:c005f927
Show More
__init__.py
80 lines | 2.7 KiB | text/x-python | PythonLexer
MinRK
some initial tests for newparallel
r3637 """toplevel setup/teardown for parallel tests."""
MinRK
update API after sagedays29...
r3664 #-------------------------------------------------------------------------------
# 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
#-------------------------------------------------------------------------------
MinRK
better, more forceful wait for controller to start
r3678 import os
MinRK
add message tracking to client, add/improve tests
r3654 import tempfile
MinRK
added preliminary tests for zmq.parallel
r3595 import time
MinRK
add message tracking to client, add/improve tests
r3654 from subprocess import Popen, PIPE, STDOUT
MinRK
added preliminary tests for zmq.parallel
r3595
MinRK
better, more forceful wait for controller to start
r3678 from IPython.utils.path import get_ipython_dir
MinRK
organize IPython.parallel into subpackages
r3673 from IPython.parallel import Client
MinRK
added preliminary tests for zmq.parallel
r3595
MinRK
some initial tests for newparallel
r3637 processes = []
MinRK
add message tracking to client, add/improve tests
r3654 blackhole = tempfile.TemporaryFile()
MinRK
some initial tests for newparallel
r3637
# nose setup/teardown
MinRK
added preliminary tests for zmq.parallel
r3595
def setup():
MinRK
better handle controller/engines never starting in tests
r3680 cp = Popen('ipcontroller --profile iptest -r --log-level 10 --log-to-file --usethreads'.split(), stdout=blackhole, stderr=STDOUT)
processes.append(cp)
MinRK
better, more forceful wait for controller to start
r3678 engine_json = os.path.join(get_ipython_dir(), 'cluster_iptest', 'security', 'ipcontroller-engine.json')
client_json = os.path.join(get_ipython_dir(), 'cluster_iptest', 'security', 'ipcontroller-client.json')
MinRK
better handle controller/engines never starting in tests
r3680 tic = time.time()
while not os.path.exists(engine_json) or not os.path.exists(client_json):
if cp.poll() is not None:
print cp.poll()
raise RuntimeError("The test controller failed to start.")
elif time.time()-tic > 10:
raise RuntimeError("Timeout waiting for the test controller to start.")
MinRK
better, more forceful wait for controller to start
r3678 time.sleep(0.1)
MinRK
update API after sagedays29...
r3664 add_engines(1)
MinRK
added preliminary tests for zmq.parallel
r3595
MinRK
update API after sagedays29...
r3664 def add_engines(n=1, profile='iptest'):
MinRK
organize IPython.parallel into subpackages
r3673 rc = Client(profile=profile)
MinRK
update API after sagedays29...
r3664 base = len(rc)
eps = []
for i in range(n):
MinRK
rebase IPython.parallel after removal of IPython.kernel...
r3672 ep = Popen(['ipengine']+ ['--profile', profile, '--log-level', '10', '--log-to-file'], stdout=blackhole, stderr=STDOUT)
MinRK
update API after sagedays29...
r3664 # ep.start()
processes.append(ep)
eps.append(ep)
MinRK
better handle controller/engines never starting in tests
r3680 tic = time.time()
MinRK
update API after sagedays29...
r3664 while len(rc) < base+n:
MinRK
better handle controller/engines never starting in tests
r3680 if any([ ep.poll() is not None for ep in eps ]):
raise RuntimeError("A test engine failed to start.")
elif time.time()-tic > 10:
raise RuntimeError("Timeout waiting for engines to connect.")
MinRK
update API after sagedays29...
r3664 time.sleep(.1)
rc.spin()
rc.close()
return eps
MinRK
added preliminary tests for zmq.parallel
r3595
def teardown():
time.sleep(1)
while processes:
p = processes.pop()
if p.poll() is None:
try:
p.terminate()
except Exception, e:
print e
pass
if p.poll() is None:
time.sleep(.25)
if p.poll() is None:
try:
print 'killing'
p.kill()
except:
MinRK
reflect revised apply_bound pattern
r3655 print "couldn't shutdown process: ", p
MinRK
added preliminary tests for zmq.parallel
r3595