为gatling

时间:2015-11-27 10:26:22

标签: scala gatling

我正在使用gatling(2.1.7)来强调测试API。

首先,我必须请求一个事务ID和共享密钥,以便对所有后续调用进行身份验证。

scenario("API").exec(http("authorize")
  .post("/api/v1/xxx/authorize")
  .formParam("client_key", "a_very_strong_key")
  .check(jsonPath("$.response.txId").saveAs("id"))
  .check(jsonPath("$.response.txSecret").saveAs("secret")))

所有其他调用必须包含查询参数signature,该参数是其他请求参数的mac。

我写了这段代码来做那件事

scenario("API").exec(http("call")
  .get("/api/v1/call")
  .queryParam("id", "${id}")
  .queryParam("param1", "aaaaaa")
  .queryParam("param2", "bbbbbb")      
  .queryParam("signature", session => sign(session, Map(
    "id" -> session("id").as[String],
    "param1" -> "aaaaaa",
    "param2" -> "bbbbbb"))))

/* ... */

def sign(session: Session, params: Map[String, String]) : String = {
    val str = canonicalize(params)
    format_mac(session("secret").as[String], str)
}

但是我必须在sign方法调用中复制所有查询参数名称和值,这显然是一种不好的做法。有可能避免这种情况吗?

1 个答案:

答案 0 :(得分:1)

您想签署请求,因此请使用SignatureCalculator