我目前正在使用具有gatling集成的空手道框架(karate-gatling版本为0.8.0.1)。当我使用Apache Http客户端时,它会为我要访问的api生成加特林报告。我的api端点之一要求对请求进行签名(Oauth签名),因此我无法为此API使用ApacheHttpClient,这就是为什么我为此使用以下提供请求签名的开源自定义http客户端
https://github.com/gtnicol/karate-okhttp-signpost
当我使用此客户端时,它不会生成加特林报告并抛出以下错误
Generating reports...
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:50)
at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33)
Caused by: java.lang.UnsupportedOperationException: There were no requests sent during the simulation, reports won't be generated
at io.gatling.charts.report.ReportsGenerator.generateFor(ReportsGenerator.scala:48)
at io.gatling.app.RunResultProcessor.generateReports(RunResultProcessor.scala:76)
at io.gatling.app.RunResultProcessor.processRunResult(RunResultProcessor.scala:55)
at io.gatling.app.Gatling$.start(Gatling.scala:68)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:45)
at io.gatling.app.Gatling$.main(Gatling.scala:37)
at io.gatling.app.Gatling.main(Gatling.scala)
请建议在使用上述客户端时如何生成加特林报告。 注意:我需要请求签名,因此我需要以上客户端。
答案 0 :(得分:1)
首先-您可以轻松地使OAuth与Karate一起使用,请参阅:https://github.com/intuit/karate/tree/master/karate-demo/src/test/java/demo/oauth
第二个-由于只有一个API需要OAuth,因此您可以仅使用Java代码,然后将所有令牌传递回所有其他调用,并且仅使用空手道。
请注意,即使您想在加特林(Gatling)记录自定义调用,也可以执行以下操作:https://github.com/intuit/karate/tree/master/karate-gatling#custom
context.capturePerfEvent("myRpc-" + sleepTime, startTime, endTime);
空手道不支持使用自定义客户端,因此请不要要求它。