Интеграция каратэ-гатлинга: отчеты не создаются при использовании пользовательского http-клиента - PullRequest
0 голосов
/ 27 января 2019

В настоящее время я использую каркас карате с интеграцией Гатлинга (версия карате-гатлинга - 0.8.0.1).Когда я использую Apache Http-клиент, он генерирует отчёты gatling для API, который я бью.Одна из моих конечных точек API требует, чтобы запрос был подписан (подпись Oauth), поэтому я не могу использовать ApacheHttpClient для этого API, поэтому для этого я использую следующий пользовательский 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)

Пожалуйста, предложите, как сгенерировать отчет о гатлинге при использовании вышеупомянутого клиента.Примечание: мне нужно подписать запрос, поэтому мне нужно это выше клиента.

1 Ответ

0 голосов
/ 27 января 2019

Во-первых, вы можете легко настроить OAuth для работы с каратэ, см.: https://github.com/intuit/karate/tree/master/karate-demo/src/test/java/demo/oauth

Во-вторых, поскольку OAuth нужен только одному API, вы можете использовать код Java только для этого, а затем передать любые токены обратновсе ваши другие звонки, и используйте только каратэ.

И, пожалуйста, обратите внимание, что даже если вы хотите настроить пользовательский вызов в Gatling, вы можете сделать это: https://github.com/intuit/karate/tree/master/karate-gatling#custom

context.capturePerfEvent("myRpc-" + sleepTime, startTime, endTime);

ИспользованиеПользовательский клиент не поддерживается в каратэ, поэтому, пожалуйста, не спрашивайте его.

...