You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Sankar Das <00...@gmail.com> on 2016/11/18 14:15:49 UTC

BeanShell Assertion in jdbc request

Hello Everyone,

Getting two columns from a jdbc sampler  i.e ID and WF. Trying to fail it,
if it exceeds than the predefined variables by using beanshell.
Below is the sample code.

String myValue1 = vars.get("WF_1");
String myValue2 = vars.get("WF_2");
if(!myValue1.equals ("3")){
  log.info("myValue1 =" + myValue1);
  Failure = true;
  FailureMessage = " The database value should be " + myValue1 + ".";
}
else if(!myValue2.equals ("5")){
  //log something
  Failure = true;
  log.info("myValue2 =" + myValue2);
   FailureMessage = " The database value should be " + myValue2 + ".";

else {
  //can be log something?
     Failure = false;


}
Above code is working when I know the number of rows for a particular
column. If the rows values are dynamic and increasing or decreasing
according to sysdate than how to compare them with the predefined and fail
the sampler.

Please help!

Thanks!

Re: BeanShell Assertion in jdbc request

Posted by Sankar Das <00...@gmail.com>.
Thank you sir for pointing me towards right direction.

On Fri, Nov 18, 2016 at 5:41 PM, sebb <se...@gmail.com> wrote:

> On 18 November 2016 at 15:10, Sankar Das <00...@gmail.com>
> wrote:
> > Hi,
> >
> > Thanks for the reply. Yes I am able to capture it.
> >
> > But my query is "SELECT STATUS,COUNT(*) FROM MYTABLE WHERE CREATIONTIME >
> > TRUNC(SYSDATE) GROUP BY STATUS"
> >
> > So I have two columns here ID_# and WF_# and the rows will increase and
> > decrease according to the sysdate.
>
> ID_# and WF_# are not columns.
>
> They are row counts, i.e. the number of ID_1,...ID_n and WF_1,...WF_n
> variables
>
> >
> > I want to do like this,
> >
> > If column1_row1_ ID_1 = Waiting and column2_row1_WF_1 > 25, than fail the
> > sampler  "Failure = true".
> >
> > But the rows values are changing according to sysdate.
> >
> > so want to capture all the rows value
>
> You already have the values in the variables ID_1...ID_n and WF_1...WF_n
> And the counts are in ID_# and WF_#
>
> > and compare them on run time and make
> > the sampler "failure true or false".
> >
>
> You wrote "Above code is working when I know the number of rows for a
> particular
> column. "
>
> I provided details on how to extract the row count.
>
> And you can get the value of a variable using vars.get(varname) where
> varname is a string containing the variable name.
>
> BeanShell is basically Java, so you can loop through values of n from
> 1 to ID_# and pick out the values:
>
> for (int i=1; i<vars.get("WF_#"); i++) {
>     id = vars.get("ID_"+i);
>     wf = vars.get("WF_"+i);
>    // do your checks
> }
>
> [Not tried this. You may need to use sprintf("ID_%i",i) to create the
> variable name.]
>
> >
> >
> >
> > On Fri, Nov 18, 2016 at 4:48 PM, sebb <se...@gmail.com> wrote:
> >
> >> On 18 November 2016 at 14:15, Sankar Das <00...@gmail.com>
> >> wrote:
> >> > Hello Everyone,
> >> >
> >> > Getting two columns from a jdbc sampler  i.e ID and WF. Trying to fail
> >> it,
> >> > if it exceeds than the predefined variables by using beanshell.
> >> > Below is the sample code.
> >> >
> >> > String myValue1 = vars.get("WF_1");
> >> > String myValue2 = vars.get("WF_2");
> >> > if(!myValue1.equals ("3")){
> >> >   log.info("myValue1 =" + myValue1);
> >> >   Failure = true;
> >> >   FailureMessage = " The database value should be " + myValue1 + ".";
> >> > }
> >> > else if(!myValue2.equals ("5")){
> >> >   //log something
> >> >   Failure = true;
> >> >   log.info("myValue2 =" + myValue2);
> >> >    FailureMessage = " The database value should be " + myValue2 + ".";
> >> >
> >> > else {
> >> >   //can be log something?
> >> >      Failure = false;
> >> >
> >> >
> >> > }
> >> > Above code is working when I know the number of rows for a particular
> >> > column. If the rows values are dynamic and increasing or decreasing
> >> > according to sysdate than how to compare them with the predefined and
> >> fail
> >> > the sampler.
> >> >
> >> > Please help!
> >>
> >> As per http://jmeter.apache.org/usermanual/component_
> >> reference.html#JDBC_Request
> >>
> >> the number of rows is stored in the variables
> >>
> >> ID_# and WF_#
> >>
> >> > Thanks!
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> >> For additional commands, e-mail: user-help@jmeter.apache.org
> >>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> For additional commands, e-mail: user-help@jmeter.apache.org
>
>

Re: BeanShell Assertion in jdbc request

Posted by sebb <se...@gmail.com>.
On 18 November 2016 at 15:10, Sankar Das <00...@gmail.com> wrote:
> Hi,
>
> Thanks for the reply. Yes I am able to capture it.
>
> But my query is "SELECT STATUS,COUNT(*) FROM MYTABLE WHERE CREATIONTIME >
> TRUNC(SYSDATE) GROUP BY STATUS"
>
> So I have two columns here ID_# and WF_# and the rows will increase and
> decrease according to the sysdate.

ID_# and WF_# are not columns.

They are row counts, i.e. the number of ID_1,...ID_n and WF_1,...WF_n variables

>
> I want to do like this,
>
> If column1_row1_ ID_1 = Waiting and column2_row1_WF_1 > 25, than fail the
> sampler  "Failure = true".
>
> But the rows values are changing according to sysdate.
>
> so want to capture all the rows value

You already have the values in the variables ID_1...ID_n and WF_1...WF_n
And the counts are in ID_# and WF_#

> and compare them on run time and make
> the sampler "failure true or false".
>

You wrote "Above code is working when I know the number of rows for a particular
column. "

I provided details on how to extract the row count.

And you can get the value of a variable using vars.get(varname) where
varname is a string containing the variable name.

BeanShell is basically Java, so you can loop through values of n from
1 to ID_# and pick out the values:

for (int i=1; i<vars.get("WF_#"); i++) {
    id = vars.get("ID_"+i);
    wf = vars.get("WF_"+i);
   // do your checks
}

[Not tried this. You may need to use sprintf("ID_%i",i) to create the
variable name.]

>
>
>
> On Fri, Nov 18, 2016 at 4:48 PM, sebb <se...@gmail.com> wrote:
>
>> On 18 November 2016 at 14:15, Sankar Das <00...@gmail.com>
>> wrote:
>> > Hello Everyone,
>> >
>> > Getting two columns from a jdbc sampler  i.e ID and WF. Trying to fail
>> it,
>> > if it exceeds than the predefined variables by using beanshell.
>> > Below is the sample code.
>> >
>> > String myValue1 = vars.get("WF_1");
>> > String myValue2 = vars.get("WF_2");
>> > if(!myValue1.equals ("3")){
>> >   log.info("myValue1 =" + myValue1);
>> >   Failure = true;
>> >   FailureMessage = " The database value should be " + myValue1 + ".";
>> > }
>> > else if(!myValue2.equals ("5")){
>> >   //log something
>> >   Failure = true;
>> >   log.info("myValue2 =" + myValue2);
>> >    FailureMessage = " The database value should be " + myValue2 + ".";
>> >
>> > else {
>> >   //can be log something?
>> >      Failure = false;
>> >
>> >
>> > }
>> > Above code is working when I know the number of rows for a particular
>> > column. If the rows values are dynamic and increasing or decreasing
>> > according to sysdate than how to compare them with the predefined and
>> fail
>> > the sampler.
>> >
>> > Please help!
>>
>> As per http://jmeter.apache.org/usermanual/component_
>> reference.html#JDBC_Request
>>
>> the number of rows is stored in the variables
>>
>> ID_# and WF_#
>>
>> > Thanks!
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
>> For additional commands, e-mail: user-help@jmeter.apache.org
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org


Re: BeanShell Assertion in jdbc request

Posted by Sankar Das <00...@gmail.com>.
Hi,

Thanks for the reply. Yes I am able to capture it.

But my query is "SELECT STATUS,COUNT(*) FROM MYTABLE WHERE CREATIONTIME >
TRUNC(SYSDATE) GROUP BY STATUS"

So I have two columns here ID_# and WF_# and the rows will increase and
decrease according to the sysdate.
I want to do like this,

If column1_row1_ ID_1 = Waiting and column2_row1_WF_1 > 25, than fail the
sampler  "Failure = true".

But the rows values are changing according to sysdate.

so want to capture all the rows value and compare them on run time and make
the sampler "failure true or false".





On Fri, Nov 18, 2016 at 4:48 PM, sebb <se...@gmail.com> wrote:

> On 18 November 2016 at 14:15, Sankar Das <00...@gmail.com>
> wrote:
> > Hello Everyone,
> >
> > Getting two columns from a jdbc sampler  i.e ID and WF. Trying to fail
> it,
> > if it exceeds than the predefined variables by using beanshell.
> > Below is the sample code.
> >
> > String myValue1 = vars.get("WF_1");
> > String myValue2 = vars.get("WF_2");
> > if(!myValue1.equals ("3")){
> >   log.info("myValue1 =" + myValue1);
> >   Failure = true;
> >   FailureMessage = " The database value should be " + myValue1 + ".";
> > }
> > else if(!myValue2.equals ("5")){
> >   //log something
> >   Failure = true;
> >   log.info("myValue2 =" + myValue2);
> >    FailureMessage = " The database value should be " + myValue2 + ".";
> >
> > else {
> >   //can be log something?
> >      Failure = false;
> >
> >
> > }
> > Above code is working when I know the number of rows for a particular
> > column. If the rows values are dynamic and increasing or decreasing
> > according to sysdate than how to compare them with the predefined and
> fail
> > the sampler.
> >
> > Please help!
>
> As per http://jmeter.apache.org/usermanual/component_
> reference.html#JDBC_Request
>
> the number of rows is stored in the variables
>
> ID_# and WF_#
>
> > Thanks!
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> For additional commands, e-mail: user-help@jmeter.apache.org
>
>

Re: BeanShell Assertion in jdbc request

Posted by sebb <se...@gmail.com>.
On 18 November 2016 at 14:15, Sankar Das <00...@gmail.com> wrote:
> Hello Everyone,
>
> Getting two columns from a jdbc sampler  i.e ID and WF. Trying to fail it,
> if it exceeds than the predefined variables by using beanshell.
> Below is the sample code.
>
> String myValue1 = vars.get("WF_1");
> String myValue2 = vars.get("WF_2");
> if(!myValue1.equals ("3")){
>   log.info("myValue1 =" + myValue1);
>   Failure = true;
>   FailureMessage = " The database value should be " + myValue1 + ".";
> }
> else if(!myValue2.equals ("5")){
>   //log something
>   Failure = true;
>   log.info("myValue2 =" + myValue2);
>    FailureMessage = " The database value should be " + myValue2 + ".";
>
> else {
>   //can be log something?
>      Failure = false;
>
>
> }
> Above code is working when I know the number of rows for a particular
> column. If the rows values are dynamic and increasing or decreasing
> according to sysdate than how to compare them with the predefined and fail
> the sampler.
>
> Please help!

As per http://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request

the number of rows is stored in the variables

ID_# and WF_#

> Thanks!

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
For additional commands, e-mail: user-help@jmeter.apache.org