コード例 #1
0
ファイル: test_scheduler.py プロジェクト: inercia/candelabra
    def test_tasks_scheduler(self):
        """ Test that the tasks scheduler works
        """

        class Incrementer(object):
            num = 1

            def __init__(self, v):
                self.v = v

            def inc(self):
                logger.debug('incrementing %d by %d', self.v, self.num)
                self.v += self.num

        class Decrementer(object):
            num = 1

            def __init__(self, v):
                self.v = v

            def dec(self):
                logger.debug('decrementing %d by %d', self.v, self.num)
                self.v -= self.num

        inc_1 = Incrementer(0)
        dec_1 = Decrementer(2)

        sched = TasksScheduler()
        sched.add(inc_1.inc)
        sched.add(dec_1.dec, depends_on=inc_1.inc)
        sched.run()

        self.assertEqual(dec_1.v, 1)
        self.assertEqual(inc_1.v, 1)
コード例 #2
0
ファイル: plugins.py プロジェクト: vidyacraghav/candelabra
            topology = TopologyRoot()
            topology.load(topology_file)
        except TopologyException, e:
            logger.critical(str(e))
            sys.exit(1)
        except ProviderNotFoundException, e:
            logger.critical(str(e))
            sys.exit(1)
        except KeyboardInterrupt:
            logger.critical('interrupted with Ctrl-C... bye!')
            sys.exit(0)

        scheduler = None
        try:
            if command:
                scheduler = TasksScheduler()
                tasks = topology.get_tasks(command)
                assert all(isinstance(t, tuple) for t in tasks)
                scheduler.append(tasks)
                scheduler.run()
        except CandelabraException:
            raise
        except Exception, e:
            logger.critical('uncaught exception')
            raise
        finally:
            if save_state:
                if scheduler and scheduler.num_completed > 0:
                    topology.state.save()

        return topology