##// END OF EJS Templates
disallow no-prefix `ipython foo=bar` argument style....
disallow no-prefix `ipython foo=bar` argument style. This style is in rc1, but will be removed in rc2. Since they don't match any flag pattern, rc1-style arguments will be interpreted by IPython as files to be run. So `ipython gui=foo -i` will exec gui=foo, and pass '-i' to gui=foo. Presumably this file won't exist, so there will be an error: Error in executing file in user namespace: gui=foo Assignments *must* have two leading '-', as in: ipython --foo=bar all flags (non-assignments) can be specified with one or two leading '-', as in: ipython -i --pylab -pdb --pprint script.py or ipython --i -pylab --pdb -pprint script.py but help only reports two-leading, as single-leading options will likely be removed on moving to argparse, where they will be replaced by single-letter aliases. The common remaining invalid option will be: ipython -foo=bar and a suggestion for 'did you mean --foo=bar'? will be presented in these cases.

File last commit:

r4197:368e365a
r4197:368e365a
Show More
__init__.py
111 lines | 3.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
improve process cleanup on Windows...
r3778 from subprocess import Popen
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
improve process cleanup on Windows...
r3778 from IPython.parallel.apps.launcher import (LocalProcessLauncher,
ipengine_cmd_argv,
ipcontroller_cmd_argv,
SIGKILL)
MinRK
added preliminary tests for zmq.parallel
r3595
MinRK
improve process cleanup on Windows...
r3778 # globals
launchers = []
blackhole = open(os.devnull, 'w')
# Launcher class
class TestProcessLauncher(LocalProcessLauncher):
"""subclass LocalProcessLauncher, to prevent extra sockets and threads being created on Windows"""
def start(self):
if self.state == 'before':
self.process = Popen(self.args,
stdout=blackhole, stderr=blackhole,
env=os.environ,
cwd=self.work_dir
)
self.notify_start(self.process.pid)
self.poll = self.process.poll
else:
s = 'The process was already started and has state: %r' % self.state
raise ProcessStateError(s)
MinRK
some initial tests for newparallel
r3637
# nose setup/teardown
MinRK
added preliminary tests for zmq.parallel
r3595
def setup():
MinRK
don't reuse connection files in parallel tests
r4116 cluster_dir = os.path.join(get_ipython_dir(), 'profile_iptest')
engine_json = os.path.join(cluster_dir, 'security', 'ipcontroller-engine.json')
client_json = os.path.join(cluster_dir, 'security', 'ipcontroller-client.json')
for json in (engine_json, client_json):
if os.path.exists(json):
os.remove(json)
MinRK
improve process cleanup on Windows...
r3778 cp = TestProcessLauncher()
cp.cmd_and_args = ipcontroller_cmd_argv + \
MinRK
disallow no-prefix `ipython foo=bar` argument style....
r4197 ['--profile=iptest', '--log_level=50']
MinRK
improve process cleanup on Windows...
r3778 cp.start()
launchers.append(cp)
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
improve process cleanup on Windows...
r3778 ep = TestProcessLauncher()
MinRK
disallow no-prefix `ipython foo=bar` argument style....
r4197 ep.cmd_and_args = ipengine_cmd_argv + ['--profile=%s'%profile, '--log_level=50']
MinRK
improve process cleanup on Windows...
r3778 ep.start()
launchers.append(ep)
MinRK
update API after sagedays29...
r3664 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)
MinRK
improve process cleanup on Windows...
r3778 while launchers:
p = launchers.pop()
MinRK
added preliminary tests for zmq.parallel
r3595 if p.poll() is None:
try:
MinRK
improve process cleanup on Windows...
r3778 p.stop()
MinRK
added preliminary tests for zmq.parallel
r3595 except Exception, e:
print e
pass
if p.poll() is None:
time.sleep(.25)
if p.poll() is None:
try:
MinRK
improve process cleanup on Windows...
r3778 print 'cleaning up test process...'
p.signal(SIGKILL)
MinRK
added preliminary tests for zmq.parallel
r3595 except:
MinRK
reflect revised apply_bound pattern
r3655 print "couldn't shutdown process: ", p
MinRK
improve process cleanup on Windows...
r3778 blackhole.close()
MinRK
added preliminary tests for zmq.parallel
r3595