2016-05-12 44 views
1

我正在尝试做一个非常简单的操作,但当我们是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("https://stackoverflow.com/users/${someone.name}") 
    }) 

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

会议似乎包含用户DATAS,但我不知道如何访问它来建立我的http请求的路径!

我见过很多不同的方式来完成可能接近我想要实现的目标,但我找不到一个清晰的工作示例。

回答

1

检查馈线文件:http://gatling.io/docs/2.2.0/session/feeder.html?highlight=feeders

你基本上可以只使用随机进纸器:

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

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

是的,我终于找到了,谢谢! – Ludo

1

一般来说,在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")) ... 
+0

feed(jsonFile("peoples.json")).random

然后你就可以与DSL访问我认为你的意思是'http(某人(“年龄”))' –

+0

你是对的!谢谢 – efraglebagga