Scala 使用进料器传入收割台值(转管)

Scala 使用进料器传入收割台值(转管),scala,gatling,Scala,Gatling,我正试图对使用的服务器使用gatling。问题是需要为每个请求生成报头,并传入密钥id和密钥。这使得发送来自多个用户的请求变得困难。我用硬编码的钥匙来工作。但是,我想模拟使用馈线的多个用户。我似乎无法让它工作,因为馈线没有正确地传递到函数调用中 我有以下代码: class TestRampSimulation extends Simulation { { ... def generateHawk(key: String, secret: String, method: String, url:

我正试图对使用的服务器使用gatling。问题是需要为每个请求生成报头,并传入密钥id和密钥。这使得发送来自多个用户的请求变得困难。我用硬编码的钥匙来工作。但是,我想模拟使用馈线的多个用户。我似乎无法让它工作,因为馈线没有正确地传递到函数调用中

我有以下代码:

class TestRampSimulation extends Simulation {
{
...
def generateHawk(key: String, secret: String, method: String, url: String): String = {
    val hawkCredentials: HawkCredentials = new HawkCredentials.Builder()
                                                     .keyId(key)
                                                     .key(secret)
                                                     .algorithm(HawkCredentials.Algorithm.SHA256)
                                                     .build();
    val hawkClient: HawkClient = new HawkClient.Builder().credentials(hawkCredentials).build();
    val authorizationHeader: String = hawkClient.generateAuthorizationHeader(URI.create(url), method, null, null, null, null);
    return authorizationHeader
  }

  val nbUsers = Integer.getInteger("users", 1).toInt
  val rmpTime = Integer.getInteger("ramp", 1).toInt

  val feeder = csv("tokens.csv").random

  val scn = scenario("Test API")
    .feed(feeder)
    .exec(http("[POST] /some/api/call")
      .post("/some/api/call")
      .headers(Map("Authorization" -> "".concat(generateHawk("${keyId}",
                                                      "${keySecret}",
                                                      "POST",
                                                      "http://localhost:8080/some/api/call"))))
      .check(status.is(201)))

  setUp(scn.inject(rampUsers(nbUsers) over (rmpTime seconds)).protocols(httpConf))
}

当我这样做时,key和secret被计算为“${keyId}”/“${keySecret}”,而不是feeder值。我想做的是可能的吗?

如果希望每次都执行某些操作,而不仅仅是在加载场景时,则必须传递函数,请参见

.header(“授权”,会话=>
为了{

keyId如果希望每次都执行某些操作,而不仅仅是在加载场景时,则必须传递函数,请参见

.header(“授权”,会话=>
为了{

keyId我将查看签名计算器,我在查看文档时忽略了它。为清楚起见,这似乎是获取会话属性的正确方法:会话(“keyId”)。如[String]在上述代码段的上下文中。我将查看签名计算器,在查看文档时我忽略了这一点。为清楚起见,在上述代码段的上下文中,这似乎是获取会话属性的正确方法:session(“keyId”)。as[String]。
.header("Authorization", session =>
  for {
    keyId <- session("keyId").validate[String]
    keySecret <- session("keySecret").validate[String]
  } yield generateHawk(keyId, keySecret, "POST", "http://localhost:8080/some/api/call"))