【发布时间】:2020-10-29 15:10:59
【问题描述】:
我正在评估不同的负载测试工具。在尝试了 JMeter 并在运行和查看测试结果时出现了两个异常之后,我想试一试 Gatling。阅读各种资源后,我无法找到如何执行自己的 Java 代码的想法。
我知道 Gatling 是用 Scala 编写的,但它在 JDK 上运行,并且 Scala 能够不合作/调用 Java 代码。所以问题是,如何将两者结合起来,是否有任何可用资源。
【问题讨论】:
我正在评估不同的负载测试工具。在尝试了 JMeter 并在运行和查看测试结果时出现了两个异常之后,我想试一试 Gatling。阅读各种资源后,我无法找到如何执行自己的 Java 代码的想法。
我知道 Gatling 是用 Scala 编写的,但它在 JDK 上运行,并且 Scala 能够不合作/调用 Java 代码。所以问题是,如何将两者结合起来,是否有任何可用资源。
【问题讨论】:
您可以在任何 Scala 类中导入和调用您的 java 类。 所以...示例:
我有带有加特林场景的 scala 类
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import utils.NewRandom
class Example extends Simulation {
val protocol = http.baseUrl("https://httpbin.org")
val request = http("get request")
.get("/get")
val scn = scenario("Http bin scenario")
.exec(request)
before({
println(s"java random ${new NewRandom().getJavaRandom}")
})
setUp(
scn.inject(
atOnceUsers(1)
).protocols(protocol)
)
}
Gatling 有 before() 和 after() 在加载运行之前和之后执行的方法https://gatling.io/docs/current/general/simulation_structure/#hooks
如果您注意上面的代码(在before() 方法中),您将看到我创建java 对象和调用方法的行。
Java 类:
package utils;
import java.util.Random;
public class NewRandom {
public Integer getJavaRandom() {
return new Random().nextInt();
}
}
【讨论】: