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
> >
>

Reply via email to