示例#1
0
    def test_onGotDistribution(self):
        self.dm.broadcastLogs = Mock()
        self.dm.handleDistribution = Mock(side_effect=utils.good_side_effect('lush'))
        self.dm._errback = Mock(side_effect=utils.good_side_effect('err logged'))

        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(1)
        params = sim.Parameters(run_id='1', cmd='results')
        params_el = params.toElement()
        progress = sim.Progress(200)
        params_el.addChild(progress.toElement())
        dist = sim.Distributions()
        hist = defaultdict(int)
        hist[1] = 1
        hist[2] = 2
        dist.combine('a', hist)
        params_el.addChild(dist.toElement())
        item.addChild(params_el)

        lg = sim.Logger()
        d = self.dm.onGotDistribution(params, item, lg)

        def check(data):
            self.assertFalse(self.dm.broadcastLogs.called)
            self.assertEquals(self.dm.handleDistribution.call_count, 1)
            self.assertFalse(self.dm._errback.called)

        d.addCallback(check)
        self.sch.clock.pump([1,1,1])
        return d
示例#2
0
    def set(self, file, xdbns, element):
        """ Sets a specific xdb namespace in the XDB 'file' to element """
        try:
            element.attributes["xdbns"] = xdbns
            document = None
            try:
                document = self.__getFile(file)
            except IOError:
                pass
            if not document:
                document = Element((None, "xdb"))

            # Remove the existing node (if any)
            for child in document.elements():
                if child.getAttribute("xdbns") == xdbns:
                    document.children.remove(child)
            # Add the new one
            document.addChild(element)

            self.__writeFile(file, document.toXml())
        except:
            LogEvent(INFO,
                     msg="XDB error writing entry %s to file %s" %
                     (xdbns, file))
            raise
示例#3
0
文件: portfolio.py 项目: wyn/collab
 def toElement(self):
     el = Element((collab.COLLAB_NS, 'asset'))
     el.addElement('name', content=self.name)
     el.addElement('dp', content=str(self.dp))
     el.addElement('recovery', content=str(self.recovery))
     el.addElement('notional', content=str(self.notional))
     if self.issuer:
         el.addChild(self.issuer.toElement())
     return el
示例#4
0
文件: jabw.py 项目: zfortier/yakalope
def sendPresence(pytrans, to, fro, show=None, status=None, priority=None, ptype=None, avatarHash=None, nickname=None, payload=[], url=None):
	if ptype in ["subscribe", "subscribed", "unsubscribe", "unsubscribed"]:
		to = internJID(to).userhost()
		fro = internJID(fro).userhost()

	el = Element((None, "presence"))
	el.attributes["to"] = to
	el.attributes["from"] = fro
	if ptype:
		el.attributes["type"] = ptype
	if show:
		s = el.addElement("show")
		s.addContent(utils.xmlify(show))
	if status:
		s = el.addElement("status")
		s.addContent(utils.xmlify(status))
	if priority:
		s = el.addElement("priority")
		s.addContent(priority)
	if url:
		s = el.addElement("x")
		s.attributes["xmlns"] = globals.XOOB
		s = el.addElement("url")
		s.addContent(url)

	if not ptype:
		if avatarHash and not config.disableAvatars and not config.disableVCardAvatars:
			x = el.addElement("x")
			x.attributes["xmlns"] = globals.VCARDUPDATE
			p = x.addElement("photo")
			p.addContent(avatarHash)

		if nickname:
			x = el.addElement("x")
			x.attributes["xmlns"] = globals.VCARDUPDATE
			n = x.addElement("nickname")
			n.addContent(nickname)

		if avatarHash and not config.disableAvatars and not config.disableIQAvatars:
			x = el.addElement("x")
			x.attributes["xmlns"] = globals.XAVATAR
			h = x.addElement("hash")
			h.addContent(avatarHash)

		if nickname and ptype == "subscribe":
			n = el.addElement("nick")
			n.attributes["xmlns"] = globals.NICK
			n.addContent(nickname)

	if payload:
		for p in payload:
			el.addChild(p)

	pytrans.send(el)
示例#5
0
文件: jabw.py 项目: 2mf/pyicqt
def sendPresence(pytrans, to, fro, show=None, status=None, priority=None, ptype=None, avatarHash=None, nickname=None, payload=[], url=None):
    if ptype in ["subscribe", "subscribed", "unsubscribe", "unsubscribed"]:
        to = internJID(to).userhost()
        fro = internJID(fro).userhost()

    el = Element((None, "presence"))
    el.attributes["to"] = to
    el.attributes["from"] = fro
    if ptype:
        el.attributes["type"] = ptype
    if show:
        s = el.addElement("show")
        s.addContent(utils.xmlify(show))
    if status:
        s = el.addElement("status")
        s.addContent(utils.xmlify(status))
    if priority:
        s = el.addElement("priority")
        s.addContent(priority)
    if url:
        s = el.addElement("x")
        s.attributes["xmlns"] = globals.XOOB
        s = el.addElement("url")
        s.addContent(url)

    if not ptype:
        if avatarHash and not config.disableAvatars and not config.disableVCardAvatars:
            x = el.addElement("x")
            x.attributes["xmlns"] = globals.VCARDUPDATE
            p = x.addElement("photo")
            p.addContent(avatarHash)

        if nickname:
            x = el.addElement("x")
            x.attributes["xmlns"] = globals.VCARDUPDATE
            n = x.addElement("nickname")
            n.addContent(nickname)

        if avatarHash and not config.disableAvatars and not config.disableIQAvatars:
            x = el.addElement("x")
            x.attributes["xmlns"] = globals.XAVATAR
            h = x.addElement("hash")
            h.addContent(avatarHash)

        if nickname and ptype == "subscribe":
            n = el.addElement("nick")
            n.attributes["xmlns"] = globals.NICK
            n.addContent(nickname)

    if payload:
        for p in payload:
            el.addChild(p)

    pytrans.send(el)
示例#6
0
文件: jabber.py 项目: cbrinley/droned
 def joinChatRoom(self, room):
     presence = Element( (None,'presence') )
     presence['from'] = self.jid.userhost()
     jid = '%s@%s/%s' % (room,self.SERVICECONFIG.JABBER_CHAT_SERVICE,self.SERVICECONFIG.JABBER_CHAT_NICK)
     presence['to'] = jid
     x = Element( ('http://jabber.org/protocol/muc','x') )
     history = Element( (None,'history') )
     history['maxchars'] = '0'
     x.addChild(history)
     presence.addChild(x)
     log('sending join: %s' % presence.toXml())
     self.xmlstream.send(presence)
示例#7
0
 def _dictToPubSubItem(self, adict):
     item = Element((None, 'item'))
     item['id'] = adict['id']
     entry = Element(('http://www.w3.org/2005/Atom', 'entry'))
     for key in ['author', 'updated', 'published', 'content']:
         entry.addElement(key, content=adict[key])
     geolocation = adict.get('geolocation')
     if geolocation:
         entry.addElement('geolocation')
         entry.geolocation['lattitude'] = geolocation['lattitude']
         entry.geolocation['longitude'] = geolocation['longitude']
     item.addChild(entry)
     return item
示例#8
0
 def _dictToPubSubItem(self, adict):
     item = Element((None, 'item'))
     item['id'] = adict['id']
     entry = Element(('http://www.w3.org/2005/Atom', 'entry'))
     for key in ['author', 'updated', 'published', 'content']:
         entry.addElement(key, content=adict[key])
     geolocation = adict.get('geolocation')
     if geolocation:
         entry.addElement('geolocation')
         entry.geolocation['latitude'] = geolocation['latitude']
         entry.geolocation['longitude'] = geolocation['longitude']
     item.addChild(entry)
     return item
示例#9
0
 def joinChatRoom(self, room):
     presence = Element((None, 'presence'))
     presence['from'] = self.jid.userhost()
     jid = '%s@%s/%s' % (room, self.SERVICECONFIG.JABBER_CHAT_SERVICE,
                         self.SERVICECONFIG.JABBER_CHAT_NICK)
     presence['to'] = jid
     x = Element(('http://jabber.org/protocol/muc', 'x'))
     history = Element((None, 'history'))
     history['maxchars'] = '0'
     x.addChild(history)
     presence.addChild(x)
     log('sending join: %s' % presence.toXml())
     self.xmlstream.send(presence)
示例#10
0
 def requestAuthorization(self, to):
     request = Element((None, 'iq'))
     request['type'] = 'set'
     request['id'] = 'auth-request:%s' % to
     query = Element((None, 'query'))
     query['xmlns'] = 'jabber:iq:roster'
     item = Element((None, 'item'))
     item['jid'] = to
     item['name'] = to.split('@')[0]
     query.addChild(item)
     request.addChild(query)
     log('sending auth request: %s' % request.toXml())
     self.xmlstream.send(request)
