Author: sebb Date: Mon Sep 1 09:09:40 2008 New Revision: 691010 URL: http://svn.apache.org/viewvc?rev=691010&view=rev Log: Bug 45694 - Support GZIP compressed logs
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java jakarta/jmeter/trunk/xdocs/changes.xml Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java?rev=691010&r1=691009&r2=691010&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java (original) +++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java Mon Sep 1 09:09:40 2008 @@ -20,12 +20,15 @@ import java.io.BufferedReader; import java.io.File; +import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.StringTokenizer; import java.util.Vector; +import java.util.zip.GZIPInputStream; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.testelement.TestElement; @@ -170,26 +173,17 @@ } /** - * Creates a new File object. - * - * @param filename - */ - public File openFile(String filename) { - return new File(filename); - } - - /** * parse the entire file. * * @return boolean success/failure */ public int parse(TestElement el, int parseCount) { if (this.SOURCE == null) { - this.SOURCE = this.openFile(this.FILENAME); + this.SOURCE = new File(this.FILENAME); } try { if (this.READER == null) { - this.READER = new BufferedReader(new FileReader(this.SOURCE)); + this.READER = getReader(this.SOURCE); } return parse(this.READER, el, parseCount); } catch (Exception exception) { @@ -198,6 +192,24 @@ return -1;// indicate that an error occured } + private static BufferedReader getReader(File file) throws IOException { + if (! isGZIP(file)) { + return new BufferedReader(new FileReader(file)); + } + GZIPInputStream in = new GZIPInputStream(new FileInputStream(file)); + return new BufferedReader(new InputStreamReader(in)); + } + + private static boolean isGZIP(File file) throws IOException { + FileInputStream in = new FileInputStream(file); + try { + return in.read() == (GZIPInputStream.GZIP_MAGIC & 0xFF) + && in.read() == (GZIPInputStream.GZIP_MAGIC >> 8); + } finally { + in.close(); + } + } + /** * parse a set number of lines from the access log. Keep in mind the number * of lines parsed will depend the filter and number of lines in the log. Modified: jakarta/jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=691010&r1=691009&r2=691010&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/changes.xml (original) +++ jakarta/jmeter/trunk/xdocs/changes.xml Mon Sep 1 09:09:40 2008 @@ -104,6 +104,7 @@ <li>Added __unescapeHtml() function: decodes Html-encoded text.</li> <li>Added __escapeHtml() function: encodes text using Html-encoding.</li> <li>Allow spaces in JMeter path names (apply work-round for Java bug 4496398)</li> +<li>Bug 45694 - Support GZIP compressed logs</li> </ul> <h3>Non-functional changes</h3> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]