在Gatling中使用包含JSON作为数据馈送文件的.tsv文件的问题

时间:2015-03-25 21:40:27

标签: json scala tsv gatling

我正在使用Gatling来测试RESTful API。我将把JSON的数据发布到特定的URI。我想使用一个.tsv的feed文件,其中每一行都是一个特定的JSON元素。但是,我收到错误,我似乎无法找到一个模式或系统来添加""到我的.tsv JSON所以Feed会起作用。附件是我的代码和tsv文件。

package philSim

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class eventAPISimulation extends Simulation {

  object Query {
    val feeder = tsv("inputJSON.tsv").circular
    val query = forever {
      feed(feeder)
      .exec(
        http("event")
        .post("my/URI/here")
        .body(StringBody("${json}")).asJSON
      )
    }
  } 

  val httpConf = http.baseURL("my.url.here:portnumber")

  val scn = scenario("event").exec(Query.query)

   setUp(scn.inject(rampUsers(100) over (30 seconds)))
        .throttle(reachRps(2000) in (30 seconds), holdFor(3 minutes))
        .protocols(httpConf)
}

以下是我未经编辑的.tsv与JSON的示例:

json
{"userId":"234342234","secondaryIdType":"mobileProfileId","secondaryIdValue":"66666638","eventType":"push","eventTime":"2015-01-23T23:20:50.123Z","platform":"iPhoneApp","notificationId":"123456","pushType":1,"action":"sent","eventData":{}}
{"userId":"234342234","secondaryIdType":"mobileProfileId","secondaryIdValue":"66666638","eventType":"INVALID","eventTime":"2015-01-23T23:25:20.342Z","platform":"iPhoneApp","notificationId":"123456","pushType":1,"action":"received","eventData":{"osVersion":"7.1.2","productVersion":"5.9.2"}}
{"userId":"234342234","secondaryIdType":"mobileProfileId","secondaryIdValue":"66666638","eventType":"push","eventTime":"2015-01-23T23:27:30.342Z","platform":"iPhoneApp","notificationId":"123456","pushType":1,"action":"followedLink","eventData":{"deepLinkUrl":"URL.IS.HERE","osVersion":"7.1.2","productVersion":"5.9.2"}}
{"userId":"234342234","secondaryIdType":"mobileProfileId","secondaryIdValue":"66666638","eventType":"push","eventTime":"2015-01-23T23:27:30.342Z","platform":"AndroidApp","notificationId":"123456","pushType":1,"action":"followedLink","eventData":{"deepLinkUrl":"URL.IS.HERE"}}
{"userId":"234342234","secondaryIdType":"mobileProfileId","secondaryIdValue":"66666638","eventType":"push","eventTime":"2015-01-23T23:25:20.342Z","platform":"iPhoneApp","notificationId":"123456","pushType":1,"action":"error","eventData":{}}

我已经看过this blog post讨论操纵引号(")以使作者的JSON与.tsv一起工作,但作者并没有提供系统如何。我尝试了各种各样的东西,但我没有做任何事情。一些JSON将使用类似于本文作者所做的引用包。但是,这并不适用于所有事情。处理JSON和Gatling的最佳做法是什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

直接来自Gatling's documentation:使用rawSplit以便Gatling的TSV解析器能够处理您的JSON条目:

tsv("inputJSON.tsv", rawSplit = true).circular
相关问题