1

I have a JSR223 Sampler in Jmeter with the following code:

import com.jayway.jsonpath.JsonPath
import org.apache.commons.lang3.RandomUtils
import org.apache.jmeter.samplers.SampleResult

def options = JsonPath.read(prev.getResponseDataAsString(), '$.options')

if(options.size() == "1" || options.size() == "2") {

    def randomOption = options.get(0)
    def code = randomOption.get("code")
    vars.put('code1', code)

    def values = randomOption.get('values')
    def randomValue = values.get(RandomUtils.nextInt(0, values.size()))
    def value = randomValue.get('value')
    vars.put('valueF', value)

    def options2 = JsonPath.read(prev.getResponseDataAsString(), '$.options')
    def randomOption2 = options2.get(1)
    def code2 = randomOption2.get("code")
    vars.put('code2', code2)

    def values2 = randomOption2.get('values')
    def randomValue2 = values2.get(RandomUtils.nextInt(0, values.size()))
    def value2 = randomValue2.get('value')
    vars.put('valueF2', value2)

}

else {
    vars.put('no loop','Not enterd into loop')
}

vars.put('counts',new 
groovy.json.JsonSlurper().parse(prev.getResponseData()).options.size() as 
String)

def size = com.jayway.jsonpath.JsonPath.read(prev.getResponseDataAsString(), 
'$.options_available')

if (size == []) {
    vars.put('size', 'NonConfigurable')
} 

else {
    vars.put('size', 'Configurable')
}

I am unable to get the value of code1 and valueF , code2 and valueF2 outside of the Sampler. Any possible help is appreciated!

Meloman
  • 3,558
  • 3
  • 41
  • 51
Suresh
  • 11
  • 3

2 Answers2

0

Try amending this line:

def value = randomValue.get('value')

to

def value = randomValue.get('value') as String

Similarly for the "code:

def code = randomOption.get("code") as String

Get used to look into jmeter.log file when you face an issue with JMeter, in the majority of cases it should contain enough troubleshooting information.

If you need further assistance on the topic update it with the full response you're trying to parse. In the meantime:

Dmitri T
  • 159,985
  • 5
  • 83
  • 133
0

JSONArray size should be used by using length(), change in your code

if(options.length() == 1 || options.length() == 2) {
Ori Marko
  • 56,308
  • 23
  • 131
  • 233