Karate 空手道加特林集成:使用自定义http客户端时不生成报告

Karate 空手道加特林集成:使用自定义http客户端时不生成报告,karate,Karate,我目前正在使用空手道框架与gatling集成(空手道gatling版本为0.8.0.1)。当我使用ApacheHTTP客户端时,它为我正在使用的api生成了gatling报告。我的一个api端点要求对请求进行签名(Oauth签名),因此我不能将ApacheHttpClient用于此api,这就是为什么我使用以下提供请求签名的开源自定义http客户端 当我使用这个客户端时,它不会生成gatling报告并抛出以下错误 Generating reports... java.lang.reflect.

我目前正在使用空手道框架与gatling集成(空手道gatling版本为0.8.0.1)。当我使用ApacheHTTP客户端时,它为我正在使用的api生成了gatling报告。我的一个api端点要求对请求进行签名(Oauth签名),因此我不能将ApacheHttpClient用于此api,这就是为什么我使用以下提供请求签名的开源自定义http客户端

当我使用这个客户端时,它不会生成gatling报告并抛出以下错误

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)
请建议如何在使用上述客户端时生成gatling报告。
注意:我需要请求签名,因此我需要上述客户端。

首先-您可以轻松获得OAuth使用空手道,请参阅:

第二,因为只有一个API需要OAuth,所以您可以只使用Java代码,然后将任何令牌传递回所有其他调用,并且只使用空手道

请注意,即使您想在Gatling中插入自定义调用,您也可以这样做:


空手道不支持使用自定义客户端,所以请不要要求它。

谢谢@Peter。。。但是我正在使用上面的定制客户机来进行签名请求,并且工作正常。在我的例子中,我要求几乎每个请求都要签名,所以上面的开源项目使用okhttp来实现这一点。我只是想集成gatling,这样才能得到回复,但在生成报告时,它抛出了错误。@user3531900我没有更多的东西要添加到上面的答案中。我强烈建议您在空手道中实现签名,我提供了一些示例。有一些内部API-s涉及到你可能会丢失,因为你自己去了,所以你要责怪自己:
context.capturePerfEvent("myRpc-" + sleepTime, startTime, endTime);