예제 #1
0
 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)
예제 #2
0
 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))
예제 #3
0
 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)
예제 #4
0
def save(ainode):
    ainode.node.send(messaging.AIControlMessage(messaging.AICommand.Save))
예제 #5
0
def resume_all(ainode):
    ainode.node.send(messaging.AIControlMessage(messaging.AICommand.ResumeAll))
예제 #6
0
def pause_all(ainode):
    ainode.node.send(messaging.AIControlMessage(messaging.AICommand.PauseAll))