Dev UI

In dev mode, the Network faults card lists every target and applies and ends faults on the running application.

Enabling It

Fault injection is build-time configuration, so the card needs the flag in the dev profile:

%dev.quarkus.network-faults.enabled=true

Without it the card says so and shows nothing else. With it, every outbound connection the configuration describes is proxied as it is in tests, and the card lists one row per target: its name and the property it came from, the proxy and upstream addresses, the active fault, and its connections and bytes.

Applying a Fault

Each row has a drop-down of faults and an Apply button. A fault is written as the test API would call it, lower case with dashes, and an argument after a colon:

Spec Fault

unavailable, connect-timeout, hangs

unavailable(), connectTimeout(), hangs()

slow:10s

slow(Duration), in Quarkus' duration syntax: 500ms, 10s, 2m, PT10S

dies-mid-request, closes

diesMidRequest(), closes()

dies-mid-request:512, closes:512, hangs:512

afterBytes(512)

dies-mid-request:next-write, closes:next-write, hangs:next-write

onNextWrite()

dies-mid-request:headers, closes:headers, hangs:headers

Http.afterHeaders()

dies-mid-request:chunks:2, closes:chunks:2, hangs:chunks:2

Http.afterChunks(2)

dies-mid-request:sse:3, closes:sse:3, hangs:sse:3

Http.afterSseEvents(3)

Applying a fault ends whatever fault the target has first, so switching faults is one click; the test API throws instead, see Faults. End ends the fault, End all faults every fault of every target, and Drop connections resets the live connections once.

The card applies faults to whole targets: respondsWith, the faults under advanced() and faults on some requests are only reachable from the API.

Events

Events opens the event log of a target, oldest first: the listener binding and unbinding, faults starting and ending, connections opening, closing and being reset, every HTTP request seen, and upstream connects that failed. The log keeps the last 500 events.