Ordered Suite Runs
When ordered = true in a suite file (which is the default), Rumour executes requests in the exact sequence they appear in the requests array. This is critical for workflows where later steps depend on state established by earlier ones.
How It Works
When ordered = true, Rumour runs requests sequentially in the exact order they are listed in the requests array:
step1 → step2 → step3
Each request waits for the previous request to finish before starting. This is the default behavior, guaranteeing a predictable step-by-step workflow even if requests do not declare explicit dependencies on one another.
ordered defaults to true — you must explicitly set ordered = false to allow parallel scheduling.
Ordered vs Unordered
| Setting | Behavior |
|---|---|
ordered = true (default) | Requests execute sequentially in list order |
ordered = false | Requests are eligible for parallel scheduling via -p |
Example
A three-step pipeline: fetch a user, create a post, then fetch a post.
File Layout
suite_examples/02_ordered_execution/
├── workspace.env.toml
├── ordered.suite.toml
├── step1_get_user.toml
├── step2_create_post.toml
└── step3_get_post.toml
ordered.suite.toml
[suite]
name = "Ordered Pipeline"
description = "Runs steps 1, 2, 3 in strict sequence"
ordered = true
requests = [
"step1_get_user.toml",
"step2_create_post.toml",
"step3_get_post.toml",
]
step1_get_user.toml
name = "step1_get_user"
[request]
method = "GET"
url = "{{base_url}}/users/1"
[assert]
status = 200
[extract]
user_id = "id"
step2_create_post.toml
name = "step2_create_post"
[request]
method = "POST"
url = "{{base_url}}/posts"
[headers]
Content-Type = "application/json"
[body]
type = "json"
raw = '{"title":"Ordered Post","body":"created after step1","userId":1}'
[assert]
status = 201
[extract]
post_id = "id"
step3_get_post.toml
name = "step3_get_post"
[request]
method = "GET"
url = "{{base_url}}/posts/{{post_id}}"
[assert]
status = 200
Run
rumour run ./suite_examples/02_ordered_execution/ordered.suite.toml -v
Output
~/workspace/testing main ❯ rumour run ./suite_examples/02_ordered_execution/ordered.suite.toml -v
GET http://localhost:4000/api/v2/users/1
URL: http://localhost:4000/api/v2/users/1
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step1_get_user.toml (4ms)
POST http://localhost:4000/api/v2/posts
Header: Content-Type: application/json
URL: http://localhost:4000/api/v2/posts
Body (json): {"title":"Ordered Post","body":"created after step1","userId":1}
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step2_create_post.toml (7ms)
GET http://localhost:4000/api/v2/posts/1
URL: http://localhost:4000/api/v2/posts/1
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step3_get_post.toml (0ms)
✓ /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/ordered.suite.toml → PASS (3 Pass, 0 Fail, 0 Skip)
╭──────────────────────────────────────────────────────────────────────────╮
│ RUMOUR EXECUTION REPORT │
├──────────────────────────────────────────────────────────────────────────┤
│ Total Requests: 3 │
│ Successful: 3 │
│ Failed: 0 │
│ Skipped: 0 │
│ Success Rate: 100.0% │
│ Total Time: 15ms │
╰──────────────────────────────────────────────────────────────────────────╯
✓ Successful Requests:
- /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step1_get_user.toml [200] [5ms]
- /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step2_create_post.toml [201] [7ms]
- /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step3_get_post.toml [200] [1ms]
Actionable Recommendations:
→ Run with --json to export this report for your CI/CD pipeline.
Explanation
Because ordered = true is set in the suite file, the execution runs sequentially:
step1_get_user.tomlis executed, succeeding and making theuser_idvariable available.step2_create_post.tomlis executed next. It creates a post and extracts thepost_idvariable from the response.step3_get_post.tomlis executed last. It resolves{{post_id}}dynamically to retrieve the created post.
Each step waits for the preceding step to finish, preserving the declared execution order.
Ordered + Parallel
When ordered = true in the suite file, even if the parallel flag -p / --parallel is passed to the CLI, sequential ordering wins. The requests will still execute one by one in the declared order.
# ordered = true in suite, -p flag passed → still sequential per suite order
rumour run ./suite_examples/02_ordered_execution/ordered.suite.toml -p
To get true parallel execution, set ordered = false in the suite:
[suite]
name = "Unordered (Parallel-Eligible)"
ordered = false
requests = [
"step1_get_user.toml",
"step2_create_post.toml",
"step3_get_post.toml",
]
rumour run ./suite_examples/02_ordered_execution/unordered.suite.toml -p
Output
~/workspace/testing main ❯ rumour run ./suite_examples/02_ordered_execution/unordered.suite.toml -p
GET http://localhost:4000/api/v2/users/1
POST http://localhost:4000/api/v2/posts
Header: Content-Type: application/json
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step2_create_post.toml (2ms)
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step1_get_user.toml (3ms)
GET http://localhost:4000/api/v2/posts/9
✓ SUCCESS: /home/bugsfounder/workspace/testing/suite_examples/02_ordered_execution/step3_get_post.toml (0ms)
✓ ./suite_examples/02_ordered_execution/unordered.suite.toml → PASS (3 Pass, 0 Fail, 0 Skip)
╭──────────────────────────────────────────────────────────────────────────╮
│ RUMOUR EXECUTION REPORT │
├──────────────────────────────────────────────────────────────────────────┤
│ Total Requests: 3 │
│ Successful: 3 │
│ Failed: 0 │
│ Skipped: 0 │
│ Success Rate: 100.0% │
│ Total Time: 7ms │
╰──────────────────────────────────────────────────────────────────────────╯
Actionable Recommendations:
→ Use -v -t to see detailed latency and response diagnostics.
→ Run with --json to export this report for your CI/CD pipeline.
Comparing Execution Flow
Ordered Run (Sequential)
Requests run one-by-one in a strict line:
step1_get_userruns and finishes.step2_create_poststarts, runs, and finishes.step3_get_poststarts, runs, and finishes.
- Flow:
step1➔step2➔step3
Parallel Run (Unordered + -p)
Requests run as soon as they have the variables they need:
step1_get_userandstep2_create_poststart at the exact same time (since neither one needs variables from the other).step3_get_postwaits, because it cannot run until it gets thepost_idgenerated bystep2.- Once
step2finishes,step3starts immediately using the resolved variable.
- Flow:
[step1 & step2 in parallel]➔step3
Per-Node Override
Individual request files can also force sequential execution regardless of suite ordering by setting ordered = true at the request level:
# users/get_profile.toml
ordered = true
[request]
method = "GET"
url = "{{base_url}}/users/{{user_id}}"