Exemple #1
0
    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())
Exemple #2
0
    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
Exemple #5
0
    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)