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