Skip to main content

Enterprise Workflow

Welcome to the Enterprise Workflow documentation!

When running API suites in a mature DevOps environment, you need more than just simple sequential testing. Tests must be fast, resilient to transient failures, and produce machine-readable outputs for your pipelines.

This example demonstrates how to combine Rumour's advanced features—Data-Driven Testing, Parallel Execution, Performance SLAs, and JUnit reporting—into a single, massive integration test suitable for an enterprise CI/CD pipeline.

1. The Scenario

We are testing a high-throughput /transactions endpoint. We have a CSV file containing 5,000 distinct financial transactions.

Our enterprise requirements are:

  1. Every transaction must be processed.
  2. The endpoint must respond within a 500ms strict SLA.
  3. Because 5,000 sequential requests would take too long, we must run them in parallel.
  4. Any random network drops should auto-heal to prevent flaky CI failures.
  5. The final output must be uploaded to Jenkins/GitHub Actions as a JUnit XML file.

2. Preparing the Artifacts

The Dataset (transactions.csv)

account_id,amount,currency
acc_881,150.00,USD
acc_992,20.50,EUR
# ... 4,998 more rows

The Request (process_transaction.toml)

We define a performance assertion (duration) alongside our standard status and JSON validation logic.

name = "Process Financial Transaction"

[request]
method = "POST"
url = "{{base_url}}/transactions"

[body]
type = "json"
raw = '{"account": "{{account_id}}", "total": {{amount}}, "currency": "{{currency}}"}'

[assert]
status = 201
"json.status" = { equal = "PROCESSED" }

# Enterprise SLA requirement
duration = 500

3. The Enterprise CLI Invocation

We combine several CLI flags to execute this massively parallel test suite.

rumour run ./process_transaction.toml \
--data ./transactions.csv \
--parallel \
--concurrency 100 \
--heal \
--junit ./results/test-report.xml \
-v

Breakdown of Flags:

  • --data: Triggers the dynamic workflow to loop over all 5,000 rows.
  • --parallel (-p): Tells Rumour not to wait for Row 1 to finish before starting Row 2.
  • --concurrency 100: Caps the number of simultaneous active TCP connections to 100 to prevent DDoS-ing the staging server.
  • --heal (-H): Enables exponential backoff and soft-healing if the staging server momentarily throttles connections (e.g., 429 Too Many Requests).
  • --junit: Silently generates a pipeline-compatible XML report.
  • -v: Prints the human-readable summary.

4. Pipeline Integration

Once the run completes, the terminal will output the standard Rumour summary, and results/test-report.xml will be generated.

GitHub Actions Example

You can seamlessly drop this Rumour invocation into a standard GitHub Actions workflow:

name: Enterprise Integration Tests

on:
push:
branches: [ "main" ]

jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rumour
run: curl -sSfL https://rumour.swahira.io/install.sh | bash

- name: Run Massive Data Suite
run: |
rumour run ./tests/process_transaction.toml \
--data ./tests/transactions.csv \
-p --concurrency 100 -H \
--junit results.xml

- name: Publish Test Results
uses: dorny/test-results-action@v1
if: always()
with:
name: Rumour SLA Tests
path: results.xml
reporter: java-junit

By leveraging Rumour's high-performance compiled execution engine and dependency graph, what would normally be a 45-minute sequential test suite can be completed in under a minute, with strict SLA guarantees and full CI/CD dashboarding.