使用馈线随机访问地图数组中的一行

Access randomly a line in an array of map using feeders

我正在尝试做一个非常简单的操作,但是当我们是 scala/gatling 的初学者时它变得非常复杂。

我只需要在每次请求时在地图数组中随机选择一条线...

我正在研究 JSON,看起来像这样:

[
 { "name": "a", "age": 33 },
 { "name": "b", "age": 34 },
 { "name": "c", "age": 38 }
]

这是我正在尝试做的草稿:

val user = feed(jsonFile("peoples.json"))
  .exec( session => {
    val someone = session[random()] // How to code that ?
    http(someone.age)
      .get("/users/${someone.name}")
  })

val scn = scenario("").exec(user)

会话似乎包含用户数据,但我不知道如何访问它来构建我的 http 请求的路径!

我见过很多不同的方法来做事情,这些方法可能接近我想要实现的目标,但我找不到一个清晰的工作示例。

一般来说,在 Scala 中,如果你有一个 Seq 访问一个随机元素会像这样

import scala.util.Random

val random = new Random
val list = List(1, 2, 3, 4, 5)
list(random.nextInt(list.length))

gatling 我相信它会给你 Seq[Map[String, Any]] 作为输入。所以你会做类似

的事情
val random = new Random
val someone = session(random.nextInt(session.length))
http(someone("age")) ...

检查喂食器文档:http://gatling.io/docs/2.2.0/session/feeder.html?highlight=feeders

你基本上可以只使用随机喂食器:feed(jsonFile("peoples.json")).random

然后就可以用DSL访问了:

val myFeeder = jsonFile("peoples.json").random
val userRequest = exec(http("someones ${age}")
      .get("/users/${name}"))

val scn = scenario("x").exec(feed(myFeeder),userRequest)