public TestJobRunner(TestJobData data) { m_JobData = data; m_PcHelper = new EditModePcHelper(); Tasks = GetTaskList(data.executionSettings).ToArray(); EditorApplication.update += ExecuteStep; }
public string RunJob(TestJobData data) { if (data == null) { throw new ArgumentException(null, nameof(data)); } if (m_JobData != null && m_JobData.isRunning) { throw new Exception("TestJobRunner is already running a job."); } if (data.isHandledByRunner) { throw new Exception("Test job is already being handled."); } m_JobData = data; m_JobData.isHandledByRunner = true; if (!m_JobData.isRunning) { m_JobData.isRunning = true; SavedTestJobData.Add(m_JobData); } Tasks = GetTasks(data.executionSettings).ToArray(); if (!data.executionSettings.runSynchronously) { SubscribeCallback(ExecuteStep); } else { while (data.isRunning) { ExecuteStep(); } } return(data.guid); }
public void RunJob(TestJobData data) { if (data == null) { throw new ArgumentException(null, nameof(data)); } if (data.taskInfoStack == null) { throw new ArgumentException($"{nameof(data.taskInfoStack)} on {nameof(TestJobData)} is null.", nameof(data)); } if (IsRunningJob()) { throw new Exception("TestJobRunner is already running a job."); } if (data.isHandledByRunner) { throw new Exception("Test job is already being handled."); } m_JobData = data; m_JobData.isHandledByRunner = true; if (!IsRunningJob()) { m_JobData.isRunning = true; m_JobData.taskInfoStack.Push(new TestJobData.TaskInfo()); RegisterRun(this, m_JobData); } else // Is resuming run { var taskInfoBeforeResuming = m_JobData.taskInfoStack.Peek(); if (taskInfoBeforeResuming.taskMode != TestJobData.TaskMode.Resume) { m_JobData.taskInfoStack.Push(new TestJobData.TaskInfo { taskMode = TestJobData.TaskMode.Resume, index = 0, stopBeforeIndex = taskInfoBeforeResuming.index }); } else { taskInfoBeforeResuming.index = 0; } } m_JobData.Tasks = GetTasks(data.executionSettings).ToArray(); if (!data.executionSettings.runSynchronously) { SubscribePlayModeStateChanged(PlaymodeStateChanged); SubscribeCallback(ExecuteCallback); } else { while (data.isRunning) { ExecuteStep(); } } }
public void UnregisterRun(TestJobRunner runner, TestJobData data) { TestRuns.Remove(data); m_Runners.Remove(data.guid); }
public void RegisterRun(TestJobRunner runner, TestJobData data) { TestRuns.Add(data); m_Runners.Add(data.guid, runner); }