Profiles

Realistic failure scenarios usually combine several effects, and tuning every parameter by hand for each scenario is repetitive. A profile bundles a common assault combination into a single config line.

quarkus.goblin.assault.profile=SLOW_FAILURE

Available profiles:

Profile

Assaults enabled

Sensible defaults

NONE

none (manual mode, assault.type is used instead)

SLOW_FAILURE

latency + exception

Latency 100-5000 ms, RuntimeException("Goblin chaos: simulated exception")

INTERMITTENT

HTTP status

HTTP 500 — combine with quarkus.goblin.target.level to control frequency

TIMEOUT

latency

Fixed 30000 ms (30 s) — ideal for exercising client-side @Timeout

Profiles only set the assault toggles and parameters: they never arm or disarm a layer, nor touch the client-side toggles. INTERMITTENT (HTTP status) only fires on the HTTP_IN layer, while the latency and exception of SLOW_FAILURE and TIMEOUT fire on whichever layer the request resolves to (HTTP_IN, SERVICE, DATABASE, MESSAGING).

Profiles are a starting point, not a lock-in. Once a profile is active, each assault toggle stays independently overridable through the Dev UI or JSON-RPC, and those overrides survive restarts like any other Dev UI change.
At startup, a non-NONE profile takes precedence over the static configuration: fromConfig first copies the static assault.type and per-assault parameters, then the profile defaults are applied on top — so a configured profile overrides the static toggles and parameters at boot. Tune the values afterwards through the Dev UI if needed.
Profile selector in the Dev UI

The Profile section of the Chaos Dashboard: pick a predefined assault mode in one click — the active profile also appears in the status bar.

The active profile is displayed in the Dev UI status bar and included in the Markdown report and the describeAssaults() snapshot recorded in the assault history.