示例#11
0
文件: main.py 项目: zfortier/yakalope
 def send(self, obj):
     if self.routewrap == 1 and type(obj) == Element:
         to = obj.getAttribute("to")
         route = Element((None, "route"))
         route.attributes["from"] = config.jid
         route.attributes["to"] = internJID(to).host
         route.addChild(obj)
         obj.attributes["xmlns"] = "jabber:client"
         component.Service.send(self, route.toXml())
     else:
         if type(obj) == Element:
             obj = obj.toXml()
         component.Service.send(self, obj)
示例#12
0
	def send(self, obj):
		if self.routewrap == 1 and type(obj) == Element:
			to = obj.getAttribute("to")
			route = Element((None,"route"))
			route.attributes["from"] = config.jid
			route.attributes["to"] = internJID(to).host
			route.addChild(obj)
			obj.attributes["xmlns"] = "jabber:client"
			component.Service.send(self,route.toXml())
		else:
			if type(obj) == Element:
				obj = obj.toXml()
			component.Service.send(self,obj)
示例#13
0
文件: jabber.py 项目: cbrinley/droned
 def requestAuthorization(self, to):
     request = Element( (None,'iq') )
     request['type'] = 'set'
     request['id'] = 'auth-request:%s' % to
     query = Element( (None,'query') )
     query['xmlns'] = 'jabber:iq:roster'
     item = Element( (None,'item') )
     item['jid'] = to
     item['name'] = to.split('@')[0]
     query.addChild(item)
     request.addChild(query)
     log('sending auth request: %s' % request.toXml())
     self.xmlstream.send(request)
示例#14
0
文件: jabw.py 项目: 2mf/pyicqt
def sendMessage(pytrans, to, fro, body=None, mtype=None, delay=None,
                xhtml=None, nickname=None, receipt=None, mID=None):
    """ Sends a Jabber message """
    LogEvent(INFO)
    el = Element((None, "message"))
    el.attributes["to"] = to
    el.attributes["from"] = fro
    if mID:
        el.attributes["id"] = mID
    else:
        el.attributes["id"] = pytrans.makeMessageID()
    if mtype:
        el.attributes["type"] = mtype

    if delay:
        x = el.addElement("x")
        x.attributes["xmlns"] = globals.XDELAY
        x.attributes["from"] = fro
        x.attributes["stamp"] = delay

    if nickname:
        n = el.addElement("nick")
        n.attributes["xmlns"] = globals.NICK
        n.addContent(nickname)

    if receipt:
        r = el.addElement("received")
        r.attributes["xmlns"] = globals.RECEIPTS
    else:  # do not send state info in message receipt
        x = el.addElement("x")
        x.attributes["xmlns"] = globals.XEVENT
        composing = x.addElement("composing")
        xx = el.addElement("active")
        xx.attributes["xmlns"] = globals.CHATSTATES

    if body:
        b = el.addElement("body")
        b.addContent(utils.xmlify(body))

    if xhtml and not config.disableXHTML:
        try:
            el.addChild(utils.parseText(xhtml))
        except:
            # Hrm, didn't add, we're not going to end the world
            # because of it.
            pass

    pytrans.send(el)
    sendArchive(pytrans, to, fro, body)
    def test_onGotStartSimulation_noPortfolio(self):
        run_id = '1'
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='info')
        params_el = item.addChild(params.toElement())
        logger = sim.Logger()

        self.cds.broadcastLogs = Mock(side_effect=utils.good_side_effect('done'))
        self.cds.broadcastResults = Mock()
        self.cds.simulatorFactory = MagicMock()
        self.cds._errback = Mock()

        gen = self.cds.onGotStartSimulation(params, item, logger)
        d = gen.next()

        def check(data):
            self.cds.broadcastLogs.assert_called_once_with(logger, params)
            self.assertFalse(self.cds.broadcastResults.called)
            self.assertFalse(self.cds.simulatorFactory.__getitem__.called)
            self.assertFalse(self.cds._errback.called)

        d.addCallback(check)
        self.assertRaises(StopIteration, gen.next)
        return d
