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)
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