4 个版本 (破坏性更新)
0.4.0 | 2024年1月6日 |
---|---|
0.3.0 | 2024年1月6日 |
0.2.0 | 2024年1月4日 |
0.1.0 | 2024年1月4日 |
#633 in 命令行工具
33KB
751 行
💥 crashie — 一个盒子里的小小失败
Crashie 是一个命令行工具,在配置延迟后以随机退出代码退出。当您想要测试重启行为或需要应用程序失败的情况时使用它。
Sleeping for 12.72 seconds, then exiting with code 130
Exiting with code 130
使用示例
如果您想在10 ± 2秒后随机失败,使用SIGINT(代码 130
)或SIGKILL(代码 137
),请运行
crashie --sigint --sigkill --delay=10 --delay-stddev=2
crashie --signals=2,3 --delay=10 --delay-stddev=2
echo $?
或者,使用环境变量提供选项
CRASHIE_SIGNALS=2,3 CRASHIE_SLEEP_DELAY=10 CRASHIE_SLEEP_DELAY_STDDEV=2 crashie
Crashie 提供了 TCP 和 UDP 回声功能。如果您想测试健壮的连接逻辑、端口转发(特别是 Kubernetes 的 kubectl port-forward
)或类似方面,这非常有用。
要将 crashie 绑定到 TCP 套接字,请使用环境变量 CRASHIE_BIND_TCP_ECHO
或运行例如
crashie --bind-tcp-echo 127.0.0.1:8080
同样,UDP 回声也得到了支持。为此,请使用环境变量 CRASHIE_BIND_UDP_ECHO
或运行例如
crashie --bind-udp-echo 127.0.0.1:8080
在 Linux 上,您可以使用 netcat(例如,使用 TCP nc 127.0.0.1 8080 或使用 UDP
nc -u 127.0.0.1 8080
)测试回声行为。
为了简化 HTTP 连接的工作,您还可以绑定 HTTP "回声"。为此,请使用环境变量 CRASHIE_BIND_HTTP_ECHO
或运行例如
crashie --bind-http-echo 127.0.0.1:8080
您可以使用 curl(例如,使用 curl -v localhost:8080
)测试连接。目前,服务器始终忽略请求的详细信息,并返回 204 No Content
。
为了支持响应必须恰好是 200 OK
的情况——例如,用于入口检查的存活探测——您可以提供 CRASHIE_HTTP_LIVENESS_PROBE_PATH
或 --http-liveness-probe-path
参数
crashie --bind-http-echo 127.0.0.1:8080 --http-liveness-probe-path /.health/livez
在这种情况下,调用 curl -v localhost:8080
会得到一个 204 No Content
* processing: localhost:8080
* Trying [::1]:8080...
* Connected to localhost (::1) port 8080
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/8.2.1
> Accept: */*
>
< HTTP/1.1 204 No Content
< Server: crashie/0.3.0
< Date: Sat, 06 Jan 2024 14:44:53 GMT
< Content-Length: 0
< Cache-Control: no-cache, no-store
<
* Connection #0 to host localhost left intact
...而 curl -v localhost:8080/.health/livez
则会得到一个 200 OK
* processing: localhost:8080/.health/livez
* Trying [::1]:8080...
* Connected to localhost (127.0.0.1) port 8080
> GET /.health/livez HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/8.2.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: crashie/0.3.0
< Date: Sat, 06 Jan 2024 14:44:59 GMT
< Content-Length: 0
< Cache-Control: no-cache, no-store
<
* Connection #0 to host localhost left intact
通过Docker运行
该应用程序可以作为 sunside/crashie Docker镜像使用。要通过Docker运行crashie,例如使用:
docker run --rm sunside/crashie --help
提供命令行参数,就像在本地运行一样
docker run --rm sunside/crashie --sigint --sigkill --delay=10 --delay-stddev=2
echo $?
或者,通过环境变量提供配置
docker run --rm \
--env CRASHIE_SIGNALS=2,3 \
--env CRASHIE_SLEEP_DELAY=10 \
--env CRASHIE_SLEEP_DELAY_STDDEV=2 \
sunside/crashie
echo $?
从crates.io本地安装
要从crates.io安装crashie,运行:
cargo install crashie
从源码运行
要获取文档,运行:
cargo run -- --help
依赖项
~2.2–8MB
~63K SLoC