こんにちは、平田です。
Gatling 3.7からJava(とKotlin)で負荷テストが書けるようになったので試してみました。
Gatlingは、主にWebを対象とした負荷テストツールです。Scalaのコードでシナリオを記述し、負荷テスト実行後にレポートを生成します。Scalaで記述すると言っても実際には負荷テストに特化したDSLを一生懸命コピペするだけなのですが、「Scala…うっ!」となることもあります。
去年の11月にリリースされたGatling 3.7でJava向けのDSLが入ったようで、負荷テストをJavaで書けるようになりました。Kotlinでも書けるようですが、単にJava向けDSLをKotlinから呼ぶだけらしく、Javaと相互運用性のある他のJVM言語でも書けそうです。
ローカルのWebサーバに対してHTTPを投げるテストを書いてみました(作ったもの)。
public class HomeVisitor extends Simulation {
HttpProtocolBuilder httpProtocol = http
.warmUp("http://localhost:8080")
.baseUrl("http://localhost:8080");
ScenarioBuilder scenario = scenario("someone visits home and see a file 10 times")
.repeat(10).on(
exec(http("visits home").get("/"))
.pause(1)
.exec(http("sees a file").get("/pom.xml"))
);
{
setUp(scenario.injectOpen(rampUsers(100).during(5)))
.protocols(httpProtocol);
}
}
なんと言うか、DSLに関してはScalaとほぼ同じですね。当たり前ですが実行結果のレポートも同じものが出ます。
Java 対応が効いてくるのは、DSL以外の記述やエディタなどJavaのエコシステムが使える点になると思います。