When I use Gatling2.3, I use the below code to calculate signature:
def calculateAndAddSignature(request: Request, requestBuilder: RequestBuilderBase[_]): Unit = {
val list = new ArrayList[String]()
var salt = ""
for (i <- 1 to request.getQueryParams.size()) {
if (request.getQueryParams.get(i-1).getName == "salt") {
salt = request.getQueryParams.get(i-1).getValue
}
val paramString = request.getQueryParams.get(i-1).getName +"="+ request.getQueryParams.get(i-1).getValue
list.add(paramString)
}
for (i <- 1 to request.getFormParams.size()) {
if (request.getFormParams.get(i-1).getName == "salt") {
salt = request.getFormParams.get(i-1).getValue
}
val paramString = request.getFormParams.get(i-1).getName +"="+ request.getFormParams.get(i-1).getValue
list.add(paramString)
}
Collections.sort(list)
val sb = new StringBuilder
for (j <- 1 to list.size()) {
sb.append(list.get(j-1))
}
sb.append("123456789") // one secret number
val sig = md5Hex(sb.toString)
val tokenSig = sha256Hex(sig + salt)
requestBuilder.addQueryParam("sig",sig)
requestBuilder.addQueryParam("__NS_token_sig",tokenSig)
}
and, use it on the following code:
val s = scenario("upload")
.exec(http("test")
.post("url")
// some queryParams and formParams