1 个不稳定版本
0.1.2 | 2022 年 5 月 28 日 |
---|
#757 在 测试
每月 21 次下载
41KB
966 代码行
Hailstorm
Hailstorm 是一个受 Locust 启发的分布式负载测试框架。
示例设置
以下示例展示了如何使用提供的示例二进制文件配置和启动模拟。为了更好地控制 hailstorm 及其功能,我建议将 hailstorm 作为依赖项使用,并创建自己的代理和控制器组件。
控制器
环境变量定义
# .env.controller
hs_address="0.0.0.0:50051"
hs_clients_distribution.hailstone="ln(1 + t/1000) * (sin(t/10) + 1) * 1000"
hs_script_path="simulation-script.rn"
然后可以使用 rune 脚本定义客户端行为。
// simulation-script.rn
struct hailstone {
id
}
impl hailstone {
pub fn new() {
Self { id: 10 }
}
pub fn register_user(user) {
user.register_action(10.0, Self::do_http_req)
}
pub async fn do_http_req(self) {
let res = http::get("http://someserver:80").await;
}
}
然后可以使用以下命令启动控制器:
zenv -f .env.controller -- ./target/release/examples/controller
代理
环境变量定义
# .env.agent
hs_upstream.lvl1=https://127.0.0.1:50051
然后可以使用以下命令启动一个或多个代理:
hs_address=0.0.0.0:50151 zenv -f .env.agent -- ./target/release/examples/agent
hs_address=0.0.0.0:50152 zenv -f .env.agent -- ./target/release/examples/agent
hs_address=0.0.0.0:50153 zenv -f .env.agent -- ./target/release/examples/agent
多级代理
代理也可以附加到其他代理,以实现更分布式的拓扑。每个代理也可以有多个父代理,以减少数据丢失的可能性。
环境变量定义
# .env.agent.lvl2
hs_upstream.lvl1_0=https://127.0.0.1:50151
hs_upstream.lvl1_1=https://127.0.0.1:50152
hs_upstream.lvl1_2=https://127.0.0.1:50153
如前所述,可以启动代理:
hs_address=0.0.0.0:50251 zenv -f .env.agent.lvl2 -- ./target/release/examples/agent
hs_address=0.0.0.0:50252 zenv -f .env.agent.lvl2 -- ./target/release/examples/agent
hs_address=0.0.0.0:50253 zenv -f .env.agent.lvl2 -- ./target/release/examples/agent
依赖项
~15–27MB
~454K SLoC