mstover1 2004/07/14 14:24:04 Modified: src/components/org/apache/jmeter/visualizers ViewResultsFullVisualizer.java src/core/org/apache/jmeter/engine StandardJMeterEngine.java src/protocol/http/org/apache/jmeter/protocol/http/sampler AccessLogSampler.java HTTPSampleResult.java HTTPSampler.java HTTPSampler2.java HTTPSamplerBase.java src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog TCLogParser.java Log: Struggling with access log parser, fixing HttpSampleResult display Revision Changes Path 1.45 +2 -4 jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java Index: ViewResultsFullVisualizer.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- ViewResultsFullVisualizer.java 20 Jun 2004 01:23:40 -0000 1.44 +++ ViewResultsFullVisualizer.java 14 Jul 2004 21:24:04 -0000 1.45 @@ -124,7 +124,6 @@ log.debug("updateGui1 : sample result - " + res); } DefaultMutableTreeNode currNode = new DefaultMutableTreeNode(res); - treeModel.insertNodeInto(currNode, root, root.getChildCount()); addSubResults(currNode, res); log.debug("End : updateGui1"); @@ -160,13 +159,12 @@ public void clear() { log.debug("Start : clear1"); - int totalChild = root.getChildCount(); if (log.isDebugEnabled()) { - log.debug("clear1 : total child - " + totalChild); + log.debug("clear1 : total child - " + root.getChildCount()); } - for (int i = 0; i < totalChild; i++) + while (root.getChildCount() > 0) { // the child to be removed will always be 0 'cos as the nodes are // removed the nth node will become (n-1)th 1.52 +23 -14 jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java Index: StandardJMeterEngine.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java,v retrieving revision 1.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- StandardJMeterEngine.java 2 Jul 2004 18:25:22 -0000 1.51 +++ StandardJMeterEngine.java 14 Jul 2004 21:24:04 -0000 1.52 @@ -250,8 +250,10 @@ public synchronized void threadFinished(JMeterThread thread) { allThreads.remove(thread); + log.info("Ending thread " + thread.getThreadNum()); if (!serialized && allThreads.size() == 0 && !schcdule_run) { + log.info("Stopping test"); stopTest(); } } @@ -266,22 +268,29 @@ { public void run() { - log.debug("Stopping test"); - if (running) + try { - running = false; - tellThreadsToStop(); - try - { - Thread.sleep(10 * allThreads.size()); - } - catch (InterruptedException e) - { - } - verifyThreadsStopped(); - notifyTestListenersOfEnd(); + log.debug("Stopping test"); + if (running) + { + running = false; + tellThreadsToStop(); + try + { + Thread.sleep(10 * allThreads.size()); + } + catch (InterruptedException e) + { + } + verifyThreadsStopped(); + notifyTestListenersOfEnd(); + } + JMeterContextService.endTest(); + } + catch(Exception e) + { + log.error("Bad!",e); } - JMeterContextService.endTest(); } } 1.17 +47 -26 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.java Index: AccessLogSampler.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- AccessLogSampler.java 14 Jul 2004 14:33:41 -0000 1.16 +++ AccessLogSampler.java 14 Jul 2004 21:24:04 -0000 1.17 @@ -75,6 +75,7 @@ private String logFile, parserClassName, filterClassName; transient private Filter filter; private int count = 0; + private boolean started = false; /** * Set the path where XML messages are stored for random selection. @@ -140,12 +141,13 @@ int thisCount = PARSER.parseAndConfigure(1, this); if (thisCount == 0) { - if (count == 0) + if (count == 0 || filter == null) { JMeterContextService.getContext().getThread().stop(); } - log.info("parser returned 0 paths"); - filter.reset(); + if(filter != null) + filter.reset(); + getCookieManager().clear(); count = 0; return null; } @@ -282,11 +284,11 @@ protected void initFilter() { - if (filter == null && filterClassName != null) + if (filter == null && filterClassName != null && filterClassName.length() > 0) { try { - filter = (LogFilter) Class.forName(filterClassName).newInstance(); + filter = (Filter) Class.forName(filterClassName).newInstance(); } catch (Exception e) { @@ -306,27 +308,46 @@ public Object clone() { AccessLogSampler s = (AccessLogSampler) super.clone(); - if (filterClassName != null) + if(started) { - - try - { - if (TestCloneable.class.isAssignableFrom(Class - .forName(filterClassName))) - { - if (filter == null) - { - filter = (Filter) Class.forName(filterClassName) - .newInstance(); - } - s.filter = (Filter) ((TestCloneable) filter).clone(); - } - } - catch (Exception e) - { - log.warn("Could not clone cloneable filter", e); - } + if (filterClassName != null && filterClassName.length() > 0) + { + + try + { + if (TestCloneable.class.isAssignableFrom(Class + .forName(filterClassName))) + { + initFilter(); + s.filter = (Filter) ((TestCloneable) filter).clone(); + } + } + catch (Exception e) + { + log.warn("Could not clone cloneable filter", e); + } + } } return s; + } + /* (non-Javadoc) + * @see org.apache.jmeter.testelement.TestListener#testEnded() + */ + public void testEnded() + { + if(PARSER != null) + { + PARSER.close(); + } + started = false; + super.testEnded(); + } + /* (non-Javadoc) + * @see org.apache.jmeter.testelement.TestListener#testStarted() + */ + public void testStarted() + { + started = true; + super.testStarted(); } } 1.11 +12 -9 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampleResult.java Index: HTTPSampleResult.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampleResult.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- HTTPSampleResult.java 12 Feb 2004 00:29:49 -0000 1.10 +++ HTTPSampleResult.java 14 Jul 2004 21:24:04 -0000 1.11 @@ -21,6 +21,8 @@ import java.net.URL; import org.apache.jmeter.samplers.SampleResult; +import org.apache.jorphan.logging.LoggingManager; +import org.apache.log.Logger; /** * This is a specialisation of the SampleResult class for the HTTP protocol. @@ -30,6 +32,7 @@ */ public class HTTPSampleResult extends SampleResult { + private static Logger log = LoggingManager.getLoggerForClass(); public HTTPSampleResult() { super(); @@ -49,7 +52,6 @@ public HTTPSampleResult(HTTPSampleResult res) { super(res); - setHTTPMethod(res.getHTTPMethod()); setURL(res.getURL()); setCookies(res.getCookies()); @@ -115,12 +117,13 @@ { sb.append(' '); sb.append(u.toString()); - } - String s= super.getSamplerData(); - if (s != null) - { - sb.append('\n'); - sb.append(s); + if("POST".equals(getHTTPMethod())) + { + sb.append(getQueryString()); + } + sb.append("\n"); + sb.append(getRequestHeaders()); + sb.append(getCookies()); } return sb.toString(); } 1.97 +12 -13 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java Index: HTTPSampler.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- HTTPSampler.java 3 Jul 2004 14:03:58 -0000 1.96 +++ HTTPSampler.java 14 Jul 2004 21:24:04 -0000 1.97 @@ -171,17 +171,17 @@ if (method.equals(POST)) { String q = this.getQueryString(); - res.setQueryString(q); - sb.append("Query data:\n"); + sb.append("\nQuery data:\n"); sb.append(q); - sb.append('\n'); + res.setQueryString(sb.toString()); } if (cookies != null) { - res.setCookies(cookies); - sb.append("\nCookie Data:\n"); - sb.append(cookies); - sb.append('\n'); + StringBuffer temp = new StringBuffer("\nCookie Data:\n"); + temp.append(cookies); + temp.append('\n'); + res.setCookies(temp.toString()); + sb.append(temp); } res.setSamplerData(sb.toString()); //TODO rather than stuff all the information in here, @@ -567,8 +567,7 @@ res.addSubResult( errorResult( new Exception("Maximum frame/iframe nesting depth exceeded."), - null, - 0)); + res)); } else { @@ -590,7 +589,7 @@ catch (IOException e) { res.sampleEnd(); - return errorResult(e, url.toString(), res.getTime()); + return errorResult(e, res); } finally { @@ -639,7 +638,7 @@ } catch (MalformedURLException e) { - lastRes= errorResult(e, location, 0); + lastRes= errorResult(e, lastRes); } totalRes.addSubResult(lastRes); @@ -653,8 +652,7 @@ lastRes= errorResult( new IOException("Exceeeded maximum number of redirects: "+MAX_REDIRECTS), - null, - 0); + lastRes); totalRes.addSubResult(lastRes); } @@ -668,6 +666,7 @@ // redirect chain in the location field. totalRes.setURL(lastRes.getURL()); totalRes.setHTTPMethod(lastRes.getHTTPMethod()); + totalRes.setQueryString(lastRes.getQueryString()); totalRes.setRequestHeaders(lastRes.getRequestHeaders()); totalRes.setResponseData(lastRes.getResponseData()); 1.14 +7 -7 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java Index: HTTPSampler2.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- HTTPSampler2.java 5 Jul 2004 23:29:39 -0000 1.13 +++ HTTPSampler2.java 14 Jul 2004 21:24:04 -0000 1.14 @@ -280,6 +280,7 @@ res.setURL(u); res.setHTTPMethod(method); res.setRequestHeaders(hdrs); + res.setQueryString(getQueryString()); } setConnectionAuthorization(httpMethod, u, getAuthManager()); @@ -553,8 +554,7 @@ res.addSubResult( errorResult( new Exception("Maximum frame/iframe nesting depth exceeded."), - null, - 0)); + res)); } else { @@ -577,14 +577,14 @@ catch (IllegalArgumentException e)// e.g. some kinds of invalid URL { res.sampleEnd(); - HTTPSampleResult err = errorResult(e, url.toString(), res.getTime()); + HTTPSampleResult err = errorResult(e, res); err.setSampleLabel("Error: "+url.toString()); return err; } catch (IOException e) { res.sampleEnd(); - HTTPSampleResult err = errorResult(e, url.toString(), res.getTime()); + HTTPSampleResult err = errorResult(e, res); err.setSampleLabel("Error: "+url.toString()); return err; } @@ -632,7 +632,7 @@ } catch (MalformedURLException e) { - lastRes= errorResult(e, location, 0); + lastRes= errorResult(e, lastRes); } totalRes.addSubResult(lastRes); @@ -646,8 +646,7 @@ lastRes= errorResult( new IOException("Exceeeded maximum number of redirects: "+MAX_REDIRECTS), - null, - 0); + lastRes); totalRes.addSubResult(lastRes); } @@ -661,6 +660,7 @@ // redirect chain in the location field. totalRes.setURL(lastRes.getURL()); totalRes.setHTTPMethod(lastRes.getHTTPMethod()); + totalRes.setQueryString(lastRes.getQueryString()); totalRes.setRequestHeaders(lastRes.getRequestHeaders()); totalRes.setResponseData(lastRes.getResponseData()); 1.7 +7 -14 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java Index: HTTPSamplerBase.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- HTTPSamplerBase.java 3 Jul 2004 02:28:27 -0000 1.6 +++ HTTPSamplerBase.java 14 Jul 2004 21:24:04 -0000 1.7 @@ -378,15 +378,12 @@ * during sampling, and how long it took to detect the error. * * @param e Exception representing the error. - * @param data a piece of data associated to the error (e.g. URL) - * @param time time spent detecting the error (0 for client-only issues) + * @param current SampleResult * @return a sampling result useful to inform the user about the exception. */ - protected HTTPSampleResult errorResult(Throwable e, String data, long time) + protected HTTPSampleResult errorResult(Throwable e, HTTPSampleResult res) { - HTTPSampleResult res= new HTTPSampleResult(time); res.setSampleLabel("Error"); - res.setSamplerData(data); res.setDataType(HTTPSampleResult.TEXT); ByteArrayOutputStream text= new ByteArrayOutputStream(200); e.printStackTrace(new PrintStream(text)); @@ -394,10 +391,6 @@ res.setResponseCode(NON_HTTP_RESPONSE_CODE); res.setResponseMessage(NON_HTTP_RESPONSE_MESSAGE); res.setSuccessful(false); - try { - res.setURL(getUrl()); - } catch (MalformedURLException ex){ - } res.setMonitor(this.isMonitor()); return res; } @@ -583,15 +576,16 @@ */ public SampleResult sample() { + HTTPSampleResult res = new HTTPSampleResult(); try { - SampleResult res= sample(getUrl(), getMethod(), false, 0); + res= sample(getUrl(), getMethod(), false, 0); res.setSampleLabel(getName()); return res; } catch (MalformedURLException e) { - return errorResult(e, getName(), 0); + return errorResult(e, res); } } @@ -644,7 +638,7 @@ catch (HTMLParseException e) { // Don't break the world just because this failed: - res.addSubResult(errorResult(e, null, 0)); + res.addSubResult(errorResult(e, res)); res.setSuccessful(false); } @@ -676,8 +670,7 @@ res.addSubResult( errorResult( new Exception(binURL + " is not a correct URI"), - null, - 0)); + res)); res.setSuccessful(false); continue; } 1.17 +16 -29 jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java Index: TCLogParser.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- TCLogParser.java 14 Jul 2004 14:33:42 -0000 1.16 +++ TCLogParser.java 14 Jul 2004 21:24:04 -0000 1.17 @@ -92,17 +92,6 @@ * The path to the access log file */ protected String URL_PATH = null; - /** - * A counter used by the parser. - * it is the real count of lines - * parsed - */ - protected int COUNT = 0; - /** - * the number of lines the user - * wishes to parse - */ - protected int PARSECOUNT = -1; protected boolean useFILE = true; protected File SOURCE = null; @@ -179,7 +168,7 @@ * parse the entire file. * @return boolean success/failure */ - public boolean parse(TestElement el) + public int parse(TestElement el,int parseCount) { if (this.SOURCE == null) { @@ -191,13 +180,13 @@ { this.READER = new BufferedReader(new FileReader(this.SOURCE)); } - parse(this.READER,el); + return parse(this.READER,el,parseCount); } catch (Exception exception) { log.error("Problem creating samples",exception); } - return true; + return 0; } /** @@ -212,13 +201,7 @@ */ public int parseAndConfigure(int count,TestElement el) { - COUNT = 0; - if (count > 0) - { - this.PARSECOUNT = count; - } - this.parse(el); - return COUNT; + return this.parse(el,count); } /** @@ -227,8 +210,9 @@ * if a set number of lines is given. * @param breader */ - protected void parse(BufferedReader breader,TestElement el) + protected int parse(BufferedReader breader,TestElement el,int parseCount) { + int actualCount = 0; String line = null; try { @@ -239,14 +223,14 @@ { if (line.length() > 0) { - this.parseLine(line,el); + actualCount += this.parseLine(line,el); } // we check the count to see if we have exceeded // the number of lines to parse. There's no way // to know where to stop in the file. Therefore // we use break to escape the while loop when // we've reached the count. - if (this.PARSECOUNT != -1 && COUNT >= this.PARSECOUNT) + if (parseCount != -1 && actualCount >= parseCount) { break; } @@ -265,6 +249,7 @@ { log.error("Error reading log file",ioe); } + return actualCount; } /** @@ -272,8 +257,9 @@ * to parse the given text. * @param line */ - protected void parseLine(String line,TestElement el) + protected int parseLine(String line,TestElement el) { + int count = 0; // we clean the line to get // rid of extra stuff String cleanedLine = this.cleanURL(line); @@ -287,7 +273,7 @@ { log.debug("line was not filtered"); // increment the current count - COUNT++; + count++; // we filter the line first, before we try // to separate the URL into file and // parameters. @@ -306,11 +292,12 @@ { log.debug("filter was null"); // increment the current count - COUNT++; + count++; // in the case when the filter is not set, we // parse all the lines createUrl(cleanedLine,el); } + return count; } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]