示例#16
0
def sendMessage(pytrans,
                to,
                fro,
                body,
                mtype=None,
                delay=None,
                xhtml=None,
                nickname=None):
    """ Sends a Jabber message """
    LogEvent(INFO)
    el = Element((None, "message"))
    el.attributes["to"] = to
    el.attributes["from"] = fro
    el.attributes["id"] = pytrans.makeMessageID()
    if mtype:
        el.attributes["type"] = mtype

    if delay:
        x = el.addElement("x")
        x.attributes["xmlns"] = globals.XDELAY
        x.attributes["from"] = fro
        x.attributes["stamp"] = delay

    if nickname:
        n = el.addElement("nick")
        n.attributes["xmlns"] = globals.NICK
        n.addContent(nickname)

    b = el.addElement("body")
    b.addContent(utils.xmlify(body))
    x = el.addElement("x")
    x.attributes["xmlns"] = globals.XEVENT
    composing = x.addElement("composing")
    xx = el.addElement("active")
    xx.attributes["xmlns"] = globals.CHATSTATES

    if xhtml and not config.disableXHTML:
        try:
            el.addChild(utils.parseText(xhtml))
        except:
            # Hrm, didn't add, we're not going to end the world
            # because of it.
            pass

    pytrans.send(el)
    sendArchive(pytrans, to, fro, body)
    def test_onGotItem_info(self):
        self.cds.onGotStartSimulation = Mock()
        self.cds.onGotStoppedSimulation = Mock()
        run_id = '1'
        
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='info')
        item.addChild(params.toElement())

        d = self.cds.onGotItem(item)
        def check(data):
            self.assertTrue(data is None)
            self.assertFalse(self.cds.onGotStartSimulation.called)
            self.assertFalse(self.cds.onGotStoppedSimulation.called)

        d.addCallback(check)
        self.sch.clock.pump([1])
        return d
示例#18
0
    def test_onGotItem_results(self):
        self.dm.onGotDistribution = Mock(side_effect=utils.good_side_effect('lush'))
        self.dm.onGotStoppedSimulation = Mock()

        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(1)
        params = sim.Parameters(run_id='1', cmd='results')
        params_el = params.toElement()
        params_el.addChild(sim.Progress(200).toElement())
        params_el.addChild(sim.Distributions().toElement())
        item.addChild(params_el)
        d = self.dm.onGotItem(item)
        def check(data):
            self.assertEquals(data, 'lush')
            self.assertEquals(self.dm.onGotDistribution.call_count, 1)
            self.assertFalse(self.dm.onGotStoppedSimulation.called)

        d.addCallback(check)
        return d
    def test_onGotItem_start_alreadyGoing(self):
        self.cds.onGotStartSimulation = Mock()
        self.cds.onGotStoppedSimulation = Mock()
        run_id = '1'
        self.cds.tasks[run_id] = 'I should be a task'
        
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='start')
        item.addChild(params.toElement())

        d = self.cds.onGotItem(item)
        def check(data):
            self.assertTrue(data is None)
            self.assertFalse(self.cds.onGotStartSimulation.called)
            self.assertFalse(self.cds.onGotStoppedSimulation.called)

        d.addCallback(check)
        return d
    def test_onGotItem_stop(self):
        self.cds.onGotStartSimulation = Mock()
        self.cds.onGotStoppedSimulation = Mock(side_effect=utils.good_side_effect('done'))
        run_id = '1'
        
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='stop')
        item.addChild(params.toElement())

        d = self.cds.onGotItem(item)
        def check(data):
            self.assertEquals(data, 'done')
            self.assertEquals(self.cds.onGotStoppedSimulation.call_count, 1)
            self.assertFalse(self.cds.onGotStartSimulation.called)

        d.addCallback(check)
        self.sch.clock.pump([1])
        return d
    def test_onGotItem_stopping(self):
        cdm = CorrelatedDefaultsManager(testjid)
        cdm.broadcastStart = Mock()
        cdm.broadcastStop = Mock(side_effect=utils.good_side_effect('lush'))
        cdm.broadcastLogs = Mock()
        
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(1)
        params = simulation.Parameters(cmd='stop')
        expected = params.toElement()
        item.addChild(expected)

        out = yield cdm.onGotItem(item)

        self.assertFalse(cdm.broadcastStart.called)
        self.assertEquals(cdm.broadcastStop.call_count, 1)
        self.assertFalse(cdm.broadcastLogs.called)

        for ((a,), dic) in cdm.broadcastStop.call_args_list:
            self.assertEquals(a.toElement().toXml(), expected.toXml())
