On 11/04/2008, Steve Kapinos <[EMAIL PROTECTED]> wrote: > >So, you're suggesting that I should learn Jexl so that I can divide one > number by another in JMeter? > > > Yes you must use javascript, but its stupid simple. Javascript help on > operators > http://www.w3schools.com/js/js_operators.asp > > Functions are very simple > > ${__jexl(${log1ID}+1)} > > > >Wow, that's absolutely NOT what I'd expect and I don't see that > mentioned anywhere in the documentation. > > > I came across this as well.. Basically you can't reference another > variable in a UDV that was defined in that same UDV element. Things > aren't ready till the end of the element. sebb added to the > documentation in-progress at that point to help make that clear. > > > >*Should* work and *does* work are totally different things. My > experience with JMeter suggests that JMeter is > >remarkably inconsistent as to what text fields/etc. are actually > interpreted > > > It's confusing at first, but once you know what's happening its not so > bad to work with. You must live with the assumption that if jmeter > doesn't understand the reference, it will just be passed as a literal > string. This includes undefined variable names or syntax mismatches. > Basically, instead of stopping and erroring, its going to continue and > pass that as a string 'as is' rather then evaluate it. > > Common things I found that trip you up > - case sensativity in function and variable names > - the usual { vs ( typos > - typos or mismatches in variable or function names > > People are accustomed to the program halting on syntax checking or > references and jmeter simply doesn't do that. So any errors must be > caught through monitoring the values being used. Only when you get > invalid parameters in some of the samplers, etc do you typically get an > exception at run time. > > The key is to use the debug sampler often when writing the script to > monitor the variables and properties to ensure you are manipulating what > you expect. Every time I had problems like you described, it was > typically one of the above problems. The UDV issue of referencing the > variable that was just defined in the same element has been the only > real problem I've encounter. The rest is just coping with no syntax or > reference checking... So the burden of debugging is on you. > > What I would like to see in jmeter though is a element that can be used > just for processing expressions, etc. It seems many of the functions, > etc are intended to used 'in line' vs the model of modifying variables > and expressions first, then passing them into the samplers/etc. Maybe an > 'executor' block :) >
You can use the User Parameters Pre-Processor for defining variables as the results of functions - I'm not sure what else you have in mind. > > > ----- Original Message ---- > From: sebb <[EMAIL PROTECTED]> > To: JMeter Users List <[email protected]> > Sent: Thursday, April 10, 2008 6:20:03 PM > Subject: Re: Understanding How to Twiddle Values in JMeter > > On 11/04/2008, Dan Tripp <[EMAIL PROTECTED]> wrote: > > Howdy All, > > > > I'm trying to perform some simple calculations with data I've > extracted using an HTTP sampler and the Regular Expression Extractor. I > have no problem getting the values I need/want/expect from the Regex, > but I can't seem to add numbers together, and I can't seem to figure out > *WHERE* the calculations should go. > > > > The simplest sample I've come up with looks like this: > > > > Test Plan > > + Thread Group > > - User Defined Variables > > - Debug Sampler > > - View Results Tree > > Workbench > > > > In User Defined Variables, I have: > > > > Name Value > > ====== ================================ > > var1 __eval(30 + 6) > > __eval() does not evaluate numeric expressions. > > You can use intSum() for adding/subtracting numbers, otherwise use Jexl. > > > var2 ${__eval(30 + 6)} > > var3 10 / 4 > > var4 ${__eval(10 / 4)} > > var5 ${__time(YMD)} > > column uname > > table users > > sql SELECT ${column} FROM ${table} > > > > The output I see from the Debug Sampler is NOT what I'd expect: > > > > var1 = __eval(30 + 6) > > var2 = ${__eval(30 + 6)} > > - I was hoping to get "36" > > > > var3 = 10 / 4 > > var4 = ${__eval(10 / 4)} > > - I was hoping to get "2" > > > > var5 = ${__time(YMD)} > > - I was hoping to get "20080410" > > > > column = uname > > table = users > > sql = SELECT ${column} FROM ${table} > > I was hoping to get "SELECT uname FROM users" > > UDV variables are not defined until the entire element has been > processed. > If you put sql in a separate UDV it should work. > > > It may be the case that User Defined Variables is just a convenience > component which makes it easier to define variables than it would be to > import them from a text file and that my use of this component is > wayward/errant. However, I don't know where the heck to put this stuff > if this is the wrong place. > > > > Further, I don't seem to be able to get the expected values when I > put these types of expressions in other components... UNLESS I put them > in the title. The ${__time(YMD)} works great if I put it in a COMPONENT > LABEL (ie.- I name that component "Today is ${__time(YMD)}" I'll see > "Today is 20080410" in the results), but doesn't want to do what I'm > expecting when I stick it anywhere else. That makes absolutely no sense > to me. How/what am I not understanding? > > It should work almost anywhere. > > > > > I'd greatly appreciate any guidance/ pointers/ references to anything > that'll help me accomplish this. > > > > Regards, > > > > > > - Dan > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam protection around > > http://mail.yahoo.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > > --------------------------------------------------------------------- > 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]

