def testCreateByClass(self): if pmi.isController: obj = pmi.create(MockClass) else: # on the workers, don't use an argument to make sure # that it is not used obj = pmi.create() # test whether the class has been initialized correctly # (on all workers) self.assert_(isinstance(obj, MockClass)) # delete object del (obj) pmi.sync() self.assert_(MockClass.delCalled)
def testUserSuppliedInit(self): if pmi.isController: class MockProxy(object): __metaclass__ = pmi.Proxy pmiproxydefs = dict(cls="MockProxyLocal") def __init__(self, arg): self.arg = arg self.pmiinit(arg + 10) obj = MockProxy(42) pmiobj = obj.pmiobject self.assert_(hasattr(obj, "arg")) self.assertEqual(obj.arg, 42) self.assert_(isinstance(pmiobj, pmi.MockProxyLocal)) self.assertEqual(pmiobj.arg, 52) del (pmiobj) del (obj) pmi.sync() else: pmiobj = pmi.create() self.assert_(isinstance(pmiobj, pmi.MockProxyLocal)) self.assertEqual(pmiobj.arg, 52) del (pmiobj) pmi.sync()
def setUp(self): global mockFuncArg mockFuncArg = None if pmi.isController: self.obj = MockProxy() self.pmiobj = self.obj.pmiobject else: self.pmiobj = pmi.create()
def testCallInherited(self): if pmi.isController: obj = MockProxyDerived() pmiobj = obj.pmiobject obj.g(42) else: pmiobj = pmi.create() pmi.call() self.assertEqual(pmiobj.gArg, 42)
def testCreate(self): if pmi.isController: obj = MockProxyDerived() pmiobj = obj.pmiobject self.assert_(hasattr(obj, "f")) self.assert_(hasattr(obj, "g")) self.assert_(isinstance(pmiobj, pmi.MockProxyLocalDerived)) else: pmiobj = pmi.create() self.assert_(isinstance(pmiobj, pmi.MockProxyLocalDerived))
def testCreateByString(self): obj = pmi.create("MockClass2") self.assertEqual(obj.__class__.__name__, "MockClass2") # delete object del (obj) pmi.sync() # Test that MockClass2 has not been pulled into the scripts namespace self.assertFalse("MockClass2" in globals())
def testCallMethod(self): # call via instance obj = pmi.create(MockClass) self.assertEqual(pmi.call(obj.f), 42) self.assert_(obj.fCalled) # call via class obj2 = pmi.create(MockClass) self.assertFalse(obj2.fCalled) self.assertEqual(pmi.call(MockClass.f, obj2), 42) self.assert_(obj2.fCalled) # call via string obj3 = pmi.create("MockClass2") self.assertEqual(pmi.call("MockClass2.f", obj3), 52) # call via instance and method name obj4 = pmi.create(MockClass) self.assertEqual(pmi.call(obj4, "f"), 42) self.assert_(obj4.fCalled)
def testCallOverridden(self): if pmi.isController: obj = MockProxyDerived() pmiobj = obj.pmiobject obj.f(52) else: pmiobj = pmi.create() pmi.call() self.assert_(hasattr(pmiobj, "fDerivedCalled")) self.assert_(hasattr(pmiobj, "fCalled")) self.assertEqual(pmiobj.arg, 42) self.assertEqual(pmiobj.arg2, 52)
def testCreateandDelete(self): self.assert_(not pmi.MockProxyLocal.delCalled) if pmi.isController: obj = MockProxy() self.assert_(hasattr(obj, "pmiobject")) self.assert_(isinstance(obj.pmiobject, pmi.MockProxyLocal)) self.assert_(hasattr(obj, "pmiinit")) del (obj) else: pmiobj = pmi.create() self.assert_(isinstance(pmiobj, pmi.MockProxyLocal)) del (pmiobj) pmi.sync() self.assert_(pmi.MockProxyLocal.delCalled)
def testPMIClassArgument(self): global mockFuncArg, mockFuncArgs obj = pmi.create(MockClass) self.assert_(isinstance(obj, MockClass)) # pass the PMI class as argument and its id pmi.call(mockFunc, obj, id(obj)) # on all workers, obj should now be in the object self.assertEqual(mockFuncArg, obj) # but it should not have the same id on all workers! if pmi.isController: self.assertEqual(mockFuncArgs[0], id(obj)) else: self.assertNotEqual(mockFuncArgs[0], id(obj))
def testCallRedefined(self): if pmi.isController: class MockProxyDerived(MockProxyAbstractBase): __metaclass__ = pmi.Proxy pmiproxydefs = dict(cls="MockProxyLocalDerived", localcall=["f"]) obj = MockProxyDerived() pmiobj = obj.pmiobject obj.f(52) self.assert_(hasattr(pmiobj, "fDerivedCalled")) self.assert_(hasattr(pmiobj, "fCalled")) self.assertEqual(pmiobj.arg, 42) self.assertEqual(pmiobj.arg2, 52) else: pmiobj = pmi.create() self.assertFalse(hasattr(pmiobj, "fDerivedCalled")) self.assertFalse(hasattr(pmiobj, "fCalled"))
def testUserSuppliedFunction(self): if pmi.isController: class MockProxy(object): __metaclass__ = pmi.Proxy pmiproxydefs = dict(cls="MockProxyLocal") def f4(self): self.pmiobject.called = "f4" return 72 obj = MockProxy() pmiobj = obj.pmiobject self.assertEqual(obj.f4(), 72) pmi.sync() self.assertEqual(pmiobj.called, "f4") del (obj) pmi.sync() else: pmiobj = pmi.create() pmi.sync() self.assertFalse(hasattr(pmiobj, "called")) pmi.sync()
def __init__(self, name): self.pmiobj = pmi.create('HelloLocal', name)