Hello - I think I have a pretty common situation here, but JMeter really seems 
to come up short for this usage.

Here is what I’m trying to do:

I am adding sets of records to a remote system in JSON.  There are three types 
of records:

Projects
Publications
Dataset

The JSON for each type of record is slightly different, so I made JSON 
templates for each of those.  These templates have variables to be replaced 
from a CSV file, so there are several ${MyUserVariableName} style variables in 
each template.  But, the remote system doesn’t like empty values, so I really 
need to take out sections of the template when the value is empty.  Here is an 
example:

====================================
. . .
      {
         "type":"Label",
         "name":"${keyword1}"
      },
      {
         "type":"Label",
         "name":"${keyword2}”  <<== skip this section b/t curly braces if 
${keyword2} is empty
      },
. . .
====================================

So the issues I’m having are the following:

1)  I don’t see a good way to remove sections of a template based on a 
parameter.  Something like this:
${if-present:keyword2}
Text and ${keyword2} other variables
${/if-present}

2) Templates are not actually supported
My template is actually in the HTTP Sample Post Body, but I really don’t want 
to edit a largish document in that tiny window, so it makes sense to keep the 
file external.  However, if I specify that a file should be included instead, 
user parameter replacement is not done on that file.

3) HTTP Request Sample File inclusion paths are not relative
Even if the user parameter replacement worked for POSTed files, its not 
possible to reference a file because the path is not interpreted as relative to 
the .jmx file and the ` tilde character does not work there.  Paths are 
generally broken throughout JMeter.  In some places the tilde works as a 
reference to the .jmx file location, in others it doesn’t and in other 
locations the path is assumed to be relative to the .jmx file.

4) The CSV Dataset Config component seems to be designed to only iterate via 
the loops of a Thread Group
The more natural (IMHO) construct of putting a CSV Dataset within a While Loop 
is either not supported or completely undocumented.  This makes it really hard 
to have multiple CSV Datasets b/c they each require their own Thread Group.  
This is a bit unwieldily and causes issues b/c the behavior changes if pulled 
in as a module, if threads are set to run concurrently vs sequentially, or if a 
login is required.



I filed a bug related to some of this stuff, but this just seems like a huge 
issue in usability for a relatively typical type of usage.
BUG:  https://issues.apache.org/bugzilla/show_bug.cgi?id=56197


Any thoughts on this?  Am I just approaching this wrong?


Thanks,

Eric Everman - Applications Developer
CIDA - Center for Integrated Data Analytics
US Geological Survey
Middleton, WI
http://cida.usgs.gov/

Reply via email to