##// END OF EJS Templates
Merge pull request #1155 from minrk/postexec...
Merge pull request #1155 from minrk/postexec Be less aggressive in de-registering failing post-execute functions so that normal errors don't disable them permanently. Two changes: 1. Don't unregister failing post-exec callbacks automatically. Instead, print a message regarding the failure, pointing to new `disable_failing_post_execute` trait for skipping failing callbacks. - When this flag is False (the default), failing callbacks will continue to be called. - When True, behavior is unchanged from previous, where callbacks are only allowed to fail once. 2. protect `flush_figures()` post-exec function from user error. Invalid matplotlib data may raise inside `print_figure()`. flush_figures() is a post-exec function, so user errors should not raise. Instead, call `get_ipython().showtraceback()` if called from IPython, raising as before otherwise. closes #1154

File last commit:

r4571:487466d7
r5737:2c683b72 merge
Show More
test_newserialized.py
116 lines | 3.9 KiB | text/x-python | PythonLexer
/ IPython / parallel / tests / test_newserialized.py
MinRK
update recently changed modules with Authors in docstring
r4018 """test serialization with newserialized
Authors:
* Min RK
"""
MinRK
prep newparallel for rebase...
r3539
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
don't special case for py3k+numpy...
r4571 import sys
MinRK
prep newparallel for rebase...
r3539 from unittest import TestCase
MinRK
rebase IPython.parallel after removal of IPython.kernel...
r3672 from IPython.testing.decorators import parametric
MinRK
some initial tests for newparallel
r3637 from IPython.utils import newserialized as ns
from IPython.utils.pickleutil import can, uncan, CannedObject, CannedFunction
MinRK
move IPython.zmq.parallel to IPython.parallel
r3666 from IPython.parallel.tests.clienttest import skip_without
MinRK
some initial tests for newparallel
r3637
MinRK
don't special case for py3k+numpy...
r4571 if sys.version_info[0] >= 3:
buffer = memoryview
MinRK
some initial tests for newparallel
r3637
class CanningTestCase(TestCase):
def test_canning(self):
d = dict(a=5,b=6)
cd = can(d)
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertTrue(isinstance(cd, dict))
MinRK
some initial tests for newparallel
r3637
def test_canned_function(self):
f = lambda : 7
cf = can(f)
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertTrue(isinstance(cf, CannedFunction))
MinRK
some initial tests for newparallel
r3637
@parametric
def test_can_roundtrip(cls):
objs = [
dict(),
set(),
list(),
['a',1,['a',1],u'e'],
]
return map(cls.run_roundtrip, objs)
@classmethod
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 def run_roundtrip(self, obj):
MinRK
some initial tests for newparallel
r3637 o = uncan(can(obj))
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 assert o == obj, "failed assertion: %r == %r"%(o,obj)
MinRK
some initial tests for newparallel
r3637
def test_serialized_interfaces(self):
us = {'a':10, 'b':range(10)}
s = ns.serialize(us)
uus = ns.unserialize(s)
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertTrue(isinstance(s, ns.SerializeIt))
self.assertEquals(uus, us)
MinRK
some initial tests for newparallel
r3637
def test_pickle_serialized(self):
obj = {'a':1.45345, 'b':'asdfsdf', 'c':10000L}
original = ns.UnSerialized(obj)
originalSer = ns.SerializeIt(original)
firstData = originalSer.getData()
firstTD = originalSer.getTypeDescriptor()
firstMD = originalSer.getMetadata()
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertEquals(firstTD, 'pickle')
self.assertEquals(firstMD, {})
MinRK
some initial tests for newparallel
r3637 unSerialized = ns.UnSerializeIt(originalSer)
secondObj = unSerialized.getObject()
for k, v in secondObj.iteritems():
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertEquals(obj[k], v)
MinRK
some initial tests for newparallel
r3637 secondSer = ns.SerializeIt(ns.UnSerialized(secondObj))
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertEquals(firstData, secondSer.getData())
self.assertEquals(firstTD, secondSer.getTypeDescriptor() )
self.assertEquals(firstMD, secondSer.getMetadata())
MinRK
some initial tests for newparallel
r3637
@skip_without('numpy')
def test_ndarray_serialized(self):
import numpy
a = numpy.linspace(0.0, 1.0, 1000)
unSer1 = ns.UnSerialized(a)
ser1 = ns.SerializeIt(unSer1)
td = ser1.getTypeDescriptor()
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertEquals(td, 'ndarray')
MinRK
some initial tests for newparallel
r3637 md = ser1.getMetadata()
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertEquals(md['shape'], a.shape)
self.assertEquals(md['dtype'], a.dtype.str)
MinRK
some initial tests for newparallel
r3637 buff = ser1.getData()
MinRK
don't special case for py3k+numpy...
r4571 self.assertEquals(buff, buffer(a))
MinRK
some initial tests for newparallel
r3637 s = ns.Serialized(buff, td, md)
final = ns.unserialize(s)
MinRK
don't special case for py3k+numpy...
r4571 self.assertEquals(buffer(a), buffer(final))
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertTrue((a==final).all())
self.assertEquals(a.dtype.str, final.dtype.str)
self.assertEquals(a.shape, final.shape)
MinRK
some initial tests for newparallel
r3637 # test non-copying:
a[2] = 1e9
MinRK
pyzmq-2.1.3 related testing adjustments
r3661 self.assertTrue((a==final).all())
MinRK
update API after sagedays29...
r3664
def test_uncan_function_globals(self):
"""test that uncanning a module function restores it into its module"""
from re import search
cf = can(search)
csearch = uncan(cf)
self.assertEqual(csearch.__module__, search.__module__)
self.assertNotEqual(csearch('asd', 'asdf'), None)
csearch = uncan(cf, dict(a=5))
self.assertEqual(csearch.__module__, search.__module__)
self.assertNotEqual(csearch('asd', 'asdf'), None)
MinRK
some initial tests for newparallel
r3637