You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gatling报告中自定义检查失败未标记为KO的问题求助

问题原因及解决方案

你遇到的问题核心是误用了transform方法实现校验:

  • transform的作用是转换响应数据格式,它返回的Failure只是转换后的结果值,不会触发Gatling的检查失败判定逻辑,所以请求始终被标记为OK。
  • 要实现自定义校验,必须使用Gatling提供的validate方法,该方法会将返回的Validation结果作为检查是否通过的依据。

修改后的代码示例

调整自定义检查的实现,用validate替代transform:

private ChainBuilder ocsp() {
    ...
    .doIf(session -> !session.getBoolean("usePost"))
        .then(
            exec(
                http("OCSP GET request")
                    .get("#{ocspUrlGet}")
                    .header("Accept", "application/ocsp-response")
                    .check(ocspStatusCheck)
                    .check(status().is(200))
            )
        );
}

CheckBuilder ocspStatusCheck = bodyBytes().validate("OCSP Status Check", (byte[] rawBytes) -> {
    try {
        OCSPResp ocspResp = new OCSPResp(rawBytes);
        BasicOCSPResp basic = (BasicOCSPResp) ocspResp.getResponseObject();
        for (SingleResp srsp : basic.getResponses()) {
            BigInteger certid = srsp.getCertID().getSerialNumber();
            if (new BigInteger(ocspRequest.getSerial(), 16).equals(certid)) {
                CertificateStatus stat = srsp.getCertStatus();
                if (stat == CertificateStatus.GOOD) {
                    return Validation.Failure("OCSP processing error: ");
                }
            }
        }
        return Validation.Failure("Certificate serial number " + ocspRequest.getSerial() + " not found in OCSP response or its status was not GOOD.");
    } catch (Exception e) {
        // Catch any parsing or processing errors and return a Failure
        return Validation.Failure("OCSP processing error: " + e.getMessage());
    }
});

关键说明

  • validate方法需要传入两个参数:第一个是检查名称(用于日志和报告展示),第二个是校验逻辑函数。
  • 函数返回Validation.Failure()时,Gatling会将该请求标记为失败,并在报告和日志中显示对应错误信息;返回Validation.Success()则判定检查通过。

内容的提问来源于stack exchange,提问作者Zorka Csendes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:13:10