###git地址
https://github.com/arjick/jmeter-grpc-plugin/blob/master/README.md
###背景與目標
通過該插件實現針對grpc接口的測試,並且可以利用jmeter的所有測試特性。
在 https://github.com/yangliCypressTest/jmeter-grpc-plugin
的基礎上做了一部分的修改。
###工程優勢
- 無需編寫獨立的測試工程
- 有大量的報表支持實現多維度的指標監測
- 可以編寫測試用例,測試用例便於傳播
- 基本實現編碼
###入門教程
####一 環境準備
- Jdk和maven環境(jdk8.0以上,maven 3.5以上)
- 下載源代碼
ssh://[email protected]:2222/chunhua.kang/jmeter-grpc-plugin.git
####二 修改proto
在我們需要的測試的proto文件中加入一句話
option java_multiple_files = true;
例如:
syntax="proto3";
package auth;
option java_multiple_files = true;
// The Customer service definition.
service Auth {
rpc Login(LoginParams) returns (ResultResponse) {}
}
//空請求體
message LoginParams {
int64 requestId =1;
string username = 2;
string password = 3;
}
//通用返回體定義
message ResultResponse {
int64 requestId = 1;
bool success = 2;
string message = 3;
int32 userId = 4;
string token = 5;
}
####三 編譯工程
mvn clean install
得到jar: grpc-client-sampler.jar
####四 安裝插件
把grpc-client-sampler.jar複製到jmeter/lib/ext
####五 編寫測試用例
-
新建線程組
-
新建GrpcClientSampler
需要填寫參數主要包括
hostname
port
service(對應proto的service)
method(對應proto的method)
request(對應proto的method的request)
import auth.LoginParams;
import com.google.protobuf.Message;
public class RequestFactory {
public Message buildRequest() {
Message request = LoginParams.newBuilder().setRequestId(123).setUsername("admin").setPassword("1").build();
return request;
}
}
- 新建viewResultTree
####六 執行結果
####七 其他
附帶例子jmx:jmx/GrpcGroup.jmx
因爲jmeter沒有完整的google和netty包,無法執行grpc,如果下載官方完整的jmeter要手動去公共倉庫下載lib。我已經把所需要的lib下載好,打包好一個jmeter。啓動方式和原版一樣。
cd jmeter/bin
./jmeter