3 个版本
0.1.3 | 2022 年 6 月 3 日 |
---|---|
0.1.2 | 2022 年 5 月 29 日 |
0.1.0 | 2022 年 5 月 28 日 |
23 在 #负载测试
25KB
549 代码行
RuMeter
使用 Rust 编写负载测试脚本的负载测试平台。类似于 JMeter,但更倾向于使用 SDK,而不是 GUI 工具。
- 快速 RuMeter 的零成本抽象为您提供了裸机性能。
- 可扩展 RuMeter 易于使用和开发自己的组件。
- 脚本 RuMeter 只是一个 SDK,最佳使用方法是将其用于脚本中。
示例
使用 RuMeter 进行基本的 HTTP API 负载测试。
请确保在 Cargo.toml 中添加依赖项
[dependencies]
rumeter-component = "0.1.3"
然后,您应该首先定义自己的控制器。您的控制器必须实现 Controller 特质
#[derive(Default, Clone)]
pub struct SimpleController;
#[async_trait]
impl Controller for SimpleController {
async fn run(&self) -> Vec<RecordData> {
let mut headers = HeaderMap::new();
headers.append("Access-Token", HeaderValue::from_static("123456"));
let samp = HttpSampler::new(
"test hello",
"http://127.0.0.1:8088/hello",
Method::GET,
headers,
None,
);
let re = samp.run().await;
vec![re]
}
}
然后,在 main.rs 中
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.with_span_events(FmtSpan::CLOSE)
.init();
let group = ThreadGroup::new(10, Duration::from_secs(1), -1, Some(Duration::from_secs(300)));
// let group = ThreadGroup::new(10, Duration::from_secs(1), 10, None);
let out = FileOutput::new(File::create("http.rtl").unwrap());
group.start(SimpleController::default(), Arc::new(Mutex::new(out))).await;
info!("test finished");
Ok(())
}
更多示例可以在 这里 找到。
生成负载测试报告
rtl(RuMeter 测试日志)文件是一种 csv 类型的文件。您可以使用 JMeter 生成类似这样的 html 风格报告
$ jmeter -g [your.rtl] -o [report_path]
待办事项
现在只实现了少数几个采样器。在未来的版本中,将实现更多常用采样器。
许可证
本项目采用 MIT 许可证。
贡献
除非您明确声明,否则您提交给 RuMeter 的任何有意贡献都应按 MIT 许可,不附加任何额外条款或条件。
依赖项
~7–23MB
~312K SLoC