Я пытаюсь использовать gatling для сервера, который использует HAWK Authentication. Проблема в том, что заголовок должен быть сгенерирован для каждого запроса и передать ключ и ключ ключа. Это затрудняет отправку запросов от нескольких пользователей. Я получил этот Hawk java library, работающий с жестко закодированными ключами. Тем не менее, я хотел бы моделировать нескольких пользователей с помощью фидера. Кажется, я не могу заставить эту работу работать, поскольку фидеры неправильно передаются в вызовы функций.Использование фидера для передачи значений заголовка (Gatling)
У меня есть следующий код:
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}" вместо значений фидерных. Это то, что я пытаюсь сделать возможным?
Я загляну в калькулятор подписи, я пропустил это, глядя в документы. Для ясности кажется, что это правильный способ получить атрибуты сеанса: session («keyId»). Как [String] в контексте приведенного выше фрагмента кода. – rjbez
@rjbez вы правы, исправлены –