2008/5/3 sebb <[EMAIL PROTECTED]>:
> 2008/5/3 anneb <[EMAIL PROTECTED]>:
>
> > Hi,
> >
> > I am trying to do some calculations with variables inside a loop
> > controller, but it looks like variables are reset to their initial
> > values each time the loop is executed.
> >
> > What I am doing (Jmeter 2.3.1):
> >
> > test plan
> > --thread group
> > ----User defined variables (name: y, value 0)
> > ----Loop Controller (loop count: 4)
> > ------User defined variables (name: z, value ${__javaScript(${y}+1,y)} )
> > ------Debug Sampler
> > ------View Results Tree
> >
> > according to the documentation the function ${__javaScript(${y}+1 ,
> > y)} adds 1 to the value of jmeter variable 'y' and stores the result
> > in jmeter variable y.
> >
>
> Yes.
>
> However intSum() would perhaps be simpler to use in this case.
>
>
> > Indeed something like that seems to happen, because this is what I get
> > under tab "response data" for each of the 4 elements in the reponse
> > tree:
> > JMeterVariables:
> > START.YMD=20080502
> > JMeterThread.last_sample_ok=true
> > y=1
> > START.MS=1209764719713
> > z=1
> > START.HMS=234519
> > y=0
> >
> >
> > I was hoping to see y increase by 1 for every iteration through the
> > loop, but it remains stuck at a value of 1.
> >
> > What is happening? What am I doing wrong? Why does variable 'y' seem
> > to be reinitialized when assigned to new user defined variable 'z'?
>
> UDVs are Configuration items - they are processed once at the start.
>
>
> > How can I use variables inside a loop that memorize values assigned in
> > previous iterations through the loop?
> >
> > I looked at other ways of changing variables in loops such as the
> > counter pre processor, but for my metering purposes I need more
> > variables and I need to do more than just simple increments by fixed
> > amounts.
> >
> > Then I found the BSF sampler, but there is at least an error in the
> > documentation:
> > at http://jakarta.apache.org/jmeter/usermanual/component_reference.html
> > where it is stated that responses should be returned through
> >
> > SampleResponse.setSuccessful(true/false)
> > SampleResponse.setResponseCode("code")
> > SampleResponse.setResponseMessage("message")
> >
> > but "SampleResponse" is not a known object to javascript in this context.
> > I figured out that instead SampleResponse
> >
> > SampleResult.setSuccessful(true);
> >
> > should be used.
>
> I guess the docs need to be updated...
>
There were several other uses of SampleResponse where SampleResult was meant.
These have been corrected, and will be in the next release.
>
> > resulting in the following setup:
> > test plan
> > --thread group
> > ----User defined variables (name: y, value 0)
> > ----Loop Controller (loop count: 4)
> > ------BSF Sampler
> > ------Debug Sampler
> > ------View Results Tree
> >
> > The BSF Sampler script is:
> > vars.put("y",${y}+1);
> > SampleResult.setSuccessful(true);
> > SampleResult.setResponseCode("200");
> > SampleResult.setResponseMessage("OK") ;
> >
> >
> > Now only the first iteration through the loop works reasonably well:
> > Result Tree response data:
> > BSF Sampler:
> > [EMAIL PROTECTED]
> > Debug Sampler:
> > JMeterVariables:
> > START.YMD=20080502
> > JMeterThread.last_sample_ok=true
> > START.MS=1209764719713
> > START.HMS=234519
> > y=1
> >
> > However in the second and later iterations the BSF sampler fails and
> > jmeter.log contains the following messages:
> >
> > WARN - jmeter.protocol.java.sampler.BSFSampler:
> > java.lang.RuntimeException: No Context associated with current Thread
> > at org.mozilla.javascript.Context.getContext(Context.java:2195)
> > at
> org.mozilla.javascript.ScriptRuntime.toObject(ScriptRuntime.java:834)
> > at org.mozilla.javascript.Context.toObject(Context.java:1572)
> >
> > It looks like the required jmeter context passed to the javascript
> > interpreter got lost at the end of the first execution of the BSF
> > sampler?
>
> Possibly, I've not used BSF much.
>
I've just tried, and similar scripts work fine with Beanshell.
It looks like the Javascript interpreter is more picky about re-use.
I'm trying to find out what is missing from the BSF Sampler as far as
Javascript is concerned.
> > Is there a working sample around that does some variable arithmetic
> > wile iterating through a control loop?
>
> Try using the User Parameters Pre-Processor instead; that will run
> before every sample in scope.
>
> Or use the functions on the samplers directly.
>
>
>
> > Thanks,
> >
> > Anne
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]