Esempio n. 1
0
def test_engine_progress_collection():
    with temporary_engine() as engine:
        seq = SimpleSequentialTaskCollection(3)
        engine.add(seq)

        # run through sequence
        while seq.execution.state != 'TERMINATED':
            engine.progress()
        assert seq.stage().jobname == 'stage2'
        assert seq.stage().execution.state == 'TERMINATED'
Esempio n. 2
0
def test_engine_progress_collection():
    with temporary_engine() as engine:
        seq = SimpleSequentialTaskCollection(3)
        engine.add(seq)

        # run through sequence
        while seq.execution.state != 'TERMINATED':
            engine.progress()
        assert seq.stage().jobname == 'stage2'
        assert seq.stage().execution.state == 'TERMINATED'
Esempio n. 3
0
def test_engine_kill_SequentialTaskCollection():
    with temporary_engine() as engine:
        seq = SimpleSequentialTaskCollection(3)
        engine.add(seq)

        while seq.execution.state != 'RUNNING':
            engine.progress()

        # When the sequence is in RUNNING state, so must the first app
        assert seq.tasks[0].execution.state == 'RUNNING'
        assert seq.tasks[1].execution.state == 'NEW'
        assert seq.tasks[2].execution.state == 'NEW'

        # Killing a sequential should put all the applications in
        # TERMINATED state. However, we will need an extra run of
        # engine.progress() to update the status of all the jobs.
        engine.kill(seq)
        assert seq.tasks[0].execution.state == 'RUNNING'
        assert seq.tasks[1].execution.state == 'NEW'
        assert seq.tasks[2].execution.state == 'NEW'
        assert seq.execution.state == 'RUNNING'

        engine.progress()

        assert seq.tasks[0].execution.state == 'TERMINATED'
        assert seq.tasks[1].execution.state == 'TERMINATED'
        assert seq.tasks[2].execution.state == 'TERMINATED'
        assert seq.execution.state == 'TERMINATED'
Esempio n. 4
0
def test_engine_kill_SequentialTaskCollection():
    with temporary_engine() as engine:
        seq = SimpleSequentialTaskCollection(3)
        engine.add(seq)

        while seq.execution.state != 'RUNNING':
            engine.progress()

        # Because of our noop engine, as soon as the sequential is in
        # running we will have a job in TERMINATED and the others in
        # NEW.
        assert (
            ['TERMINATED', 'NEW', 'NEW'] ==
            [i.execution.state for i in seq.tasks])

        # Killing a sequential should put all the applications in
        # TERMINATED state. However, we will need an extra run of
        # engine.progress() to update the status of all the jobs.
        engine.kill(seq)
        assert (
            ['TERMINATED', 'NEW', 'NEW'] ==
            [i.execution.state for i in seq.tasks])

        engine.progress()

        assert (
            ['TERMINATED', 'TERMINATED', 'TERMINATED'] ==
            [i.execution.state for i in seq.tasks])
        assert seq.execution.state == 'TERMINATED'
Esempio n. 5
0
def test_SequentialTaskCollection_progress():
    with temporary_core() as core:
        seq = SimpleSequentialTaskCollection(3)
        seq.attach(core)

        # run until terminated
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == 'stage2'
        assert seq.stage().execution.state == Run.State.TERMINATED
def test_SequentialTaskCollection_progress():
    with temporary_core() as core:
        seq = SimpleSequentialTaskCollection(3)
        seq.attach(core)

        # run until terminated
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == 'stage2'
        assert seq.stage().execution.state == Run.State.TERMINATED
Esempio n. 7
0
def test_engine_progress_collection_and_forget_terminated():
    with temporary_engine() as engine:
        engine.forget_terminated = True

        seq = SimpleSequentialTaskCollection(3)
        engine.add(seq)

        # run through sequence
        while seq.execution.state != 'TERMINATED':
            engine.progress()

        assert 0 == len(engine._managed.done)
        assert not seq._attached
        for task in seq.tasks:
            assert not task._attached
Esempio n. 8
0
def test_empty_SequentialTaskCollection_progress():
    with temporary_core() as core:
        seq = SimpleSequentialTaskCollection(0)
        seq.attach(core)

        # run until terminated
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.execution.state == Run.State.TERMINATED
        assert seq.execution.returncode == 0
def test_SequentialTaskCollection_redo3():
    """Test that we can re-do a partially terminated sequence."""
    with temporary_core() as core:
        seq = SimpleSequentialTaskCollection(3)
        seq.attach(core)

        # run until stage1 is terminated
        while seq.tasks[1].execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == 'stage2'

        core.kill(seq)

        seq.redo(0)
        assert seq.stage().jobname == 'stage0'
        assert seq.stage().execution.state == Run.State.NEW
        assert seq.execution.state == Run.State.NEW

        # run until terminated
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == 'stage2'
        assert seq.stage().execution.state == Run.State.TERMINATED
Esempio n. 10
0
def test_SequentialTaskCollection_redo2():
    with temporary_core() as core:
        seq = SimpleSequentialTaskCollection(3)
        seq.attach(core)

        # run until terminated
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == "stage2"
        assert seq.stage().execution.state == Run.State.TERMINATED

        seq.redo(1)
        assert seq.stage().jobname == "stage1"
        assert seq.stage().execution.state == Run.State.NEW
        assert seq.execution.state == Run.State.NEW

        # run until terminated, again
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == "stage2"
        assert seq.stage().execution.state == Run.State.TERMINATED
Esempio n. 11
0
def test_SequentialTaskCollection_redo3():
    """Test that we can re-do a partially terminated sequence."""
    with temporary_core() as core:
        seq = SimpleSequentialTaskCollection(3)
        seq.attach(core)

        # run until stage1 is terminated
        while seq.tasks[1].execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == 'stage2'

        core.kill(seq)

        seq.redo(0)
        assert seq.stage().jobname == 'stage0'
        assert seq.stage().execution.state == Run.State.NEW
        assert seq.execution.state == Run.State.NEW

        # run until terminated
        while seq.execution.state != Run.State.TERMINATED:
            seq.progress()
        assert seq.stage().jobname == 'stage2'
        assert seq.stage().execution.state == Run.State.TERMINATED