@@ -8,11 +8,13 @@ set -eu
88WORKFLOW_NAME=" test_cli_workflow_$$ "
99CANCEL_NAME=" test_cli_workflow_cancel_$$ "
1010FUTURE_NAME=" test_cli_workflow_future_$$ "
11+ PERIODIC_NAME=" test_cli_workflow_periodic_$$ "
1112
1213cleanup () {
1314 pulp workflow cancel --name " ${WORKFLOW_NAME} " 2> /dev/null || true
1415 pulp workflow cancel --name " ${CANCEL_NAME} " 2> /dev/null || true
1516 pulp workflow cancel --name " ${FUTURE_NAME} " 2> /dev/null || true
17+ pulp workflow cancel --name " ${PERIODIC_NAME} " 2> /dev/null || true
1618}
1719trap cleanup EXIT
1820
@@ -36,9 +38,6 @@ assert "$(echo "$OUTPUT" | jq -r '.pulp_labels.test_key')" = "test_value"
3638expect_succ pulp workflow list --name " ${WORKFLOW_NAME} "
3739assert " $( echo " $OUTPUT " | jq -r ' .[0].name' ) " = " ${WORKFLOW_NAME} "
3840
39- # Test: list with state filter
40- expect_succ pulp workflow list --state waiting
41-
4241# Test: label set
4342expect_succ pulp workflow label set --name " ${WORKFLOW_NAME} " --key " env" --value " ci"
4443expect_succ pulp workflow show --name " ${WORKFLOW_NAME} "
@@ -49,17 +48,47 @@ expect_succ pulp workflow label unset --name "${WORKFLOW_NAME}" --key "env"
4948expect_succ pulp workflow show --name " ${WORKFLOW_NAME} "
5049assert " $( echo " $OUTPUT " | jq -r ' .pulp_labels | has("env")' ) " = " false"
5150
52- # Test: cancel a waiting workflow
51+ # Test: list the runs of a workflow (may be empty, but must be valid JSON)
52+ expect_succ pulp workflow run list --workflow " ${WORKFLOW_NAME} "
53+ assert " $OUTPUT " ! = " null"
54+
55+ # Test: create a periodic workflow with --dispatch-interval
56+ expect_succ pulp workflow create \
57+ --name " ${PERIODIC_NAME} " \
58+ --dispatch-interval " 01:00:00" \
59+ --task ' {"task_name": "pulpcore.app.tasks.base.general_create", "task_args": [], "task_kwargs": []}'
60+ expect_succ pulp workflow show --name " ${PERIODIC_NAME} "
61+ assert " $( echo " $OUTPUT " | jq -r ' .name' ) " = " ${PERIODIC_NAME} "
62+
63+ # Test: inspect an individual run via its (nested) href. A periodic workflow starts at
64+ # start-time (now), so the scheduler creates a run shortly after creation; poll briefly.
65+ RUN_HREF=" "
66+ for _ in $( seq 1 10) ; do
67+ expect_succ pulp workflow run list --workflow " ${PERIODIC_NAME} "
68+ RUN_HREF=" $( echo " $OUTPUT " | jq -r ' .[0].pulp_href // empty' ) "
69+ [ -n " ${RUN_HREF} " ] && break
70+ sleep 1
71+ done
72+ if [ -n " ${RUN_HREF} " ]; then
73+ # 'run show' must resolve the nested run href against the correct read operation.
74+ expect_succ pulp workflow run show --href " ${RUN_HREF} "
75+ assert " $( echo " $OUTPUT " | jq -r ' .pulp_href' ) " = " ${RUN_HREF} "
76+ fi
77+
78+ # Stopping a periodic workflow halts its schedule.
79+ expect_succ pulp workflow cancel --name " ${PERIODIC_NAME} "
80+
81+ # Test: stop a workflow scheduled in the future
5382expect_succ pulp workflow create \
5483 --name " ${CANCEL_NAME} " \
5584 --task ' {"task_name": "pulpcore.app.tasks.base.general_create", "task_args": [], "task_kwargs": []}' \
5685 --start-time " 2099-01-01T00:00:00"
5786expect_succ pulp workflow cancel --name " ${CANCEL_NAME} "
87+ # Stopping is idempotent: a second stop still succeeds.
88+ expect_succ pulp workflow cancel --name " ${CANCEL_NAME} "
89+ # The workflow definition is still readable after being stopped.
5890expect_succ pulp workflow show --name " ${CANCEL_NAME} "
59- assert " $( echo " $OUTPUT " | jq -r ' .state' ) " = " canceled"
60-
61- # Test: canceling an already-canceled workflow should fail
62- expect_fail pulp workflow cancel --name " ${CANCEL_NAME} "
91+ assert " $( echo " $OUTPUT " | jq -r ' .name' ) " = " ${CANCEL_NAME} "
6392
6493# Test: create with --start-time in the future
6594FUTURE_NAME=" test_cli_workflow_future_$$ "
@@ -68,7 +97,7 @@ expect_succ pulp workflow create \
6897 --task ' {"task_name": "pulpcore.app.tasks.base.general_create", "task_args": [], "task_kwargs": []}' \
6998 --start-time " 2099-01-01T00:00:00"
7099expect_succ pulp workflow show --name " ${FUTURE_NAME} "
71- assert " $( echo " $OUTPUT " | jq -r ' .state ' ) " = " waiting "
100+ assert " $( echo " $OUTPUT " | jq -r ' .name ' ) " = " ${FUTURE_NAME} "
72101
73102# Clean up the future workflow
74103expect_succ pulp workflow cancel --name " ${FUTURE_NAME} "
0 commit comments