示例#22
0
文件: jabw.py 项目: zfortier/yakalope
def sendPresence(pytrans, to, fro, show=None, status=None, priority=None, ptype=None, avatarHash=None, nickname=None, payload=[]):
	# Strip the resource off any presence subscribes (as per XMPP RFC 3921 Section 5.1.6)
	# Makes eJabberd behave :)
	if ptype in ("subscribe", "subscribed", "unsubscribe", "unsubscribed"):
		to = internJID(to).userhost()
		fro = internJID(fro).userhost()
	
	el = Element((None, "presence"))
	el.attributes["to"] = to
	el.attributes["from"] = fro
	if(ptype):
		el.attributes["type"] = ptype
	if(show):
		s = el.addElement("show")
		s.addContent(show)
	if(status):
		s = el.addElement("status")
		s.addContent(status)
	if(priority):
		s = el.addElement("priority")
		s.addContent(priority)

	if(not ptype):
		x = el.addElement("x")
		x.attributes["xmlns"] = disco.XVCARDUPDATE
		if(avatarHash):
			xx = el.addElement("x")
			xx.attributes["xmlns"] = disco.XAVATAR
			h = xx.addElement("hash")
			h.addContent(avatarHash)
			h = x.addElement("photo")
			h.addContent(avatarHash)
		if(nickname):
			n = x.addElement("nickname")
			n.addContent(nickname)
	
	if(payload):
		for p in payload:
			el.addChild(p)

	pytrans.send(el)
示例#23
0
文件: command.py 项目: wyn/collab
    def toElement(self):
        el = Element((self.defaultUri, 'command'))
        el['node'] = self.node
        el['sessionid'] = self.sessionid

        if self.status:
            el['status'] = self.status

        if self.action:
            el['action'] = self.action

        if self.actions:
            el.addChild(self.actions.toElement())

        if self.form:
            el.addChild(self.form.toElement())

        if self.notes:
            [el.addChild(n.toElement()) for n in self.notes]

        return el
    def test_onGotItem_start_notAlreadyGoing(self):
        self.cds.onGotStartSimulation = Mock(side_effect=utils.good_side_effect('done'))
        self.cds.onGotStoppedSimulation = Mock()
        run_id = '1'
        
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='start')
        item.addChild(params.toElement())

        self.assertFalse(run_id in self.cds.tasks)
        d = self.cds.onGotItem(item)
        def check(data):
            self.assertTrue(data is None)
            self.assertEquals(self.cds.onGotStartSimulation.call_count, 1)
            self.assertIn(run_id, self.cds.tasks)
            self.assertTrue(isinstance(self.cds.tasks[run_id], task.CooperativeTask))
            self.assertFalse(self.cds.onGotStoppedSimulation.called)

        d.addCallback(check)
        self.sch.clock.pump([1])
        return d
示例#25
0
    def test_onGotDistribution_noProgress_badBroadcast(self):
        self.dm.broadcastLogs = Mock(side_effect=utils.bad_side_effect(Exception('%s: groan' % self.__class__)))
        self.dm.handleDistribution = Mock()
        self.dm._errback = Mock(side_effect=utils.good_side_effect('err logged'))

        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(1)
        params = sim.Parameters(run_id='1', cmd='results')
        params_el = params.toElement()
        params_el.addChild(sim.Distributions().toElement())
        item.addChild(params_el)

        lg = sim.Logger()
        d = self.dm.onGotDistribution(params, item, lg)

        def check(data):
            self.assertFalse(self.dm.handleDistribution.called)
            self.assertEquals(self.dm.broadcastLogs.call_count, 1)
            self.assertEquals(self.dm._errback.call_count, 1)

        d.addCallback(check)
        self.sch.clock.pump([1,1,1])
        return d
示例#26
0
文件: xdb.py 项目: zfortier/yakalope
    def set(self, file, xdbns, element):
        """ Sets a specific xdb namespace in the XDB 'file' to element """
        try:
            element.attributes["xdbns"] = xdbns
            document = None
            try:
                document = self.__getFile(file)
            except IOError:
                pass
            if (not document):
                document = Element((None, "xdb"))

            # Remove the existing node (if any)
            for child in document.elements():
                if (child.getAttribute("xdbns") == xdbns):
                    document.children.remove(child)
            # Add the new one
            document.addChild(element)

            self.__writeFile(file, document.toXml())
        except IOError, e:
            LogEvent(WARN, "", "IOError " + str(e))
            raise
