Scenarios

Availability

always-up

Always returns 200 OK

https://origin.crashloop.ing/scenarios/always-up
method
GET
expected_status
200-399
interval_seconds
60
always-down

Always returns 500 (permanent incident)

https://origin.crashloop.ing/scenarios/always-down
method
GET
expected_status
200-399
interval_seconds
60
notes
Expect incident to stay open
hourly-outage UP · 34m 51s outage in

500 for 2 minutes at the top of every hour (UTC), else 200

https://origin.crashloop.ing/scenarios/hourly-outage
method
GET
expected_status
200-399
interval_seconds
30
notes
Expect incident near :00, recover by ~:03 with default thresholds
outage-15m UP · 4m 51s outage in

500 for 90 seconds every 15 minutes (UTC), else 200

https://origin.crashloop.ing/scenarios/outage-15m
method
GET
expected_status
200-399
interval_seconds
30
notes
Faster open/recover loop than hourly-outage
flaky-20

200 by default, ~20% chance of 500

https://origin.crashloop.ing/scenarios/flaky-20
method
GET
expected_status
200-399
interval_seconds
30
notes
Mostly blips at failure_threshold 4

Responses

wrong-body

200 with body WRONG; fails body assertion expecting OK

https://origin.crashloop.ing/scenarios/wrong-body
method
GET
expected_status
200-399
body_contains
OK
interval_seconds
60
expect-ok

200 with body OK; pair with wrong-body checks

https://origin.crashloop.ing/scenarios/expect-ok
method
GET
expected_status
200-399
body_contains
OK
interval_seconds
60
only-204

204 No Content with empty body

https://origin.crashloop.ing/scenarios/only-204
method
GET
expected_status
204-204
interval_seconds
60
timeout

Delays 11s before 200 (past chk's ~10s probe timeout)

https://origin.crashloop.ing/scenarios/timeout
method
GET
expected_status
200-399
interval_seconds
300
notes
Use 5m interval; expensive on workers
body-stall

Sends part of the body, then stalls 11s before completing

https://origin.crashloop.ing/scenarios/body-stall
method
GET
expected_status
200-399
body_contains
response completed
interval_seconds
300
notes
Use 5m interval; body read should time out before the final chunk
chunked-response

Streams a 200 response in three chunks

https://origin.crashloop.ing/scenarios/chunked-response
method
GET
expected_status
200-399
body_contains
chunk three
interval_seconds
60
notes
Assert the final chunk arrives
compressed-body

Returns a gzip-compressed response body

https://origin.crashloop.ing/scenarios/compressed-body
method
GET
expected_status
200-399
body_contains
compressed response
interval_seconds
60
notes
Decode the gzip body and assert its content
oversized-body

Returns a response body larger than 1 MiB with a marker past 256 KiB

https://origin.crashloop.ing/scenarios/oversized-body
method
GET
expected_status
200-399
body_contains
oversized-body-end-marker
interval_seconds
60
notes
Expect body_assertion_failed: body_truncated at chk's 256 KiB body scan cap
deflate-body

Returns a deflate-compressed response body

https://origin.crashloop.ing/scenarios/deflate-body
method
GET
expected_status
200-399
body_contains
deflate response
interval_seconds
60
notes
Decode the deflate body and assert its content
brotli-body

Returns a Brotli-compressed response body

https://origin.crashloop.ing/scenarios/brotli-body
method
GET
expected_status
200-399
body_contains
Brotli response
interval_seconds
60
notes
Decode the Brotli body and assert its content
cloudflare-challenge

403 with Cloudflare's security challenge header

https://origin.crashloop.ing/scenarios/cloudflare-challenge
method
GET
expected_status
200-399
interval_seconds
60
notes
Expect security_challenge:cloudflare when cf-mitigated survives the proxy
aws-waf-challenge

202 with AWS WAF's challenge action

https://origin.crashloop.ing/scenarios/aws-waf-challenge
method
GET
expected_status
202
interval_seconds
60
notes
Expect security_challenge:aws_waf from x-amzn-waf-action: challenge
aws-waf-captcha

405 with AWS WAF's CAPTCHA action

https://origin.crashloop.ing/scenarios/aws-waf-captcha
method
GET
expected_status
405
interval_seconds
60
notes
Expect security_challenge:aws_waf from x-amzn-waf-action: captcha
abrupt-disconnect

Disconnects after sending a partial response body

https://origin.crashloop.ing/scenarios/abrupt-disconnect
method
GET
expected_status
200-399
body_contains
response completed
interval_seconds
60
notes
Read until the missing marker and expect an incomplete response-body read

Redirects

redirect-once

302 to /scenarios/always-up

https://origin.crashloop.ing/scenarios/redirect-once
method
GET
expected_status
200-399
follow_redirects
true
notes
Also create a nofollow check expecting failure or 302
redirect-chain

Starts a 5-hop redirect chain ending at /redirect/0 with 200 OK

https://origin.crashloop.ing/scenarios/redirect-chain
method
GET
expected_status
200-399
follow_redirects
true
interval_seconds
60
redirect-loop

Redirects to itself until the client reaches its redirect limit

https://origin.crashloop.ing/scenarios/redirect-loop
method
GET
expected_status
200-399
follow_redirects
true
interval_seconds
60
notes
Expect the client's redirect-limit failure

Request methods

POST body

POST only; echoes request body as 200, other methods 405

https://origin.crashloop.ing/scenarios/echo-post
POST request required
method
POST
expected_status
200-399
interval_seconds
60
notes
Send a small request body and assert it is returned
PUT body

PUT only; echoes request body as 200, other methods 405

https://origin.crashloop.ing/scenarios/echo-put
PUT request required
method
PUT
expected_status
200-399
interval_seconds
60
notes
Send a small request body and assert it is returned
PATCH body

PATCH only; echoes request body as 200, other methods 405

https://origin.crashloop.ing/scenarios/echo-patch
PATCH request required
method
PATCH
expected_status
200-399
interval_seconds
60
notes
Send a small request body and assert it is returned
DELETE body

DELETE only; echoes request body as 200, other methods 405

https://origin.crashloop.ing/scenarios/echo-delete
DELETE request required
method
DELETE
expected_status
200-399
interval_seconds
60
notes
Send a small request body and assert it is returned
OPTIONS body

OPTIONS only; echoes request body as 200, other methods 405

https://origin.crashloop.ing/scenarios/echo-options
OPTIONS request required
method
OPTIONS
expected_status
200-399
interval_seconds
60
notes
Send a small request body and assert it is returned
Request header

Returns the X-Crash-Loop-Test request header as 200

https://origin.crashloop.ing/scenarios/echo-header
method
GET
expected_status
200-399
interval_seconds
60
notes
Set X-Crash-Loop-Test and assert its value is returned