Skip to main content

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.

note

ordered defaults to true — you must explicitly set ordered = false to allow parallel scheduling.

Ordered vs Unordered

SettingBehavior
ordered = true (default)Requests execute sequentially in list order
ordered = falseRequests 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:

  1. step1_get_user.toml is executed, succeeding and making the user_id variable available.
  2. step2_create_post.toml is executed next. It creates a post and extracts the post_id variable from the response.
  3. step3_get_post.toml is 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:

  1. step1_get_user runs and finishes.
  2. step2_create_post starts, runs, and finishes.
  3. step3_get_post starts, runs, and finishes.
  • Flow: step1step2step3

Parallel Run (Unordered + -p)

Requests run as soon as they have the variables they need:

  1. step1_get_user and step2_create_post start at the exact same time (since neither one needs variables from the other).
  2. step3_get_post waits, because it cannot run until it gets the post_id generated by step2.
  3. Once step2 finishes, step3 starts 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}}"