我试图用加特林针对使用服务器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”代替馈线值。 正是我试图做可能吗?