def test_should_return_task_control(self): class LongTask(Task): def __init__(self, sleepDurationSec): self._sleepDurationSec = sleepDurationSec self._done = False @override def perform(self): while not self._done: time.sleep(self._sleepDurationSec) def terminate(self): self._done = True task = LongTask(0.01) taskCtrl = self.executor.execute(task) self.assertFalse(taskCtrl.isDone()) Poller(1, pollingDelaySec=0.01).check( ExecutionProbe(lambda: self.assertTrue(taskCtrl.isRunning()))) task.terminate() Poller(2, pollingDelaySec=0.01).check( ExecutionProbe(lambda: self.assertTrue(taskCtrl.isDone()))) task = LongTask(0.5) taskCtrl = self.executor.execute(task) task.terminate() taskCtrl.waitForCompletion() self.assertTrue(taskCtrl.isDone())
def test_ignores_step_failures(self): self.convergeable.requestPanic() self.closeLoopAndWaitForStep() Poller(1).check( ExecutionProbe(lambda: self.assertTrue( self.operatorLog.getLoopFailureLogCount() >= 1))) self.loop.open()
def _testMoveTo(self): actuatorPosition = np.arange(10) self.instrumentClient1.moveTo(actuatorPosition) Poller(3).check( ExecutionProbe(lambda: self.assertTrue( np.allclose(actuatorPosition, self.instrumentClient1.getPosition()))))
def _testGetStatus(self): status = self.instrumentClient1.getStatus() cmdCounter = status.commandCounter() self.instrumentClient1.moveTo(np.arange(4)) Poller(3).check( ExecutionProbe(lambda: self.assertEqual( cmdCounter + 1, self.instrumentClient1.getStatus().commandCounter())))
def test_should_ignore_failing_tasks(self): failingTask = FailingTask("broken") self.executor.execute(failingTask) Poller(4).check(TaskCompletionProbe(failingTask)) dummyTask = SlowTask(0, "slow task") Poller(1).check( ExecutionProbe(lambda: self.executor.execute(dummyTask))) Poller(4).check(TaskCompletionProbe(dummyTask))
def test_awakes_from_long_running_sleeps(self): self.interStepTimeSec = 10 cnt = self.convergeable.getMeasureConvergenceCount() self.buildInitializedLoop() t0Sec = time.time() Poller(2).check( ExecutionProbe(lambda: self.assertTrue( self.convergeable.getMeasureConvergenceCount() > cnt))) self.loop.deinitialize() t1Sec = time.time() self.assertTrue(t1Sec - t0Sec < self.interStepTimeSec / 10)
def test_deinitialize_and_reinitialize_restarts_in_open_loop(self): self.closeLoopAndWaitForStep() self.loop.deinitialize() closedLoopCnt = \ self.convergeable.getConvergenceStepCount() openLoopCnt = \ self.convergeable.getMeasureConvergenceCount() self.loop.initialize() self.assertFalse(self.loop.isClosed()) Poller(4).check( ExecutionProbe(lambda: self.assertEqual( closedLoopCnt, self.convergeable.getConvergenceStepCount()))) Poller(4).check( ExecutionProbe(lambda: self.assertTrue( self.convergeable.getMeasureConvergenceCount() > openLoopCnt))) self.loop.close() Poller(4).check( ExecutionProbe(lambda: self.assertTrue( closedLoopCnt < self.convergeable.getConvergenceStepCount())))
def waitForAtLeastConvergenceSteps(self, expectedSteps, timeoutSec=2): Poller(timeoutSec).check( ExecutionProbe(lambda: self.assertTrue( self.convergeable.getConvergenceStepCount() >= expectedSteps)))
def test_creation(self): self.assertFalse(self.loop.isClosed()) self.assertEqual(0, self.loop.getConvergenceStepCount()) Poller(2).check( ExecutionProbe(lambda: self.assertTrue( self.convergeable.getMeasureConvergenceCount() > 1)))
def closeLoopAndWaitForStep(self): self.loop.close() Poller(2).check( ExecutionProbe(lambda: self.assertTrue( self.convergeable.getConvergenceStepCount() > 0)))