def __init__(self, opts): super(TaskManager, self).__init__() self.node = cauv.node.Node("task_manager") self.node.subMessage(messaging.AddTaskMessage()) self.node.subMessage(messaging.RemoveTaskMessage()) self.node.subMessage(messaging.SetTaskStateMessage()) self.node.subMessage(messaging.AddConditionMessage()) self.node.subMessage(messaging.RemoveConditionMessage()) self.node.subMessage(messaging.SetConditionStateMessage()) self.node.subMessage(messaging.RequestAIStateMessage()) self.node.subMessage(messaging.ScriptControlMessage()) self.node.subMessage(messaging.AIControlMessage()) self.node.subMessage(messaging.ProcessEndedMessage()) self.node.subMessage(messaging.DetectorFiredMessage()) self.node.subMessage(messaging.ScriptExitMessage()) self.all_paused = not opts.unpaused self.ai_state = AIState(self) #Tasks - list of tasks that (in right conditions) should be called self.tasks = NameDict() self.conditions = NameDict() self.detector_fire_timeouts = collections.defaultdict(int) #currently running task self.last_available_tasks = [] self.last_active_tasks = [] self.mission_name = opts.mission_name if opts.mission_save: self.load_mission(open(opts.mission_save)) self.gui_send_all() self.node.addObserver(self)
def test_control(self): tm = self.get_tm() self.add_test_condition(tm) self.assertTrue(tm.all_paused) tm.onAIControlMessage.func( msg.AIControlMessage(msg.AICommand.ResumeAll)) self.assertFalse(tm.all_paused) tm.onAIControlMessage.func(msg.AIControlMessage( msg.AICommand.PauseAll)) self.assertTrue(tm.all_paused) with tp.TempProcessEnv() as env: save_dir = os.path.join(env.dirname, "save") os.mkdir(save_dir) tm.mission_name = save_dir + "/default" tm.onAIControlMessage.func(msg.AIControlMessage( msg.AICommand.Save)) self.assertTrue(os.listdir(save_dir))
def test_start_script(self): tm = self.get_tm() tm.onAddTaskMessage.func(msg.AddTaskMessage("test")) task_state = tm.node.last_msg(msg.TaskStateMessage) task_name = task_state.taskId tm.onAIControlMessage.func( msg.AIControlMessage(msg.AICommand.ResumeAll)) tm.start_script(tm.tasks[task_name]) edit_process = tm.node.last_msg(msg.EditProcessMessage) start_process = tm.node.last_msg(msg.ProcessControlMessage) self.assertEqual(edit_process.command[0], "python2.7") self.assertTrue(edit_process.command[1].endswith("test_script.pyc")) self.assertIsNot(start_process, None)
def save(ainode): ainode.node.send(messaging.AIControlMessage(messaging.AICommand.Save))
def resume_all(ainode): ainode.node.send(messaging.AIControlMessage(messaging.AICommand.ResumeAll))
def pause_all(ainode): ainode.node.send(messaging.AIControlMessage(messaging.AICommand.PauseAll))