用加料器在头传递值(转管)(Using a feeder to pass in header val

2019-10-22 12:30发布

我试图用加特林针对使用服务器HAWK认证 。 的问题是,头部需要在密钥ID和密钥每个请求,并通到被生成。 这使得发送来自多个用户硬盘的请求。 我已经得到了这个鹰Java库用硬编码键工作。 不过,我想用加料器来模拟多个用户。 我似乎不能作为馈线无法正常传递到函数调用来得到这个工作。

我有以下代码:

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))
}

当我做到这一点,关键和秘密被评为“$ {} KEYID” /“$ {} keySecret”代替馈线值。 正是我试图做可能吗?

Answer 1:

你如果想每次都被执行的东西,不只是当场景被载入,见传递函数文档 。

.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"))

但是,我们有产生这种标记的API,见SignatureCalculator 。



文章来源: Using a feeder to pass in header values (Gatling)
标签: scala gatling