示例#27
0
	def set(self, file, xdbns, element):
		""" Sets a specific xdb namespace in the XDB 'file' to element """
		try:
			element.attributes["xdbns"] = xdbns
			document = None
			try:
				document = self.__getFile(file)
			except IOError:
				pass
			if not document:
				document = Element((None, "xdb"))
			
			# Remove the existing node (if any)
			for child in document.elements():
				if child.getAttribute("xdbns") == xdbns:
					document.children.remove(child)
			# Add the new one
			document.addChild(element)
			
			self.__writeFile(file, document.toXml())
		except:
			LogEvent(INFO, msg="XDB error writing entry %s to file %s" % (xdbns, file))
			raise
示例#28
0
文件: message.py 项目: kvj/mp-twisted
 def to_xml(self, internal=False):
     result = Element(("", self._to_value(self.name)))
     result["type"] = "message"
     if not internal:
         if self.id:
             result["id"] = unicode(self.id)
     for field in self.properties.keys():
         value = self.get(field)
         if isinstance(value, list):
             el = result.addElement(field)
             el["type"] = "list"
             for item in value:
                 if isinstance(item, Message):
                     el.addChild(item.to_xml(True))
                 else:
                     el.addElement("item", content=self._to_value(item))
         elif isinstance(value, Message):
             result.addChild(value.to_xml(True))
         else:
             if value:
                 result.addElement(self._to_value(field), content=self._to_value(value))
     if internal:
         return result
     return result.toXml()
