Search code examples
gatling

Using a method for formParams in Gatling


I have a page with 50 records on and when you save a value it fires off 31 form params for each of the 50 records. So this means a lot of code which wont compile because of JVM limits. It's also very much repeatable code.

So I wanted to create a method like this:


  def formParams(recordNumber : String) = {
      .formParam("DMX.DUMMY_OCCURRENCES.MENSYS." + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.1-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.2-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.3-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.4-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.5-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.6-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.7-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.13-" + recordNumber, "CDL_RECM")
      .formParam("VALUE.DUMMY_FIELDS.MENSYS.13-" + recordNumber, "1")
      .formParam("VALUE.DUMMY_FIELDS.MENSYS.15-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.15-" + recordNumber, "CDL_SCOR")
      .formParam("VALUE.DUMMY_FIELDS.MENSYS.16-" + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.16-" + recordNumber, "CDL_NOTE")
      .formParam("%.DUMMY_FIELDS.MENSYS.1-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.2-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.3-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.4-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.5-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.6-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.7-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.8-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.9-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.10-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.11-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.12-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.13-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.14-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.15-" + recordNumber, "")
      .formParam("%.DUMMY_FIELDS.MENSYS.16-" + recordNumber, "")
  }

And then call this in my exec like so:

.exec(http("store OD")
        .post("/urd/sits.urd/run/SIW_DMX_LITE")
        .headers(headers_36)
        .formParam("NKEY.DUMMY.MENSYS.1", "${SEARCHNKEY}")
        .formParam("RUN_MODE.DUMMY.MENSYS.1", "ACT")
        .formParam("SORT_FILTER.DUMMY_PAGER.MENSYS.1", "")

        //CALL METHOD HERE......

        .formParam("FIRST_VALUE.DUMMY_PAGER.MENSYS.1", "1")
        .formParam("PREVIOUS_VALUE.DUMMY_PAGER.MENSYS.1", "-49")
        ....
     
  }

Currently it cant resolve the symbol for the first .formparam

I also tried this using another example I saw:

 def formParams(recordNumber : String, form : HttpRequestBuilder) = {
    form
      .formParam("DMX.DUMMY_OCCURRENCES.MENSYS." + recordNumber, "")
      .formParam("CODE.DUMMY_FIELDS.MENSYS.1-" + recordNumber, "")
      ....
  }

The method itself doesn't error, but when I call the method it throws the cant resolve symbol error in the exec code.

Does anyone have any ideas I could try?


Solution

  • If your problem is compiler stack depth, you can use formParamMap and pass a Map:

      def formParams(recordNumber : String): Map[String, String] =
        Map(
          "DMX.DUMMY_OCCURRENCES.MENSYS." + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.1-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.2-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.3-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.4-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.5-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.6-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.7-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.13-" + recordNumber -> "CDL_RECM",
          "VALUE.DUMMY_FIELDS.MENSYS.13-" + recordNumber -> "1",
          "VALUE.DUMMY_FIELDS.MENSYS.15-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.15-" + recordNumber -> "CDL_SCOR",
          "VALUE.DUMMY_FIELDS.MENSYS.16-" + recordNumber -> "",
          "CODE.DUMMY_FIELDS.MENSYS.16-" + recordNumber -> "CDL_NOTE",
          "%.DUMMY_FIELDS.MENSYS.1-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.2-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.3-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.4-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.5-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.6-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.7-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.8-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.9-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.10-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.11-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.12-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.13-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.14-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.15-" + recordNumber -> "",
          "%.DUMMY_FIELDS.MENSYS.16-" + recordNumber -> ""
      )
    
    ???
    .exec(http("store OD")
            .post("/urd/sits.urd/run/SIW_DMX_LITE")
            .headers(headers_36)
            .formParam("NKEY.DUMMY.MENSYS.1", "${SEARCHNKEY}")
            .formParam("RUN_MODE.DUMMY.MENSYS.1", "ACT")
            .formParam("SORT_FILTER.DUMMY_PAGER.MENSYS.1", "")
    
            //CALL METHOD HERE......
            .formParamMap(formParams(0))
    
            .formParam("FIRST_VALUE.DUMMY_PAGER.MENSYS.1", "1")
            .formParam("PREVIOUS_VALUE.DUMMY_PAGER.MENSYS.1", "-49")
            ....
         
      }