Exemplo n.º 1
0
    def test__process_readyToCommitNotOK_stanzaError(self):
        self.chdlr._parse_iq = Mock()
        self.chdlr._manage_state = Mock()
        
        response = xmlstream.toResponse(iq())
        response.addChild(cmd())
        self.chdlr._make_next_iq = Mock(side_effect=utils.good_side_effect(response))

        self.pageMngr.ready = Mock(return_value=True)
        self.stateMngr.commit = Mock(side_effect=utils.bad_side_effect(error.StanzaError('%s: Committed fail' % self.__class__)))

        self.pageMngr.reset = Mock()
        self.stateMngr.reset = Mock()

        def checkIt(msg):
            self.assertTrue(self.pageMngr.ready.called)
            self.assertTrue(self.stateMngr.commit.called)
            self.assertTrue(self.pageMngr.reset.called)
            self.assertTrue(self.stateMngr.reset.called)
            self.assertEquals(msg, response)
            self.assertTrue(msg.firstChildElement().firstChildElement().name, 'note')

        d = self.chdlr._process(self.iq)
        d.addCallback(checkIt)
        return d
Exemplo n.º 2
0
    def test_handleDistribution_stoppingBadBroadcastStop(self):
        name = 'name'
        run_id = '1'
        params = sim.Parameters(run_id=run_id, cmd='results')

        distribution = defaultdict(int)
        for i in xrange(10):
            distribution[i] = i

        progress = sim.Progress(200)
        self.dm.checkStopCondition = Mock(return_value=True)
        self.dm.broadcastResults = Mock(side_effect=utils.good_side_effect('lush'))
        self.dm.broadcastStop = Mock(side_effect=utils.bad_side_effect(ValueError('%s: arrrgh' % self.__class__)))
        self.dm.broadcastProgress = Mock(side_effect=utils.good_side_effect('lush'))
        self.dm._errback = Mock(side_effect=utils.good_side_effect('err handled'))

        d = self.dm.handleDistribution(params, name, distribution, progress)
        def check(data):
            self.dm.checkStopCondition.assert_called_once_with(params, progress.runs)
            self.assertEquals(self.dm.broadcastResults.call_count, 1)
            self.assertEquals(self.dm.broadcastStop.call_count, 1)
            self.dm.broadcastProgress.assert_called_once_with(params, progress)
            self.assertFalse(run_id in self.dm.stopped_runs)
            self.assertTrue(self.dm._errback.called)
            
        d.addCallback(check)
        self.sch.clock.pump([1,1,1])
        return d
Exemplo n.º 3
0
    def test_reloadAll_cantAddInput(self):
        old_inputs = set(['1','2','3','4'])
        self.node.addInput.side_effect = utils.bad_side_effect(ValueError('%s: addInput failed' % self.__class__))

        loader = self._makeLoader()
        d = loader.reloadAll(self.node, old_inputs)

        def check(data):
            self.assertEquals(data, set())
            self.assertEquals(self.node.addInput.call_count, 4)
            self.assertFalse(self.node.removeInput.called)

        d.addCallback(check)
        self.sch.clock.pump([1,1,1,1])
        return d
Exemplo n.º 4
0
    def test_makePSNode_badName(self):
        name = 'bad name'
        self.psclient.createNode = Mock(side_effect=utils.bad_side_effect(error.StanzaError(
            condition='conflict', text='%s: not lush' % self.__class__)))        

        d = sm.makePSNode(self.sender, name, self.psclient, 3)

        def cb(msg):
            self.assertTrue(False)
            
        def eb(msg):
            self.assertNotEquals(msg, name)
            self.assertEquals(self.psclient.createNode.call_count, 3)

        d.addCallbacks(cb, eb)
        return d
Exemplo n.º 5
0
    def test_suspendAll_cantRemoveInput(self):
        inputs = set(['1','2','3','4'])
        self.node.inputChannels = Mock(side_effect=utils.good_side_effect(inputs))
        self.node.removeInput.side_effect = utils.bad_side_effect(ValueError('%s: removeInput failed' % self.__class__))
        loader = self._makeLoader()
        d = loader.suspendAll(self.node)

        def check(data):
            self.assertEquals(self.node.inputChannels.call_count, 1)
            self.assertEquals(data, set())
            self.assertEquals(self.node.removeInput.call_count, 4)
            self.assertFalse(self.node.addInput.called)

        d.addCallback(check)
        self.sch.clock.pump([1,1,1,1])
        return d
