加特林脚本-如何在不同时间的以下请求中提供eventdatetime

问题描述

加特林脚本-如何在以下请求中以不同的纪元时间来提供以下请求中的eventDateTime作为供稿器。 Id以循环方式通过馈送器馈送。以下请求位于使用ELFileBody馈送的文件中。 event-new.json看起来像

{
  "events": [
    {
      "eventDataModel": {
        "eventStatus": "ON","eventDateTime": 1598271042436
      },"transactionModel": {
        "id": "${ID}"
      }
    },{
      "eventDataModel": {
        "eventStatus": "ON","eventDateTime": 1598271043436
      },"eventDateTime": 1598271044436
      },"eventDateTime": 1598271045436
      },"eventDateTime": 1598271046436
      },"eventDateTime": 1598271047436
      },"eventDateTime": 1598271048436
      },{
      "eventDataModel": {
        "eventStatus": "OFF","eventDateTime": 1598271049436
      },"transactionModel": {
        "id": "${ID}"
      }
    }
  ]
}

上面是使用gatling脚本发布的event-new.json 加特林脚本的摘要

val idFeeder = csv("Id.csv").circular
val trip_dte2 = scenario("Event")
                    .Feed(idFeeder)
                    .exec(http("event")
                    .post( event_url)
                    .headers(headers)
                    .body(ElFileBody("event-new.json")).asJSON
                    .check(status.is(201)))

解决方法

从加特林3.3开始:

.exec { session =>
  session.set("timestamp",System.currentTimeMillis())
}

,然后将1598271049436替换为${timestamp}

或者,coming in Gatling 3.4:如果可以将JSON有效负载中的每个事件的值设置为不同,则可以直接将1598271049436替换为${currentTimeMillis()}