当前位置: 首页 > 知识库问答 >
问题:

使用进料器传入收割台值(Gatling)

哈沛
2023-03-14

我试图对使用HAWK身份验证的服务器使用gatling。问题是需要为每个请求生成报头,并传入密钥id和密钥。这使得发送来自多个用户的请求变得困难。我让这个Hawk 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))
}

当我这样做时,key和secret被计算为“${keyId}”/“${keySecret}”,而不是feeder值。我想做的事可能吗?

共有1个答案

程和煦
2023-03-14

如果希望每次都执行某些操作,而不仅仅是在加载场景时,则必须传递一个函数,请参见doc。

.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"))

但是,我们有一个用于生成此类令牌的API,请参见SignatureCalculator。

 类似资料:
  • 我使用CORS请求将数据发布到不同域上的php脚本。我收到错误: 跨域请求被阻止:同源策略不允许读取“mydomain”处的远程资源(原因:缺少CORS标头“Access-Control-Allow-Origin”)。 我已经使用以下代码在php中设置了标题。 我也在这篇文章中尝试了这个代码 这是供参考的javascript代码 响应标题 请求标头 但我运气不好任何帮助我都很感激

  • 本文向大家介绍fetch 使用及如何接收JS传值,包括了fetch 使用及如何接收JS传值的使用技巧和注意事项,需要的朋友参考一下 使用fetch基本方式: 方式一:增加headers 定义 在headers头部定义如下: 同时body传值使用如下方式: 在php中使用如下接收 方式二:改变php中接受方式 接受方式如下: 返回字符串对象,使用值需要做如下处理: 此时便可以如下接收传值: 总结 以

  • 说明 本接口用于直接调用JS支付功能。 请求地址 http://wx.dc78.cn/Payw/go.html 请求方式 GET直接跳转网页 请求参数 参数 参数名称 必填 描述 范例 msid 门店编号 bzid 业务单号 amt 结账金额 desc 商品名称 (可选)商品名称 redirect_url 支付成功后跳转页面 (可选)支付成功后跳转页面 notify_url 支付成功后通知页面 (

  • 说明 本接口用于直接调用JS支付功能。 请求地址 http://wx.dc78.cn/Payw/go.html 新版地址:https://pay.dc78.cn/000615.html(推荐) 请求方式 GET直接跳转网页 请求参数 参数 参数名称 必填 描述 范例 msid 门店编号 bzid 业务单号 amt 结账金额 desc 商品名称 (可选)商品名称 redirect_url 支付成功后

  • 网站 protobuf 官网 protobuf @ github: protobuf的github代码托管 文档 官方资料 开发指南: 官方文档,英文版本 开发指南-中文翻译版本 API参考文档: 官方文档,英文版本 API参考文档-中文翻译版本 protocol buffer相关 和protocol buffer相关的一些项目, 列表请见third-party add-ons wiki page

  • 问题内容: 对于我来说,目前尚不清楚,在这种情况下,我想使用值接收器而不是始终使用指针接收器。 回顾一下文档: 该 文档 还说:“对于基本类型,切片和小型结构之类的类型,值接收器非常便宜,因此,除非该方法的语义要求使用指针,否则值接收器是高效且清晰的。” 首先, 它说“非常便宜”,但问题是它比指针接收器便宜。因此,我做了一个小的基准测试(基于要点的代码),向我展示了,即使对于只有一个字符串字段的结