簡體   English   中英

Gatling&Scala:如何在循環中拆分值?

[英]Gatling & Scala : How to split values in loop?

我想在循環中拆分一些值。 我在檢查中使用了拆分方法,它對我有用。 但是,有兩種不同類型的超過25個值。 所以,我在scala中實現循環並且在努力。 請考慮以下情形:

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

class testSimulation extends Simulation {

    val httpProtocol = http
    .baseURL("https://website.com")
    .doNotTrackHeader("1")
    .disableCaching

val uri1 = "https://website.com"

val scn = scenario("EditAttribute")
    .exec(http("LogIn")
        .post(uri1 + "/web/guest/")
        .headers(headers_0)
    .exec(http("getPopupData")
        .post("/website/getPopupData")
        .check(jsonPath("$.data[0].pid").transform(_.split('#').toSeq).saveAs("pID")))  // Saving splited value
    .exec(http("Listing")
        .post("/website/listing")
        .check(jsonPath("$.data[*].AdId").findAll.saveAs("aID"))                        // All values are collected in vector 
//      .check(jsonPath("$.data[*].AdId").transform(_.split('#').toSeq).saveAs("aID"))  // Split method Not working for batch
//      .check(jsonPath("$.data[*].AdId").findAll.saveAs("aID"))                        // To verify the length of array (vector)
        .check(jsonPath("$.data[0].RcId").findAll.saveAs("rID")))
    .exec(http("UpdatedDataListing")
        .post("/website/search")
        .formParam("entityTypeId", "${pId(0)}")                                 // passing splited value,  perfectly done
        .formParam("action_id", "${aId(0)},${aId(1)},${aId(2)},..and so on)      // need to pass splitted values which is not happening
        .formParam("userId", "${rID}")
// To verify values on console (What value I m getting after splitting)...
    .exec(  session =>  {
            val abc = session("pID").as[Seq[String]]
            val xyz = session("aID").as[Seq[String]]
            println("Separated pId ===>  "   +abc(0))               // output - first splitted value
            println("Separated pId ===>  "   +abc(1))               // split separater
            println("Separated pId ===>  "   +abc(2))               // second splitted value
            println("Length  ===>   "   +abc.length)                // output - 3
            println("Length  ===>   "   +xyz.length)                // output - 25
            session
                        }
         )
    .exec(http("logOut")
        .get("https://" + uri1 + "/logout")
        .headers(headers_0))

        setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

我想實現一個循環,它在會話中執行所有(25)值的拆分。 我不想做硬編碼。 我也是斯卡拉和加特林的新手。

由於它是一個會話函數,下面的代碼片段將給出一個繼續的方向,就像在Java中一樣使用split: -

  exec { session =>
    var requestIdValue = new scala.util.Random().nextInt(Integer.MAX_VALUE).toString();
    var length = jobsQue.length
    try {
      var reportElement = jobsQue.pop()
      jobData = reportElement.getData;
      xml = Configuration.XML.replaceAll("requestIdValue", requestIdValue);

      println(s"For Request Id : $requestIdValue  .Data Value from feeder is : $jobData Current size of jobsQue : $length");
    } catch {
      case e: NoSuchElementException => print("Erorr")
    }

    session.setAll(
      "xmlRequest" -> xml)
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM