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

Gatling-动态进给选择

濮彬
2023-03-14

以下是我需要做的:

.feed("users.csv") // includes username, password, groupid
// login...
.duration(x) {
    feed( csv("${groupid}.csv").random )
    // interact with the application using the data in the second .csv file
}

但是当然,csv()函数接受一个字符串,而不是EL表达式。我需要能够在场景执行的适当时刻组成该字符串。

我可以像这样构建字符串:

.exec( session => {
    feed( csv( session.getAttribute("groupid") + ".csv" ).random )
    session
})

但不幸的是,以下高管没有看到数据。在我看来,这似乎是某种范围问题。我猜feed()表达式正在做它应该做的事情,但是因为它不是外链的一部分,所以它没有被放置在它所属的位置。我应该打电话吗。馈送会话对象中的某个对象,以便将其连接到正在进行的链?

有没有关于如何完成我计划要做的事情的指导?谢谢

共有2个答案

巫马松
2023-03-14

感谢Stephane提供的信息,最终的解决方案就是基于这些信息制定的。

以下是我为1.5.5所做的工作:

object Data {

  var groupList : List[Int] = List( ... ) // long list of IDs

  def branchByGroup ( path: String ) : ChainBuilder = {
    var c = bootstrap
    groupList.foreach( x => {
      c = c.doIf( "${groupId}", x.toString() ) {
        feed( csv( path + "/" + x.toString() + ".csv" ).random )
      }
    })
    return c
  }

  def searchCriteria () : ChainBuilder = branchByGroup( "search" )
  def other() : ChainBuilder = branchByGroup( "other" )
}

然后,在我的场景中,我这样称呼它:

def scn = scenario("My Scenario")
            .feed( credentialSource )
            .exec( Login.steps )
            .during( loopTime ) {
                Data.searchCriteria()
                .exec( Search.steps )

Data.searchCriteria的调用是将. doIF()调用注入链中。如果这不是块中的第一件事,我将不得不将其包装在中。exec()当然。

顺便说一句,有一个问题我必须解决。请注意上面写着c=c.doIf-函数需要返回链的末端,而不是开始。你不能通过将所有东西都连接到链中的第一个链接来构建链!模拟DSL的功能需要这种调用和分配方法。

希望这对我以外的人有帮助。:)

邢寒
2023-03-14

提要器与模拟同时实例化。您不能将其推迟到模拟运行时,除非您使用底层工具进行破解。

你有多少“groupid”文件?如果只有几个,可以使用Gatling 2当前快照中的doSwitch,或者使用Gatling运行时的嵌入式doIf块

.doSwitch("${groupid}") (
  "foo" -> feed(csv("foo.csv").random),
  "bar" -> feed(csv("bar.csv").random)
)

这可以概括为:

def groupIdFeed(groupId: String) = groupId -> feed(csv(groupId + ".csv").random)

.doSwitch("${groupid}") (
  groupIdFeed("foo"),
  groupIdFeed("bar")
)
 类似资料:
  • 我将Gatling与JDBC feeder一起使用,并希望根据之前请求的响应动态地向JDBC feeder的where子句添加一个参数。这里是我的例子,我试图做一个帖子,创建一个用户,然后让提要使用create user请求返回的userId获取用户生成的UUID,然后用UUID发布一些数据。 我已经核实了以下内容: 1)用户数据确实在表单帖子上正确插入数据库2)用户ID从表单帖子返回3)用户ID

  • 我试图使用csv文件中的数据构建随机json请求。我已经定义了我的目标。场景功能如下 但是当我将日志级别设置为跟踪时,我看到所有请求都具有相同的值。我错过了什么吗?

  • 我有一个场景,有4个不同的API调用,它们总是保持不变。我试图创建一个并行的压力测试,我希望相同的场景首先运行,比如10%,然后是20%,30%······max用户的等等。 但我也需要设置是动态的,取决于脚本中的可配置变量这是造成问题的原因,我希望能够很容易地配置它运行例如10%,50%和100%。 这就是我到目前为止所做的(缩短了,并且onceuser和nothingFor从迭代于bla(I)

  • 我有一个选择元素,里面有多个选项: 对于这里看到的每个选项元素,我都有另一个select元素。基本上,我在一个选择元素中列出了一系列音乐流派,在它下面,是与每一个“主流派”相关的子流派。 我想做的是使子体裁只有在相对体裁被选中时才可见。例如,如果用户选择“Pop”,我想向他们显示包含Pop子类型的相关选择字段。 我的HTML标记实际上是由WordPress插件生成的,不幸的是,我无法编辑它。也就是

  • 问题内容: 我知道这个问题已经被问过很多次了,但是我已经尝试了好几个小时,却没有任何效果,我是php和ajax的新手,所以,我可能会遗漏一个我不知道的小东西,我想要在这里实现的目的是,我希望用户选择一个食物组,然后基于该组显示配料表。 我单独测试了process.php文件,它运行良好,还测试了脚本,发生了什么事,当我注释掉并键入alert(parent)时,从$ .ajax开头的行不起作用了,我

  • Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等,除此之外它拥有以下特点: 支持Akka Actors 和 Async IO,从而能达到很高的性能 支持实时生成Html动态轻量报表,从而使报表更易阅读和进行数据分析 支持DS