如何设置 Gatling 以使用每个虚拟用户的客户端证书?

How to setup Gatling to use client certificates per virtual user?

如何设置 Gatling 以使用每个虚拟用户的客户端证书?

我正在为受客户端证书保护的 API 准备 Gatling 模拟,目前我只设法为 Gatling 配置中的所有模拟设置使用一个客户端证书

ssl {
  keyStore {
    #type = ""
    file = "C:/client_certificates/00001.pfx"
    password = "password"
    #algorithm = ""
  }
}

但是,我想为不同的虚拟用户设置不同的客户端证书(客户端证书可以从可用客户端证书列表中随机选择或循环选择)。 Galing 文档提到了 keymanagerfactoryperUserKeyManagerFactory 函数,但没有关于如何使用它的明确示例。

问题中提供的配置键在io.gatling.core.ConfigKeys.ssl.keyStore中引用。读取值并将其传递给 Ssl.newKeyManagerFactory 以创建 KeyManagerFactory.


perUserKeyManagerFactory 接受一个函数 Long => KeyManagerFactory,它根据虚拟用户的 ID 构造 KeyManagerFactory


知道了我们可以这样写:

import io.gatling.commons.util.Ssl

...
.perUserKeyManagerFactory { userId =>
  val fileName = f"C:/client_certificates/$userId%05d.pfx"
  Ssl.newKeyManagerFactory(None, fileName, "password", None)
}

使用 the f interpolator,我们可以轻松地用零填充 userId 以获得 5 位数字。

循环到select文件,我们可以写${userId % totalNumber}而不是$userId