首页 > 解决方案 > 记录完成场景执行所花费的时间

问题描述

我有一个 Gatling 测试场景,我正在为 n 个用户运行。我有一个要求,我需要记录完成执行“n”个用户所花费的总时间,并将其存储在一个值中以将其传递给下一个场景。如何实施?

我的代码片段:

 def createData() = {
    
         feed(customFeeder).exec(http("create data").post("/datasets").header("content-type", "application/json")
           .body(StringBody("""{ "name": "${name}","description": "create dataset"}"""))
           .asJson.check(jsonPath("$.id").saveAs("userId")))
           .exec(session => {
             val name = session("name").asOption[String]
             println("Dataset name ::: "+name.getOrElse("COULD NOT FIND NAME"))
             val datasetId = session("userId").as[String].trim
             println("Dataset ID retrieved from createDataSet Response ::: "+ datasetId)
            val datasetIdList = session("datasetIdList").asOption[List[String]].getOrElse(Nil)
             println("Upload Start Time :::"+Calendar.getInstance().getTime)
          // add above datasetId, upload start time to the map 
             session.set("datasetIdList", userId :: datasetIdList)
           })
       }

 def fileUpload() = foreach("${datasetIdList}","datasetId"){
//   println("File Upload Start Time::::"+Calendar.getInstance().getTime+" for datasetId ::: ${datasetId}")
   exec(http("file upload").post("/datasets/${datasetId}/uploadFile")
     .formUpload("File","./src/test/resources/data/File.csv")
     .header("content-type","multipart/form-data")
     .check(status is 200).check(status.saveAs("uploadStatus")))
     .exec(session => {
       // retrieve the upload time by datasetId from map above
     session
   })
 }

    
    
   val scn1 = scenario("create multiple datasets and upload").exec(createDatasetsAndUpload()).exec(fileUpload())
    setUp(scn1.inject(atOnceUsers(3))).protocols(httpConf)

我在这里进行顺序调用,我们将仅在第一个场景完成后才进行第二个调用,因此我需要记录完成 createData() 场景所需的时间,并在下一个 fileUpload() 场景中使用该时间。如果我只在所有执行完成后才执行它。

标签: gatlingscala-gatling

解决方案


推荐阅读