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

Gatling:循环遍历进纸器中的所有条目

程修雅
2023-03-14

我有一个CSV文件,其中有大约10K个条目(我的会话的请求有效负载)。我正在使用内置的CSV进纸器在我的请求中循环遍历所有这些条目。但是只执行与测试中的用户数相对应的请求数。我希望整个提要都被执行。

例如,如果我有10个用户,那么在运行时只获取CSV的前10条记录。

这是我的代码:

  val rqstFeeder = csv("rqst.csv")
  val user = ConfigFactory.load().getInt("app.loadVariables.user")
  var URL: String = ConfigFactory.load().getString("app.loadVariables.URL")

  val httpProtocol = http
    .header(HttpHeaderNames.Accept, HttpHeaderValues.ApplicationJson)
    .inferHtmlResources()

  object GSLBRequest {
    val getData =
      exec(
        http("Get GSLB Data")
          .post(URL)
          .body(StringBody(ConfigFactory.load().getString("app.loadVariables.body"))).asJSON
          .check(status.is(200))
      )
  }

  val customInject = constantUsersPerSec(user) during (5 seconds)
  val source = scenario("GSLB Endpoint")
    .feed(rqstFeeder)
    .forever(exec(GSLBRequest.getData)).inject(customInject);
  )

  setUp(source)
    .protocols(httpProtocol).maxDuration(30 seconds)

共有1个答案

韩琛
2023-03-14

这就是馈线的工作原理。每次调用feed(feeder)时,您都会得到一整套保存为属性的值——如果是一行。因为每个用户只调用一次,所以只使用了10行。将feeder放入循环中,然后每次迭代都会获取值。

您还需要将进料器模式设置为圆形或随机fe:

val rqstFeeder = csv("rqst.csv").circular

如果没有默认模式,将使用默认模式,它只允许获取每条记录一次,之后模拟将因“空进料器”而失败。如果遇到列表末尾,循环模式将重新输入数据,random当然会随机进行,所以列表大小对它来说不是问题。您必须记住,这并不能保证每一行只使用一次。如果模拟是短的,它不会使用所有记录,如果它太长,它将需要多次使用一些记录。如果您需要每行只运行一次,那么最好使用10k个用户运行模拟,或者保留10个用户,但将永久替换为重复(1000)循环。

 类似资料:
  • 问题内容: 我有一个Java类,其中有许多。 我想循环遍历所有字段,并为空字段做些事情。 例如,如果我的课程是: 在另一个位置,我将创建一个对象,并且想遍历该类中的所有字段。有点像这样: 我有什么办法可以做到这一点? 问题答案: 用于[班级] (http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html)

  • 问题内容: 有没有办法遍历classpath中的所有类? 我想对实现特定接口的某些类进行一些反思性检查,但是我想完全动态地进行检查,而无需输入任何要检查的类,只需浏览类路径即可。 问题答案: 该思考图书馆可以帮助解决这个问题。正如其他人所述,在所有类加载情况下也不是完全可能的,但是如果您只有jar和文件,那么它将可靠地做到这一点。

  • 问题内容: 我正在寻找一个循环遍历目录中所有文件的PHP脚本,以便可以使用文件名进行操作,例如格式,打印或将其添加到链接中。我希望能够按名称,类型或创建/添加/修改的日期对文件进行排序。(想想目录“ index”。)我还希望能够将排除项添加到文件列表中,例如脚本本身或其他“系统”文件。(类似于和“目录”。) 由于我希望能够修改脚本,因此我对查看PHP文档和学习如何自己编写更感兴趣。就是说,如果有任

  • 为了在运行性能脚本之前用大量数据填充系统,我们理想的用例是使用Gatling。数据不需要不同,除了具有唯一的主ID。 上面的示例可以通过更改的值来创建任意数量的对象,但是在大范围(例如100000个对象)下,线性地这样做变得不切实际。所以我想做的是有一个共享的对象池,由100个用户创建。 当然,这就是喂食器的使用案例。而不是生成一个静态的或使用使用简单的迭代循环(例如到)似乎最简单。 我知道(从文

  • 我有一个包含许多子目录的目录,其中包括一个名为OLD的目录。这个旧文件夹也可能位于任何子目录中,并包含存档文件 根目录A 文件1。txt 文件2。txt 旧的 文件1。txt 文件1。txt 老 子目录E 文件7。txt 旧的 我需要在Talend中创建一个作业,该作业将查找所有OLD文件夹(在主目录和子目录中)并从该文件夹中删除文件。我可以使用tFilelist来屏蔽要删除的文件。但无法弄清楚如

  • 我是GraphQL的新手。我正在使用亚马逊和Itunes的API获取一本书的标题(和其他信息)。我返回的对象如下: 我可以调用Amazon和ITunes API并返回一本书的可用数据。但是,我希望能够插入EAN/ISBN数组,并从Amazon和ITunes返回所有书籍的数据。 因此,查询应该是这样的: 而回应: 我已经搜索了使用graphQLList的例子,但我不确定在哪里使用graphQLLis