>that I don't wan't to unzip those files, The question is why do you want to do that? whats the benefit? - Again you have setup and tear down threadgroups so you can do it before your test runs and clean it up after its done (or as part of your build) - note you have to factor in multiple threads too ..
On Tue, Jul 9, 2013 at 2:28 AM, Janusz Kowalczyk <[email protected]>wrote: > The thing is that I don't wan't to unzip those files, but just read > directly from them. > > OK, maybe easier way would be just returning a list or a map of variables, > so that I could iterate over it? > > ps. I put this strange loop just for the sake of the demo, so it doesn't > read more that 10 lines at a time :) > > > > On 8 July 2013 23:35, Deepak Shetty <[email protected]> wrote: > > > this.vars.put(this.outputVariable, line); ==> Always overwrites the > current > > value > > should be the last line however unless your loop is also incorrect > > > > But the better way is to get your data in the form you want first , then > > start the test rather than the test writing some code to read the data > i.e. > > unzip your files whatever before you mai n test begins (as part of your > > build or as a startup threadgroup ) > > > > > > On Mon, Jul 8, 2013 at 12:42 PM, Janusz Kowalczyk < > > [email protected] > > > wrote: > > > > > Hi All, > > > > > > I'd like to create a script that would read a zipped text file, and for > > > example for each line (passed as variable) send a HTTP request. > > > > > > So far, I've written a script that works partially :) > > > Partially, because sending a new line to log.info() prints out this > new > > > line (which is good :) ), but when I set the value of a variable to > newly > > > read line, then the value of that variable remains the same and is > always > > > equal to the first line of that text file. > > > > > > Please find the code below. To test it: > > > - create a simple text file with just few lines of random text, > > > - zip that text file > > > - Add a JSR223 preprocessor & set the script language to Java > > > - configure the script accordingly > > > - add a HTTP sampler and add ${CONTEXT} to the "RAW Post Body" field > > > - check the msg value of the http request in "View Results Tree" > > > > > > > > > import java.io.*; > > > import java.util.zip.ZipEntry; > > > import java.util.zip.ZipFile; > > > import org.apache.log.Logger; > > > import org.apache.jmeter.threads.JMeterVariables; > > > > > > public class JmeterZipReader > > > { > > > private String zipFile; > > > private Logger log; > > > private String outputVariable; > > > private JMeterVariables vars; > > > > > > JmeterZipReader(String zipFile, Logger log, String outputVariable, > > > JMeterVariables vars){ > > > this.zipFile = zipFile; > > > this.log = log; > > > this.outputVariable = outputVariable; > > > this.vars = vars; > > > } > > > > > > // textFile is the name of the text file inside the zip file > > > public void read(String textFile){ > > > ZipFile zip; > > > ZipEntry ze; > > > InputStream input; > > > BufferedReader br; > > > > > > try { > > > zip=new ZipFile(this.zipFile); > > > ze=zip.getEntry(textFile); > > > input = zip.getInputStream(ze); > > > br = new BufferedReader(new InputStreamReader(input, > > > "US-ASCII")); > > > > > > String line; > > > int cnt = 0; > > > while((line = br.readLine()) != null && cnt <= 10) { > > > this.vars.put(this.outputVariable, line); > > > log.info(line); > > > cnt += 1; > > > } > > > > > > br.close(); > > > zip.close(); > > > } > > > catch (Exception e) { > > > log.error("Unhandled exception:"); > > > e.printStackTrace(); > > > } > > > } > > > } > > > > > > JmeterZipReader jzr = new JmeterZipReader("/path/to/a/test.zip", log, > > > "CONTEXT", ctx.getVariables()); > > > jzr.read("test.csv"); > > > > > > > > > > > > Many thanks, > > > Janusz > > > > > >
