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
- 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
- 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
- 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
- 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
- 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