如何在Gatling Loop中增加变量

时间:2014-06-11 21:42:27

标签: gatling

我正在尝试编写一个Gatling脚本,我从CSV文件中读取起始编号并循环播放,比如10次。在每次迭代中,我想增加参数的值。

看起来需要一些Scala或Java数学,但无法找到有关如何操作或如何以及将Gatling EL与Scala或Java结合使用的信息。

感谢任何帮助或指示。

var numloop = new java.util.concurrent.atomic.AtomicInteger(0)

val scn = scenario("Scenario Name")

.asLongAs(_=> numloop.getAndIncrement() <3, exitASAP = false){
    feed(csv("ids.csv"))   //read ${ID} from the file
    .exec(http("request")
        .get("""http://finance.yahoo.com/q?s=${ID}""")
        .headers(headers_1))
    .pause(284 milliseconds)

    //How to increment ID for the next iteration and pass in the .get method?
}

2 个答案:

答案 0 :(得分:5)

您从Gatling的Google群组中复制粘贴此代码,但此用例非常具体。 您是否首先正确阅读了documentation regarding loops?你的用例是什么?它与基本循环有什么不相符?

编辑:所以问题是:我如何获得每个循环迭代和每个虚拟用户的唯一ID?

您可以为循环索引和虚拟用户ID计算一个。 Session已经有一个唯一的ID,但它是一个String UUID,所以它对你想做的事情来说不是很方便。

// first, let's build a Feeder that set an numeric id:
val userIdFeeder = Iterator.from(0).map(i => Map("userId" -> i))

val iterations = 1000

// set this userId to every virtual user
feed(userIdFeeder)
// loop and define the loop index
.repeat(iterations, "index") {
  // set an new attribute named "id"
  exec{ session =>
    val userId = session("userId").as[Int]
    val index = session("index").as[Int]
    val id = iterations * userId + index
    session.set("id", id)
  }
  // use id attribute, for example with EL ${id}
}

答案 1 :(得分:0)

以下是我对此的回答: 问题陈述:我不得不为配置的一组时间重复加特林执行,我的步骤名称必须是动态的。

    object UrlVerifier {

  val count = new java.util.concurrent.atomic.AtomicInteger(0)
  val baseUrl = Params.applicationBaseUrl

  val accessUrl = repeat(Params.noOfPagesToBeVisited,"index") {
    exec(session=> {
      val randomUrls: List[String] = UrlFeeder.getUrlsToBeTested()
      session.set("index", count.getAndIncrement).set("pageToTest", randomUrls(session("index").as[Int]))
    }
    ).
    exec(http("Accessing Page ${pageToTest}")
      .get(baseUrl+"${pageToTest}")
      .check(status.is(200))).pause(Params.timeToPauseInSeconds)
  }

所以基本上UrlFeeder给我一个String列表(要测试的url),在exec中,我们使用count(AtomicInteger),并使用它来填充一个名为&#39; index&#39;的变量。其值将从0开始,并在每次迭代中为getAndIncremented。这个&#39;索引&#39;变量是将在repeat()循环中使用的变量,因为我们指定了counterVariable的名称,用作&#39; index&#39;

希望它也有助于其他人。