In this case, "Failure" is a BeanShell variable, not a JMeter
Variable, so is not available to the rest of JMeter.

One way round this is to use properties - however, these are global.

The sample file bin/BeanShellSampler.bshrc shows how to read/write
JMeter properties.

It's also possible to access the JMeter variables as follows:

import org.apache.jmeter.threads;

                JMeterContext jmctx = JMeterContextService.getContext();
                JMeterVariables vars = jmctx.getVariables();

                vars.put("myvar","abcd");
                value=vars.get("myvar");

The BeanShell function already has access to "ctx" and "vars";
unfortunately these were not set up for the Beanshell Assertion or
BeanShell Sampler. This will be fixed in a later release, meanwhile
you can use the code above to set a JMeter Variable, which will then
be available to all other test elements in the same thread.

Hope this helps.

S.
On 4/14/05, Isabel Beltran <[EMAIL PROTECTED]> wrote:
> In my test case, after each HTTPSampler I run a BeanShell assertion to test
> the response data and set Failure to true/false accordingly.
> 
> Till now, I set "setStopThread" to "true" and exit when " failure==true".
> But now, I need to do a final sampler to do some cleanup even when it fails.
> I decided to use the IFController with the condition true!=${Failure} to
> jump over. It is not working. So, I changed my mind to use a user variable
> or user parameter inside the BeanShell assertion and use it in the
> condition, but I do not know if it is possible  to access UserParameters in
> BeanShell assertion and how can it be done.
> 
> So, am I in the right path?. Any ideas on how to achieve this?.
> 
> I know that it can be done easy using the Regular Expression Extractor to
> set a variable to  be used in the condition, but I am receiving EBCDIC data
> in the response.
> 
> The BeanShell assertion looks this way:
> 
>         byte [] arr = (byte[]) ResponseData ;
>         if (arr!=null && (arr[33] & 0x0d) == 0x0d) {
>             Failure= true ;
>             FailureMessage = " Error" ;
>             ByteArrayOutputStream baos = new ByteArrayOutputStream();
>             baos.write(ResponseData);
>             baos.close();
>             log.debug("Response data = " + baos.toString("Cp1047"));
> //          setStopThread(true);
>         }
> 
> Any help would be appreciated. Thanks in advance
> 
> Isabel
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to