示例#1
0
def test_workflow() -> Workflow:
    return Workflow(
        TaskDescriptorId("test_workflow"),
        "Speakable name of workflow",
        [
            Step("start", PerformAction("start_collect"), timedelta(seconds=10)),
            Step("act", PerformAction("collect"), timedelta(seconds=10)),
            Step("done", PerformAction("collect_done"), timedelta(seconds=10), StepErrorBehaviour.Stop),
        ],
        [EventTrigger("start me up"), TimeTrigger("1 1 1 1 1")],
    )
示例#2
0
def test_eq() -> None:
    s1 = Step("a", PerformAction("a"), timedelta())
    s2 = Step("a", WaitForEvent("a", {"foo": "bla"}), timedelta())
    s3 = Step("a", EmitEvent(Event("a", {"a": "b"})), timedelta())
    s4 = Step("a", ExecuteCommand("echo hello"), timedelta())
    assert s1 == Step("a", PerformAction("a"), timedelta())
    assert s2 == Step("a", WaitForEvent("a", {"foo": "bla"}), timedelta())
    assert s3 == Step("a", EmitEvent(Event("a", {"a": "b"})), timedelta())
    assert s4 == Step("a", ExecuteCommand("echo hello"), timedelta())
    trigger = [EventTrigger("start me up")]
    assert Workflow("a", "a", [s1, s2, s3, s4],
                    trigger) == Workflow("a", "a", [s1, s2, s3, s4], trigger)
def test_workflow() -> Workflow:
    return Workflow(
        TaskDescriptorId("test_workflow"),
        "Speakable name of workflow",
        [
            Step("start", PerformAction("start_collect"), timedelta(seconds=10)),
            Step("wait", WaitForEvent("godot", {"a": 1}), timedelta(seconds=10)),
            Step("emit_event", EmitEvent(Event("hello", {"a": 1})), timedelta(seconds=10)),
            Step("collect", PerformAction("collect"), timedelta(seconds=10)),
            Step("done", PerformAction("collect_done"), timedelta(seconds=10), StepErrorBehaviour.Stop),
        ],
        [EventTrigger("start me up")],
    )
def test_marshalling_step() -> None:
    roundtrip(Step("test", PerformAction("test")))
    roundtrip(Step("test", WaitForEvent("test"), timedelta(seconds=19), StepErrorBehaviour.Stop))
def test_marshalling_step_action() -> None:
    roundtrip(PerformAction("test"))
    roundtrip(EmitEvent(Event("test", {"foo": "hello"})))
    roundtrip(WaitForEvent("test", {"foo": "hello"}))
    roundtrip(ExecuteCommand("help"))
示例#6
0
 def known_workflows() -> List[Workflow]:
     collect_steps = [
         Step("pre_collect", PerformAction("pre_collect"),
              timedelta(seconds=10)),
         Step("collect", PerformAction("collect"), timedelta(seconds=10)),
         Step("post_collect", PerformAction("post_collect"),
              timedelta(seconds=10)),
     ]
     cleanup_steps = [
         Step("pre_cleanup_plan", PerformAction("pre_cleanup_plan"),
              timedelta(seconds=10)),
         Step("cleanup_plan", PerformAction("cleanup_plan"),
              timedelta(seconds=10)),
         Step("post_cleanup_plan", PerformAction("post_cleanup_plan"),
              timedelta(seconds=10)),
         Step("pre_cleanup", PerformAction("pre_cleanup"),
              timedelta(seconds=10)),
         Step("cleanup", PerformAction("cleanup"), timedelta(seconds=10)),
         Step("post_cleanup", PerformAction("post_cleanup"),
              timedelta(seconds=10)),
     ]
     metrics_steps = [
         Step("pre_generate_metrics", PerformAction("pre_generate_metrics"),
              timedelta(seconds=10)),
         Step("generate_metrics", PerformAction("generate_metrics"),
              timedelta(seconds=10)),
         Step("post_generate_metrics",
              PerformAction("post_generate_metrics"),
              timedelta(seconds=10)),
     ]
     return [
         Workflow(
             uid="collect",
             name="collect",
             steps=collect_steps + metrics_steps,
             triggers=[EventTrigger("start_collect_workflow")],
             on_surpass=TaskSurpassBehaviour.Wait,
         ),
         Workflow(
             uid="cleanup",
             name="cleanup",
             steps=cleanup_steps + metrics_steps,
             triggers=[EventTrigger("start_cleanup_workflow")],
             on_surpass=TaskSurpassBehaviour.Wait,
         ),
         Workflow(
             uid="metrics",
             name="metrics",
             steps=metrics_steps,
             triggers=[EventTrigger("start_metrics_workflow")],
             on_surpass=TaskSurpassBehaviour.Wait,
         ),
         Workflow(
             uid="collect_and_cleanup",
             name="collect_and_cleanup",
             steps=collect_steps + cleanup_steps + metrics_steps,
             triggers=[
                 EventTrigger("start_collect_and_cleanup_workflow"),
                 TimeTrigger("0 * * * *")
             ],
             on_surpass=TaskSurpassBehaviour.Wait,
         ),
     ]
示例#7
0
    def known_workflows(config: CoreConfig) -> List[Workflow]:
        def workflow(name: TaskDescriptorId, steps: List[Step]) -> Workflow:
            trigger: List[Trigger] = [EventTrigger(f"start_{name}_workflow")]
            wf_config = config.workflows.get(name)
            if wf_config:
                trigger.append(TimeTrigger(wf_config.schedule))
            return Workflow(uid=name, name=name, steps=steps, triggers=trigger, on_surpass=TaskSurpassBehaviour.Wait)

        collect_steps = [
            Step("pre_collect", PerformAction("pre_collect"), timedelta(seconds=10)),
            Step("collect", PerformAction("collect"), timedelta(seconds=10)),
            Step("merge_outer_edges", PerformAction("merge_outer_edges"), timedelta(seconds=10)),
            Step("post_collect", PerformAction("post_collect"), timedelta(seconds=10)),
        ]
        cleanup_steps = [
            Step("pre_cleanup_plan", PerformAction("pre_cleanup_plan"), timedelta(seconds=10)),
            Step("cleanup_plan", PerformAction("cleanup_plan"), timedelta(seconds=10)),
            Step("post_cleanup_plan", PerformAction("post_cleanup_plan"), timedelta(seconds=10)),
            Step("pre_cleanup", PerformAction("pre_cleanup"), timedelta(seconds=10)),
            Step("cleanup", PerformAction("cleanup"), timedelta(seconds=10)),
            Step("post_cleanup", PerformAction("post_cleanup"), timedelta(seconds=10)),
        ]
        metrics_steps = [
            Step("pre_generate_metrics", PerformAction("pre_generate_metrics"), timedelta(seconds=10)),
            Step("generate_metrics", PerformAction("generate_metrics"), timedelta(seconds=10)),
            Step("post_generate_metrics", PerformAction("post_generate_metrics"), timedelta(seconds=10)),
        ]
        return [
            workflow(TaskDescriptorId("collect"), collect_steps + metrics_steps),
            workflow(TaskDescriptorId("cleanup"), cleanup_steps + metrics_steps),
            workflow(TaskDescriptorId("metrics"), metrics_steps),
            workflow(TaskDescriptorId("collect_and_cleanup"), collect_steps + cleanup_steps + metrics_steps),
        ]