示例#29
0
    def test_fromElement_notTopNode(self):
        el = Element(('http://jabber.org/protocol/pubsub#event', 'item'))
        s = simulation.Parameters(120, 'output', 1000, 'start')
        sim = el.addChild(s.toElement())
        
        fs = [portfolio.Factor('f1', 0.1), portfolio.Factor('f2', 0.2), portfolio.Factor('f3', 0.3)]
        iss = [portfolio.Issuer('iss1', set(fs[0:1])), portfolio.Issuer('iss2', set(fs[1:2])), portfolio.Issuer('iss3', set(fs))]
        a1 = portfolio.Asset('ass1', issuer=iss[0])
        a2 = portfolio.Asset('ass2', issuer=iss[1])
        a3 = portfolio.Asset('ass3', issuer=iss[2])
        a4 = portfolio.Asset('ass4', issuer=iss[2])

        port = sim.addElement('portfolio')
        port.addElement('name', content='port')
        assets_el = port.addElement('assets')
        assets_el.addChild(a1.toElement())
        assets_el.addChild(a2.toElement())
        assets_el.addChild(a3.toElement())
        assets_el.addChild(a4.toElement())

        p = portfolio.Portfolio.fromElement(el)
        self.assertEquals(p.name, 'port')
        self.assertEquals(len(p.assets), 4)
        assets = [a1,a2,a3,a4]

        def getExpected(name, assets):
            for a in assets:
                if a.name == name:
                    return a

        for i, ass in enumerate(p.assets):
            expected = getExpected(ass.name, assets)
            self.assertTrue(expected is not None)
            self.assertEquals(ass.dp, expected.dp)
            self.assertEquals(ass.recovery, expected.recovery)
            self.assertEquals(ass.notional, expected.notional)
            iss, exp_iss = ass.issuer, expected.issuer
            self.assertEquals(iss.name, exp_iss.name)
            facs, exp_facs = iss.factors, exp_iss.factors
            self.assertEquals(len(facs), len(exp_facs))

            [checkFactor(f.name, f.weight, exp_facs) for f in facs]
    def test_onGotItem_startNoRunId(self):
        cdm = CorrelatedDefaultsManager(testjid)
        cdm.broadcastStart = Mock()
        cdm.broadcastStop = Mock()
        cdm.broadcastLogs = Mock(side_effect=utils.good_side_effect('lush'))
        
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        params = simulation.Parameters(cmd='start')
        p = item.addChild(params.toElement())
        p.addChild(portfolio.Portfolio('p1').toElement())
        expected = simulation.Parameters(cmd='start', run_id=None, timestamp=params.timestamp).toElement()

        out = yield cdm.onGotItem(item)

        self.assertFalse(cdm.broadcastStart.called)
        self.assertEquals(cdm.broadcastLogs.call_count, 1)
        self.assertFalse(cdm.broadcastStop.called)

        for ((a,b), dic) in cdm.broadcastLogs.call_args_list:
            self.assertEquals(b.toElement().toXml(), expected.toXml())
    def test_onGotStartSimulation_withPortfolio_noBroadcast_noFactory(self):
        run_id = '1'
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='info')
        params_el = item.addChild(params.toElement())
        portfolio = port.Portfolio('jim')
        params_el.addChild(portfolio.toElement())
        logger = sim.Logger()

        self.cds.broadcastLogs = Mock()
        self.cds.broadcastResults = Mock()
        self.cds.simulatorFactory = {}
        self.cds.simulatorFactory['sparse2'] = MagicMock()
        self.cds._errback = Mock()
        
        simulator = Mock()
        simulator.copula = Mock()
        def simCreater(*a, **kw):
            return simulator
        self.cds.simulatorFactory['sparse2'].side_effect = simCreater

        self.cds.max_runs = 6
        self.cds.broadcast_freq = 10
        chunk = 2
        t = task.Cooperator(scheduler=self.sch.callLater)
        
        d = t.coiterate(self.cds.onGotStartSimulation(params, item, logger, chunk))

        def check(data):
            self.assertFalse(self.cds.broadcastLogs.called)
            self.assertFalse(self.cds.broadcastResults.called)
            self.assertFalse(simulator.copula.called)
            self.assertTrue(self.cds._errback.called)

        d.addCallback(check)
        self.sch.clock.pump([1,1,1])
        return d
    def test_onGotStartSimulation_withPortfolio_twoBroadcastWithErrors(self):
        run_id = '1'
        item = Element((pubsub.NS_PUBSUB_EVENT, 'item'))
        item['id'] = str(run_id)
        params = sim.Parameters(run_id=run_id, cmd='info')
        params_el = item.addChild(params.toElement())
        portfolio = port.Portfolio('jim')
        params_el.addChild(portfolio.toElement())
        logger = sim.Logger()

        self.cds.broadcastLogs = Mock()
        self.cds.broadcastResults = Mock(side_effect=utils.good_side_effect('results'))
        self.cds.simulatorFactory['sparse'] = MagicMock()
        self.cds._errback = Mock()
        
        simulator = Mock()
        simulator.copula = Mock(side_effect=ValueError('%s: roar' % self.__class__))
        def simCreater(*a, **kw):
            return simulator
        self.cds.simulatorFactory['sparse'].side_effect = simCreater

        self.cds.max_runs = 15
        self.cds.broadcast_freq = 6
        chunk = 3
        t = task.Cooperator(scheduler=self.sch.callLater)
        
        d = t.coiterate(self.cds.onGotStartSimulation(params, item, logger, chunk))

        def check(data):
            self.assertFalse(self.cds.broadcastLogs.called)
            self.assertEquals(self.cds.broadcastResults.call_count, 2)
            self.assertEquals(simulator.copula.call_count, 5)
            self.assertTrue(self.cds._errback.called)

        d.addCallback(check)
        self.sch.clock.pump([1,1,1,1])
        return d
示例#33
0
    def test_fromElement(self):
        el = Element((collab.COMMAND_NS, 'command'))
        el['node'] = 'testNode'
        el['sessionid'] = 'sessionid1'
        el['status'] = 'completed'
        
        a = Actions()
        a.setDefault('next')
        el.addChild(a.toElement())

        form = data_form.Form(
            formType='form',
            title=u'Unregister a machine',
            instructions=[u'Please select the machine to be unregistered'],
            formNamespace=collab.COLLAB_NS
            )

        form.addField(data_form.Field(
            var = 'machine',
            label = u'Machine',
            desc = u'Please select a machine domain name',
            required = True,
            fieldType='list-multi',
            options = [data_form.Option(m) for m in ['one', 'two', 'three']]
            ))

        el.addChild(form.toElement())

        n1 = Note('a test note')
        el.addChild(n1.toElement())

        c = Command.fromElement(el)

        self.assertEquals(c.node, 'testNode')
        self.assertEquals(c.defaultUri, collab.COMMAND_NS)
        self.assertEquals(c.status, 'completed')
        self.assertEquals(c.sessionid, 'sessionid1')

        self.assertEquals(len(c.notes), 1)
        self.assertEquals(c.notes[0].toElement().toXml(), n1.toElement().toXml())
        self.assertEquals(c.form.toElement().toXml(), form.toElement().toXml())
        self.assertEquals(c.actions.toElement().toXml(), a.toElement().toXml())