Changeset 3051

Show
Ignore:
Timestamp:
02/13/08 14:25:51 (10 months ago)
Author:
bgranger
Message:

We now have a full set of passing tests for the properties interfaces of multiengine.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ipython1/branches/ipython1-client-r3021/TODO

    r3049 r3051  
    55Actions: 
    66 
    7 * Write test_taskxmlrpc 
    8 * Write tests for Properties in multiengine 
     7 
    98* Work on Task interfaces 
    109 
  • ipython1/branches/ipython1-client-r3021/ipython1/kernel/enginepb.py

    r3028 r3051  
    432432            return self.service.setProperties(namespace).addErrback(packageFailure) 
    433433     
    434     def remote_getProperties(self, keys): 
     434    def remote_getProperties(self, keys=None): 
    435435        """Pull a subdict of the properties for this engine by keys""" 
    436436        d = self.service.getProperties(keys) 
     
    716716        return d 
    717717     
    718     def getProperties(self, keys): 
     718    def getProperties(self, keys=None): 
    719719        d = self.callRemote('getProperties', keys) 
    720720        d.addCallback(self.checkReturnForFailure) 
  • ipython1/branches/ipython1-client-r3021/ipython1/kernel/engineservice.py

    r3037 r3051  
    163163        """set properties by key and value""" 
    164164     
    165     def getProperties(keys): 
     165    def getProperties(keys=None): 
    166166        """get a list of properties by `keys`, if no keys specified, get all""" 
    167167     
     
    742742         
    743743    @queue 
    744     def getProperties(self, keys): 
     744    def getProperties(self, keys=None): 
    745745        pass 
    746746     
  • ipython1/branches/ipython1-client-r3021/ipython1/kernel/multiengine.py

    r3043 r3051  
    184184        """set properties by key and value""" 
    185185     
    186     def getProperties(keys, targets='all'): 
     186    def getProperties(keys=None, targets='all'): 
    187187        """get a list of properties by `keys`, if no keys specified, get all""" 
    188188     
     
    406406                              logErrors=0)   
    407407     
    408     def getProperties(self, keys, targets='all'): 
     408    def getProperties(self, keys=None, targets='all'): 
    409409        log.msg("Getting properties on %r" % targets) 
    410410        try: 
     
    587587     
    588588    @twoPhase 
    589     def getProperties(self, keys, targets='all'): 
     589    def getProperties(self, keys=None, targets='all'): 
    590590        return self.multiengine.getProperties(keys, targets) 
    591591     
     
    599599     
    600600    @twoPhase 
    601     def clearProperties(self, keys, targets='all'): 
    602         return self.multiengine.clearProperties(keys, targets) 
     601    def clearProperties(self, targets='all'): 
     602        return self.multiengine.clearProperties(targets) 
    603603     
    604604    #--------------------------------------------------------------------------- 
     
    697697        return self._submitThenBlock('setProperties', properties, targets) 
    698698     
    699     def getProperties(self, keys, targets='all'): 
     699    def getProperties(self, keys=None, targets='all'): 
    700700        return self._submitThenBlock('getProperties', keys, targets) 
    701701     
  • ipython1/branches/ipython1-client-r3021/ipython1/kernel/multiengineclient.py

    r3049 r3051  
    408408        of the instance. 
    409409        """ 
    410  
     410         
    411411        # Convert to list for sorting and check class type  
    412412        prList = list(pendingResults) 
     
    505505        return self._blockFromThread(self.stpmultiengine.setProperties, properties, targets=targets, block=block) 
    506506     
    507     def getProperties(self, keys, targets=None, block=None): 
     507    def getProperties(self, keys=None, targets=None, block=None): 
    508508        targets, block = self._findTargetsAndBlock(targets, block) 
    509509        return self._blockFromThread(self.stpmultiengine.getProperties, keys, targets=targets, block=block) 
  • ipython1/branches/ipython1-client-r3021/ipython1/kernel/multienginexmlrpc.py

    r3046 r3051  
    256256    @packageResult 
    257257    def xmlrpc_getProperties(self, request, keys, targets, block): 
     258        if keys=='None': 
     259            keys=None 
    258260        return self.smultiengine.getProperties(keys, targets=targets, block=block) 
    259261     
     
    267269     
    268270    @packageResult 
    269     def xmlrpc_clearProperties(self, request, keys, targets, block): 
    270         return self.smultiengine.clearProperties(keys, targets=targets, block=block) 
     271    def xmlrpc_clearProperties(self, request, targets, block): 
     272        return self.smultiengine.clearProperties(targets=targets, block=block) 
    271273     
    272274    #--------------------------------------------------------------------------- 
     
    456458        return d 
    457459     
    458     def getProperties(self, keys, targets='all', block=True): 
     460    def getProperties(self, keys=None, targets='all', block=True): 
     461        if keys==None: 
     462            keys='None' 
    459463        d = self._proxy.callRemote('getProperties', keys, targets, block) 
    460464        d.addCallback(self.unpackage) 
     
    472476     
    473477    def clearProperties(self, targets='all', block=True): 
    474         d = self._proxy.callRemote('clearProperties', keys, targets, block) 
     478        d = self._proxy.callRemote('clearProperties', targets, block) 
    475479        d.addCallback(self.unpackage) 
    476480        return d 
  • ipython1/branches/ipython1-client-r3021/ipython1/kernel/tests/multienginetest.py

    r3041 r3051  
    356356        return d 
    357357     
    358     def testProperties(self): 
    359         """This test needs to be implemented!""" 
    360         pass 
     358    def testGetSetProperties(self): 
     359        self.addEngine(4) 
     360        dikt = dict(a=5, b='asdf', c=True, d=None, e=range(5)) 
     361        d = self.multiengine.setProperties(dikt) 
     362        d.addCallback(lambda r: self.multiengine.getProperties()) 
     363        d.addCallback(lambda r: self.assertEquals(r, 4*[dikt])) 
     364        d.addCallback(lambda r: self.multiengine.getProperties(('c',))) 
     365        d.addCallback(lambda r: self.assertEquals(r, 4*[{'c': dikt['c']}])) 
     366        d.addCallback(lambda r: self.multiengine.setProperties(dict(c=False))) 
     367        d.addCallback(lambda r: self.multiengine.getProperties(('c', 'd'))) 
     368        d.addCallback(lambda r: self.assertEquals(r, 4*[dict(c=False, d=None)])) 
     369        return d 
     370     
     371    def testClearProperties(self): 
     372        self.addEngine(4) 
     373        dikt = dict(a=5, b='asdf', c=True, d=None, e=range(5)) 
     374        d = self.multiengine.setProperties(dikt) 
     375        d.addCallback(lambda r: self.multiengine.clearProperties()) 
     376        d.addCallback(lambda r: self.multiengine.getProperties()) 
     377        d.addCallback(lambda r: self.assertEquals(r, 4*[{}])) 
     378        return d 
     379     
     380    def testDelHasProperties(self): 
     381        self.addEngine(4) 
     382        dikt = dict(a=5, b='asdf', c=True, d=None, e=range(5)) 
     383        d = self.multiengine.setProperties(dikt) 
     384        d.addCallback(lambda r: self.multiengine.delProperties(('b','e'))) 
     385        d.addCallback(lambda r: self.multiengine.hasProperties(('a','b','c','d','e'))) 
     386        d.addCallback(lambda r: self.assertEquals(r, 4*[[True, False, True, True, False]])) 
     387        return d 
    361388 
    362389 
     
    547574        d.addCallback(lambda r: self.assert_(isinstance(r[0],tuple))) 
    548575        return d 
    549      
    550     def testProperties(self): 
    551         """This test needs to be implemented!""" 
    552         pass 
    553      
     576         
    554577    def testGetIDs(self): 
    555578        self.addEngine(1) 
     
    559582        d.addCallback(lambda _: self.multiengine.getIDs()) 
    560583        d.addCallback(lambda r: self.assertEquals(r, [0,1,2,3])) 
     584        return d 
     585     
     586    def testGetSetProperties(self): 
     587        self.addEngine(4) 
     588        dikt = dict(a=5, b='asdf', c=True, d=None, e=range(5)) 
     589        d = self.multiengine.setProperties(dikt) 
     590        d.addCallback(lambda r: self.multiengine.getProperties()) 
     591        d.addCallback(lambda r: self.assertEquals(r, 4*[dikt])) 
     592        d.addCallback(lambda r: self.multiengine.getProperties(('c',))) 
     593        d.addCallback(lambda r: self.assertEquals(r, 4*[{'c': dikt['c']}])) 
     594        d.addCallback(lambda r: self.multiengine.setProperties(dict(c=False))) 
     595        d.addCallback(lambda r: self.multiengine.getProperties(('c', 'd'))) 
     596        d.addCallback(lambda r: self.assertEquals(r, 4*[dict(c=False, d=None)])) 
     597         
     598        # Non-blocking 
     599        d.addCallback(lambda r: self.multiengine.setProperties(dikt, block=False)) 
     600        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     601        d.addCallback(lambda r: self.multiengine.getProperties(block=False)) 
     602        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     603        d.addCallback(lambda r: self.assertEquals(r, 4*[dikt])) 
     604        d.addCallback(lambda r: self.multiengine.getProperties(('c',), block=False)) 
     605        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     606        d.addCallback(lambda r: self.assertEquals(r, 4*[{'c': dikt['c']}])) 
     607        d.addCallback(lambda r: self.multiengine.setProperties(dict(c=False), block=False)) 
     608        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     609        d.addCallback(lambda r: self.multiengine.getProperties(('c', 'd'), block=False)) 
     610        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     611        d.addCallback(lambda r: self.assertEquals(r, 4*[dict(c=False, d=None)])) 
     612        return d 
     613     
     614    def testClearProperties(self): 
     615        self.addEngine(4) 
     616        dikt = dict(a=5, b='asdf', c=True, d=None, e=range(5)) 
     617        d = self.multiengine.setProperties(dikt) 
     618        d.addCallback(lambda r: self.multiengine.clearProperties()) 
     619        d.addCallback(lambda r: self.multiengine.getProperties()) 
     620        d.addCallback(lambda r: self.assertEquals(r, 4*[{}])) 
     621         
     622        # Non-blocking 
     623        d.addCallback(lambda r: self.multiengine.setProperties(dikt, block=False)) 
     624        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     625        d.addCallback(lambda r: self.multiengine.clearProperties(block=False)) 
     626        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     627        d.addCallback(lambda r: self.multiengine.getProperties(block=False)) 
     628        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     629        d.addCallback(lambda r: self.assertEquals(r, 4*[{}])) 
     630        return d 
     631     
     632    def testDelHasProperties(self): 
     633        self.addEngine(4) 
     634        dikt = dict(a=5, b='asdf', c=True, d=None, e=range(5)) 
     635        d = self.multiengine.setProperties(dikt) 
     636        d.addCallback(lambda r: self.multiengine.delProperties(('b','e'))) 
     637        d.addCallback(lambda r: self.multiengine.hasProperties(('a','b','c','d','e'))) 
     638        d.addCallback(lambda r: self.assertEquals(r, 4*[[True, False, True, True, False]])) 
     639 
     640        # Non-blocking 
     641        d.addCallback(lambda r: self.multiengine.setProperties(dikt, block=False)) 
     642        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     643        d.addCallback(lambda r: self.multiengine.delProperties(('b','e'), block=False)) 
     644        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     645        d.addCallback(lambda r: self.multiengine.hasProperties(('a','b','c','d','e'), block=False)) 
     646        d.addCallback(lambda did: self.multiengine.getPendingDeferred(did, True)) 
     647        d.addCallback(lambda r: self.assertEquals(r, 4*[[True, False, True, True, False]])) 
    561648        return d 
    562649