def test_kill(self): process = utils.WaitForSignalProcess() # Kill the process when it enters the WAITING state listener = plumpy.ProcessListener() listener.on_process_waiting = lambda _proc: process.kill() process.add_process_listener(listener) with self.assertRaises(plumpy.KilledError): process.execute() self.assertTrue(process.killed())
def test_wait_continue(self): proc = utils.WaitForSignalProcess() # Wait - Execute the process and wait until it is waiting listener = plumpy.ProcessListener() listener.on_process_waiting = lambda proc: proc.resume() proc.add_process_listener(listener) proc.execute() # Check it's done self.assertTrue(proc.done()) self.assertEqual(proc.state, ProcessState.FINISHED)
def run_until_paused(proc): """ Set up a future that will be resolved on entering the WAITING state """ listener = plumpy.ProcessListener() paused = plumpy.Future() if proc.paused: paused.set_result(True) else: def on_paused(_paused_proc): paused.set_result(True) proc.remove_process_listener(listener) listener.on_process_paused = on_paused proc.add_process_listener(listener) return paused
def run_until_waiting(proc): """ Set up a future that will be resolved on entering the WAITING state """ from aiida.work import ProcessState listener = plumpy.ProcessListener() in_waiting = plumpy.Future() if proc.state == ProcessState.WAITING: in_waiting.set_result(True) else: def on_waiting(waiting_proc): in_waiting.set_result(True) proc.remove_process_listener(listener) listener.on_process_waiting = on_waiting proc.add_process_listener(listener) return in_waiting
def test_pause_in_process(self): """ Test that we can pause and cancel that by playing within the process """ test_case = self class TestPausePlay(plumpy.Process): def run(self): fut = self.pause() test_case.assertIsInstance(fut, plumpy.Future) listener = plumpy.ProcessListener() listener.on_process_paused = lambda _proc: self.loop.stop() proc = TestPausePlay() proc.add_process_listener(listener) self.loop.add_callback(proc.step_until_terminated) self.loop.start() self.assertTrue(proc.paused) self.assertEqual(plumpy.ProcessState.FINISHED, proc.state)