2016-05-12 42 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