Exemplo n.º 6
0
    def test_onError_toPublishErrored(self):
        self.mockPSClient.publish = Mock(side_effect=utils.bad_side_effect(error.StanzaError('DISAPPOINTED')))
        errors = ['errornode1', 'errornode2', 'log']
        node = nodes.PSErrorNode(testJid, self.mockPSClient)
        node.errorChannels = Mock(side_effect=utils.good_side_effect(errors))
        
        el = Element(('top', 'ns'))
        el.addContent('im covered in bees')
        el.toXml = Mock()
        d = node.onError(el)

        def cb(msg):
            self.assertEquals(self.mockPSClient.publish.call_count, 2)
            self.assertEquals(el.toXml.call_count, 1)

        d.addCallback(cb)
        return self.assertFailure(d, error.StanzaError)
Exemplo n.º 7
0
    def test_commit_cannotManageSubscriptions(self, manageAffiliationsMock, manageSubscriptionsMock):
        manageAffiliationsMock.side_effect = utils.good_side_effect('lush')
        manageSubscriptionsMock.side_effect = utils.bad_side_effect(error.StanzaError('%s: bleergh' % self.__class__))

        sc = sm.ConfigPubsubNodeStateChanger(self.psclient, self.jid)
        sc.data['name'] = self.name
        sc.data['admins'] = self.admins
        sc.data['publishers'] = self.pubs
        sc.data['subscribers'] = self.subs

        d = sc.commit()
        # d is a deferredlist with errors in it so collect all
        # garbage and then check that the expected error is there
        # then make sure that the other stuff still happened
        gc.collect()
        self.assertEquals(len(self.flushLoggedErrors(error.StanzaError)), 1)
        self.assertEquals(manageAffiliationsMock.call_count, 1)
        self.assertEquals(manageSubscriptionsMock.call_count, 1)
Exemplo n.º 8
0
    def test__process_makeNextIqThrows(self):
        self.chdlr._parse_iq = Mock()
        self.chdlr._manage_state = Mock()
        self.chdlr._make_next_iq = Mock(side_effect=utils.bad_side_effect(PageManagerError('%s: Massive corn clog in port seven' % self.__class__)))

        iq = self.iq
        d = self.chdlr._process(iq)
        
        self.assertTrue(self.chdlr._parse_iq.called)
        self.assertTrue(self.chdlr._manage_state.called)
        self.assertTrue(self.chdlr._make_next_iq.called)

        def cb(msg):
            f = failure.Failure('%s: Massive corn clog in port seven' % self.__class__, PageManagerError)
            err = makeErr(str(f), iq)
            self.assertEquals(msg.toXml(), err.toXml())

        d.addCallback(cb)
        return d
Exemplo n.º 9
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
Exemplo n.º 10
0
    def test_commit_cannotCreatePSNode(self, makePSNodeMock, manageAffiliationsMock, manageSubscriptionsMock):
        makePSNodeMock.side_effect = utils.bad_side_effect(error.StanzaError('%s: bleergh' % self.__class__))
        manageAffiliationsMock.side_effect = utils.good_side_effect('lush')
        manageSubscriptionsMock.side_effect = utils.good_side_effect('lush')

        sc = sm.CreatePubsubNodeStateChanger(self.psclient, self.jid)
        sc.data['component'] = self.comp
        sc.data['name'] = self.name
        sc.data['admins'] = self.admins
        sc.data['publishers'] = self.pubs
        sc.data['subscribers'] = self.subs

        d = sc.commit()

        def cb(ret):
            self.assertTrue(False)

        def eb(err):
            self.assertEquals(makePSNodeMock.call_count, 1)
            self.assertEquals(manageAffiliationsMock.call_count, 0)
            self.assertEquals(manageSubscriptionsMock.call_count, 0)

        d.addCallbacks(cb, eb)
        return d
Exemplo n.º 11
0
    def test__process_readyToCommitNotOK_otherError(self):
        self.chdlr._parse_iq = Mock()
        self.chdlr._manage_state = Mock()
        
        response = xmlstream.toResponse(iq())
        response.addChild(cmd())
        self.chdlr._make_next_iq = Mock(side_effect=utils.good_side_effect(response))

        self.pageMngr.ready = Mock(return_value=True)
        self.stateMngr.commit = Mock(side_effect=utils.bad_side_effect(ValueError('%s: Committed fail' % self.__class__)))

        self.pageMngr.reset = Mock()
        self.stateMngr.reset = Mock()

        def checkIt(msg):
            self.assertTrue(self.pageMngr.ready.called)
            self.assertTrue(self.stateMngr.commit.called)
            self.assertTrue(self.pageMngr.reset.called)
            self.assertTrue(self.stateMngr.reset.called)
            self.assertNotEquals(msg, response)

        d = self.chdlr._process(self.iq)
        d.addCallbacks(lambda _: self.assertTrue(False), checkIt)
        return d