Thanks Felix, I committed all proposed fixes except "not all samplers support this", as I believe this statement is more correct for the future updates, where some more samplers might support it.
Andrey Pokhilko On 01/06/2015 11:54 AM, Felix Schumacher wrote: > Hi Andrey, > > I have only a few nitpicks. > > In the constructor of MeasuringConnectionManager I would rename the > variable aDefault to something like schemeRegistry. > > The javadoc for the private class MeasuringConnectionRequest starts > with "And", but I believe you meant "An". > > In the glossary you wrote "estable", but I think it should be > "establish". > > In listeners.xml there is a note about "not all samplers support > this", as I see it by now only httpclient 4 supports it ;) > > Thanks for your first commit. > > Felix > > Am 05.01.2015 um 20:49 schrieb [email protected]: >> Author: undera >> Date: Mon Jan 5 19:49:06 2015 >> New Revision: 1649629 >> >> URL: http://svn.apache.org/r1649629 >> Log: >> 48799 - Add connect time to output metrics >> >> Added: >> >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java >> Modified: >> jmeter/trunk/bin/jmeter.properties >> jmeter/trunk/bin/testfiles/AssertionTestPlan.jmx >> jmeter/trunk/bin/testfiles/AuthManagerTestPlan.jmx >> jmeter/trunk/bin/testfiles/GenTest210.jmx >> jmeter/trunk/bin/testfiles/GenTest27.jmx >> jmeter/trunk/bin/testfiles/GuiTest.jmx >> jmeter/trunk/bin/testfiles/GuiTest231.jmx >> jmeter/trunk/bin/testfiles/HeaderManagerTestPlan.jmx >> jmeter/trunk/bin/testfiles/InterleaveTestPlan.jmx >> jmeter/trunk/bin/testfiles/InterleaveTestPlan2.jmx >> jmeter/trunk/bin/testfiles/LoopTestPlan.jmx >> jmeter/trunk/bin/testfiles/OnceOnlyTestPlan.jmx >> jmeter/trunk/bin/testfiles/SimpleTestPlan.jmx >> >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java >> >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java >> >> jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java >> >> jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java >> >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java >> >> jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java >> jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java >> >> jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java >> >> jmeter/trunk/src/core/org/apache/jmeter/visualizers/TableSample.java >> >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java >> >> jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java >> jmeter/trunk/xdocs/changes.xml >> jmeter/trunk/xdocs/usermanual/glossary.xml >> jmeter/trunk/xdocs/usermanual/listeners.xml >> >> Modified: jmeter/trunk/bin/jmeter.properties >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.properties?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/jmeter.properties (original) >> +++ jmeter/trunk/bin/jmeter.properties Mon Jan 5 19:49:06 2015 >> @@ -465,6 +465,7 @@ log_level.jorphan=INFO >> #jmeter.save.saveservice.subresults=true >> #jmeter.save.saveservice.assertions=true >> #jmeter.save.saveservice.latency=true >> +#jmeter.save.saveservice.connect_time=false >> #jmeter.save.saveservice.samplerData=false >> #jmeter.save.saveservice.responseHeaders=false >> #jmeter.save.saveservice.requestHeaders=false >> >> Modified: jmeter/trunk/bin/testfiles/AssertionTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/AssertionTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/AssertionTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/AssertionTestPlan.jmx Mon Jan 5 >> 19:49:06 2015 >> @@ -60,6 +60,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -91,6 +92,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/AuthManagerTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/AuthManagerTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/AuthManagerTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/AuthManagerTestPlan.jmx Mon Jan 5 >> 19:49:06 2015 >> @@ -106,6 +106,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/GenTest210.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/GenTest210.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/GenTest210.jmx (original) >> +++ jmeter/trunk/bin/testfiles/GenTest210.jmx Mon Jan 5 19:49:06 2015 >> @@ -970,6 +970,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1002,6 +1003,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1034,6 +1036,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1080,6 +1083,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1112,6 +1116,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1146,6 +1151,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1186,6 +1192,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1227,6 +1234,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1259,6 +1267,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1299,6 +1308,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1331,6 +1341,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1363,6 +1374,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1395,6 +1407,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1427,6 +1440,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/GenTest27.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/GenTest27.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/GenTest27.jmx (original) >> +++ jmeter/trunk/bin/testfiles/GenTest27.jmx Mon Jan 5 19:49:06 2015 >> @@ -942,6 +942,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -974,6 +975,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1006,6 +1008,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1052,6 +1055,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1084,6 +1088,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1118,6 +1123,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1157,6 +1163,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1198,6 +1205,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1238,6 +1246,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1270,6 +1279,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1302,6 +1312,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1334,6 +1345,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1366,6 +1378,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/GuiTest.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/GuiTest.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/GuiTest.jmx (original) >> +++ jmeter/trunk/bin/testfiles/GuiTest.jmx Mon Jan 5 19:49:06 2015 >> @@ -189,6 +189,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -220,6 +221,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -251,6 +253,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -282,6 +285,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -313,6 +317,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -344,6 +349,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -375,6 +381,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/GuiTest231.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/GuiTest231.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/GuiTest231.jmx (original) >> +++ jmeter/trunk/bin/testfiles/GuiTest231.jmx Mon Jan 5 19:49:06 2015 >> @@ -787,6 +787,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -825,6 +826,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -857,6 +859,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -889,6 +892,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -930,6 +934,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -962,6 +967,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -994,6 +1000,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1026,6 +1033,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1058,6 +1066,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1090,6 +1099,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1122,6 +1132,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> @@ -1154,6 +1165,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/HeaderManagerTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/HeaderManagerTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/HeaderManagerTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/HeaderManagerTestPlan.jmx Mon Jan 5 >> 19:49:06 2015 >> @@ -59,6 +59,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/InterleaveTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/InterleaveTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/InterleaveTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/InterleaveTestPlan.jmx Mon Jan 5 >> 19:49:06 2015 >> @@ -99,6 +99,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/InterleaveTestPlan2.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/InterleaveTestPlan2.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/InterleaveTestPlan2.jmx (original) >> +++ jmeter/trunk/bin/testfiles/InterleaveTestPlan2.jmx Mon Jan 5 >> 19:49:06 2015 >> @@ -126,6 +126,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/LoopTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/LoopTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/LoopTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/LoopTestPlan.jmx Mon Jan 5 19:49:06 2015 >> @@ -83,6 +83,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/OnceOnlyTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/OnceOnlyTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/OnceOnlyTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/OnceOnlyTestPlan.jmx Mon Jan 5 >> 19:49:06 2015 >> @@ -80,6 +80,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: jmeter/trunk/bin/testfiles/SimpleTestPlan.jmx >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/bin/testfiles/SimpleTestPlan.jmx?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/bin/testfiles/SimpleTestPlan.jmx (original) >> +++ jmeter/trunk/bin/testfiles/SimpleTestPlan.jmx Mon Jan 5 19:49:06 >> 2015 >> @@ -117,6 +117,7 @@ >> <value class="SampleSaveConfiguration"> >> <time>true</time> >> <latency>true</latency> >> + <connectTime>false</connectTime> >> <timestamp>true</timestamp> >> <success>true</success> >> <label>true</label> >> >> Modified: >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java >> (original) >> +++ >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java >> Mon Jan 5 19:49:06 2015 >> @@ -229,6 +229,7 @@ public abstract class SamplerResultTab i >> String startTime = dateFormat.format(new >> Date(sampleResult.getStartTime())); >> >> statsBuff.append(JMeterUtils.getResString("view_results_sample_start")).append(startTime).append(NL); >> //$NON-NLS-1$ >> >> statsBuff.append(JMeterUtils.getResString("view_results_load_time")).append(sampleResult.getTime()).append(NL); >> //$NON-NLS-1$ >> + >> statsBuff.append(JMeterUtils.getResString("view_results_connect_time")).append(sampleResult.getConnectTime()).append(NL); >> //$NON-NLS-1$ >> >> statsBuff.append(JMeterUtils.getResString("view_results_latency")).append(sampleResult.getLatency()).append(NL); >> //$NON-NLS-1$ >> >> statsBuff.append(JMeterUtils.getResString("view_results_size_in_bytes")).append(sampleResult.getBytes()).append(NL); >> //$NON-NLS-1$ >> >> statsBuff.append(JMeterUtils.getResString("view_results_size_headers_in_bytes")).append(sampleResult.getHeadersSize()).append(NL); >> //$NON-NLS-1$ >> >> Modified: >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java >> (original) >> +++ >> jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java >> Mon Jan 5 19:49:06 2015 >> @@ -81,7 +81,8 @@ public class TableVisualizer extends Abs >> "table_visualizer_sample_time", // $NON-NLS-1$ >> "table_visualizer_status", // $NON-NLS-1$ >> "table_visualizer_bytes", // $NON-NLS-1$ >> - "table_visualizer_latency"}; // $NON-NLS-1$ >> + "table_visualizer_latency", // $NON-NLS-1$ >> + "table_visualizer_connect"}; // $NON-NLS-1$ >> private ObjectTableModel model = null; >> @@ -125,18 +126,19 @@ public class TableVisualizer extends Abs >> model = new ObjectTableModel(COLUMNS, >> TableSample.class, // The object used for >> each row >> new Functor[] { >> - new Functor("getSampleNumberString"), // $NON-NLS-1$ >> - new Functor("getStartTimeFormatted", // $NON-NLS-1$ >> + new Functor("getSampleNumberString"), // $NON-NLS-1$ >> + new Functor("getStartTimeFormatted", // $NON-NLS-1$ >> new Object[]{format}), >> - new Functor("getThreadName"), // $NON-NLS-1$ >> - new Functor("getLabel"), // $NON-NLS-1$ >> - new Functor("getElapsed"), // $NON-NLS-1$ >> + new Functor("getThreadName"), // $NON-NLS-1$ >> + new Functor("getLabel"), // $NON-NLS-1$ >> + new Functor("getElapsed"), // $NON-NLS-1$ >> new SampleSuccessFunctor("isSuccess"), // $NON-NLS-1$ >> - new Functor("getBytes"), // $NON-NLS-1$ >> - new Functor("getLatency") }, // $NON-NLS-1$ >> - new Functor[] { null, null, null, null, null, null, >> null, null }, >> + new Functor("getBytes"), // $NON-NLS-1$ >> + new Functor("getLatency"), // $NON-NLS-1$ >> + new Functor("getConnectTime") }, // $NON-NLS-1$ >> + new Functor[] { null, null, null, null, null, null, >> null, null, null }, >> new Class[] { >> - String.class, String.class, String.class, >> String.class, Long.class, ImageIcon.class, Long.class, Long.class }); >> + String.class, String.class, String.class, >> String.class, Long.class, ImageIcon.class, Long.class, Long.class, >> Long.class }); >> init(); >> } >> @@ -188,7 +190,9 @@ public class TableVisualizer extends Abs >> res.getTime(), >> res.isSuccessful(), >> res.getBytes(), >> - res.getLatency()); >> + res.getLatency(), >> + res.getConnectTime() >> + ); >> model.addRow(newS); >> } >> updateTextFields(res); >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java >> Mon Jan 5 19:49:06 2015 >> @@ -291,6 +291,7 @@ public class TransactionController exten >> res.setAllThreads(sampleResult.getAllThreads()); >> res.setGroupThreads(sampleResult.getGroupThreads()); >> res.setLatency(res.getLatency() + >> sampleResult.getLatency()); >> + res.setConnectTime(res.getConnectTime() + >> sampleResult.getConnectTime()); >> } >> } >> } >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties >> Mon Jan 5 19:49:06 2015 >> @@ -906,6 +906,7 @@ save_hostname=Save Hostname >> save_idletime=Save Idle Time >> save_label=Save Label >> save_latency=Save Latency >> +save_connecttime=Save Connect Time >> save_message=Save Response Message >> save_overwrite_existing_file=The selected file already exists, do >> you want to overwrite it? >> save_requestheaders=Save Request Headers (XML) >> @@ -1072,6 +1073,7 @@ system_sampler_stdout=Standard output (s >> system_sampler_title=OS Process Sampler >> table_visualizer_bytes=Bytes >> table_visualizer_latency=Latency >> +table_visualizer_connect=Connect >> table_visualizer_sample_num=Sample # >> table_visualizer_sample_time=Sample Time(ms) >> table_visualizer_start_time=Start Time >> @@ -1196,6 +1198,7 @@ view_results_error_count=Error Count: >> view_results_fields=fields: >> view_results_in_table=View Results in Table >> view_results_latency=Latency: >> +view_results_connect_time=Connect Time: >> view_results_load_time=Load time: >> view_results_render=Render: >> view_results_render_document=Document >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java >> Mon Jan 5 19:49:06 2015 >> @@ -178,7 +178,12 @@ public class SampleResult implements Ser >> /** time to first response */ >> private long latency = 0; >> - >> + >> + /** >> + * time to end connecting >> + */ >> + private long connectTime = 0; >> + >> /** Should thread start next iteration ? */ >> private boolean startNextThreadLoop = false; >> @@ -301,6 +306,7 @@ public class SampleResult implements Ser >> isMonitor = res.isMonitor; >> label = res.label;//OK >> latency = res.latency; >> + connectTime = res.connectTime; >> location = res.location;//OK >> parent = res.parent; // TODO ?? >> pauseTime = res.pauseTime; >> @@ -1207,6 +1213,29 @@ public class SampleResult implements Ser >> } >> /** >> + * @return Returns the connect time. >> + */ >> + public long getConnectTime() { >> + return connectTime; >> + } >> + >> + /** >> + * Set the time to the end of connecting >> + */ >> + public void connectEnd() { >> + connectTime = currentTimeInMillis() - startTime - idleTime; >> + } >> + >> + /** >> + * This is only intended for use by SampleResultConverter! >> + * >> + * @param time The connect time to set. >> + */ >> + public void setConnectTime(long time) { >> + this.connectTime = time; >> + } >> + >> + /** >> * This is only intended for use by SampleResultConverter! >> * >> * @param timeStamp >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java >> Mon Jan 5 19:49:06 2015 >> @@ -198,6 +198,7 @@ public class SampleSaveConfiguration imp >> private static final String SUBRESULTS_PROP = >> "jmeter.save.saveservice.subresults"; // $NON_NLS-1$ >> private static final String ASSERTIONS_PROP = >> "jmeter.save.saveservice.assertions"; // $NON_NLS-1$ >> private static final String LATENCY_PROP = >> "jmeter.save.saveservice.latency"; // $NON_NLS-1$ >> + private static final String CONNECT_TIME_PROP = >> "jmeter.save.saveservice.connect_time"; // $NON_NLS-1$ >> private static final String SAMPLERDATA_PROP = >> "jmeter.save.saveservice.samplerData"; // $NON_NLS-1$ >> private static final String RESPONSEHEADERS_PROP = >> "jmeter.save.saveservice.responseHeaders"; // $NON_NLS-1$ >> private static final String REQUESTHEADERS_PROP = >> "jmeter.save.saveservice.requestHeaders"; // $NON_NLS-1$ >> @@ -216,7 +217,7 @@ public class SampleSaveConfiguration imp >> // N.B. Remember to update the equals and hashCode methods when >> adding new variables. >> // Initialise values from properties >> - private boolean time = _time, latency = _latency, timestamp = >> _timestamp, success = _success, label = _label, >> + private boolean time = _time, latency = _latency, >> connectTime=_connectTime, timestamp = _timestamp, success = _success, >> label = _label, >> code = _code, message = _message, threadName = >> _threadName, dataType = _dataType, encoding = _encoding, >> assertions = _assertions, subresults = _subresults, >> responseData = _responseData, >> samplerData = _samplerData, xml = _xml, fieldNames = >> _fieldNames, responseHeaders = _responseHeaders, >> @@ -250,7 +251,7 @@ public class SampleSaveConfiguration imp >> // Defaults from properties: >> private static final boolean _time, _timestamp, _success, >> _label, _code, _message, _threadName, _xml, >> - _responseData, _dataType, _encoding, _assertions, >> _latency, _subresults, _samplerData, _fieldNames, >> + _responseData, _dataType, _encoding, _assertions, >> _latency, _connectTime, _subresults, _samplerData, _fieldNames, >> _responseHeaders, _requestHeaders; >> private static final boolean _responseDataOnError; >> @@ -303,6 +304,7 @@ public class SampleSaveConfiguration imp >> _subresults = >> TRUE.equalsIgnoreCase(props.getProperty(SUBRESULTS_PROP, TRUE)); >> _assertions = >> TRUE.equalsIgnoreCase(props.getProperty(ASSERTIONS_PROP, TRUE)); >> _latency = >> TRUE.equalsIgnoreCase(props.getProperty(LATENCY_PROP, TRUE)); >> + _connectTime = >> TRUE.equalsIgnoreCase(props.getProperty(CONNECT_TIME_PROP, FALSE)); >> _samplerData = >> TRUE.equalsIgnoreCase(props.getProperty(SAMPLERDATA_PROP, FALSE)); >> _responseHeaders = >> TRUE.equalsIgnoreCase(props.getProperty(RESPONSEHEADERS_PROP, FALSE)); >> _requestHeaders = >> TRUE.equalsIgnoreCase(props.getProperty(REQUESTHEADERS_PROP, FALSE)); >> @@ -441,6 +443,7 @@ public class SampleSaveConfiguration imp >> hostname = value; >> label = value; >> latency = value; >> + connectTime = value; >> message = value; >> printMilliseconds = _printMilliseconds;//is derived from >> properties only >> requestHeaders = value; >> @@ -491,6 +494,7 @@ public class SampleSaveConfiguration imp >> SampleSaveConfiguration s = (SampleSaveConfiguration)obj; >> boolean primitiveValues = s.time == time && >> s.latency == latency && >> + s.connectTime == connectTime && >> s.timestamp == timestamp && >> s.success == success && >> s.label == label && >> @@ -536,6 +540,7 @@ public class SampleSaveConfiguration imp >> int hash = 7; >> hash = 31 * hash + (time ? 1 : 0); >> hash = 31 * hash + (latency ? 1 : 0); >> + hash = 31 * hash + (connectTime ? 1 : 0); >> hash = 31 * hash + (timestamp ? 1 : 0); >> hash = 31 * hash + (success ? 1 : 0); >> hash = 31 * hash + (label ? 1 : 0); >> @@ -635,6 +640,14 @@ public class SampleSaveConfiguration imp >> this.latency = latency; >> } >> + public boolean saveConnectTime() { >> + return connectTime; >> + } >> + >> + public void setConnectTime(boolean connectTime) { >> + this.connectTime = connectTime; >> + } >> + >> public boolean saveMessage() { >> return message; >> } >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java >> Mon Jan 5 19:49:06 2015 >> @@ -101,6 +101,7 @@ public class StatisticalSampleResult ext >> this.setEndTime(Math.max(getEndTime(), res.getEndTime())); >> setLatency(getLatency()+ res.getLatency()); >> + setConnectTime(getConnectTime()+ res.getConnectTime()); >> elapsed += res.getTime(); >> } >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java >> (original) >> +++ jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java >> Mon Jan 5 19:49:06 2015 >> @@ -87,6 +87,7 @@ public final class CSVSaveService { >> private static final String CSV_URL = "URL"; // $NON-NLS-1$ >> private static final String CSV_FILENAME = "Filename"; // >> $NON-NLS-1$ >> private static final String CSV_LATENCY = "Latency"; // >> $NON-NLS-1$ >> + private static final String CSV_CONNECT_TIME = "Connect"; // >> $NON-NLS-1$ >> private static final String CSV_ENCODING = "Encoding"; // >> $NON-NLS-1$ >> private static final String CSV_HOSTNAME = "Hostname"; // >> $NON-NLS-1$ >> private static final String CSV_IDLETIME = "IdleTime"; // >> $NON-NLS-1$ >> @@ -350,6 +351,11 @@ public final class CSVSaveService { >> text = parts[i++]; >> result.setIdleTime(Long.parseLong(text)); >> } >> + if (saveConfig.saveConnectTime()) { >> + field = CSV_CONNECT_TIME; >> + text = parts[i++]; >> + result.setConnectTime(Long.parseLong(text)); >> + } >> if (i + saveConfig.getVarCount() < parts.length) { >> log.warn("Line: " + lineNumber + ". Found " + >> parts.length >> @@ -488,6 +494,11 @@ public final class CSVSaveService { >> text.append(delim); >> } >> + if (saveConfig.saveConnectTime()) { >> + text.append(CSV_CONNECT_TIME); >> + text.append(delim); >> + } >> + >> for (int i = 0; i < SampleEvent.getVarCount(); i++) { >> text.append(VARIABLE_NAME_QUOTE_CHAR); >> text.append(SampleEvent.getVarName(i)); >> @@ -541,6 +552,7 @@ public final class CSVSaveService { >> headerLabelMethods.put(CSV_ERROR_COUNT, new >> Functor("setSampleCount")); >> headerLabelMethods.put(CSV_HOSTNAME, new >> Functor("setHostname")); >> headerLabelMethods.put(CSV_IDLETIME, new >> Functor("setIdleTime")); >> + headerLabelMethods.put(CSV_CONNECT_TIME, new >> Functor("setConnectTime")); >> } >> /** >> @@ -951,6 +963,10 @@ public final class CSVSaveService { >> text.append(event.getResult().getIdleTime()); >> } >> + if (saveConfig.saveConnectTime()) { >> + text.append(sample.getConnectTime()); >> + } >> + >> for (int i = 0; i < SampleEvent.getVarCount(); i++) { >> text.append(event.getVarValue(i)); >> } >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java >> Mon Jan 5 19:49:06 2015 >> @@ -77,6 +77,7 @@ public class SampleResultConverter exten >> private static final String ATT_HOSTNAME = "hn"; >> //$NON-NLS-1$ >> private static final String ATT_LABEL = "lb"; >> //$NON-NLS-1$ >> private static final String ATT_LATENCY = "lt"; >> //$NON-NLS-1$ >> + private static final String ATT_CONNECT_TIME = "ct"; >> //$NON-NLS-1$ >> private static final String ATT_ALL_THRDS = "na"; >> //$NON-NLS-1$ >> private static final String ATT_GRP_THRDS = "ng"; >> //$NON-NLS-1$ >> @@ -291,6 +292,9 @@ public class SampleResultConverter exten >> if (save.saveLatency()) { >> writer.addAttribute(ATT_LATENCY, >> Long.toString(res.getLatency())); >> } >> + if (save.saveConnectTime()) { >> + writer.addAttribute(ATT_CONNECT_TIME, >> Long.toString(res.getConnectTime())); >> + } >> if (save.saveTimestamp()) { >> writer.addAttribute(ATT_TIME_STAMP, >> Long.toString(res.getTimeStamp())); >> } >> @@ -441,6 +445,7 @@ public class SampleResultConverter exten >> Converter.getLong(reader.getAttribute(ATT_TIME))); >> >> res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME))); >> >> res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY))); >> + >> res.setConnectTime(Converter.getLong(reader.getAttribute(ATT_CONNECT_TIME))); >> >> res.setBytes(Converter.getInt(reader.getAttribute(ATT_BYTES))); >> >> res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); >> // default is 1 >> >> res.setErrorCount(Converter.getInt(reader.getAttribute(ATT_ERROR_COUNT),0)); >> // default is 0 >> >> Modified: >> jmeter/trunk/src/core/org/apache/jmeter/visualizers/TableSample.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/visualizers/TableSample.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/core/org/apache/jmeter/visualizers/TableSample.java >> (original) >> +++ >> jmeter/trunk/src/core/org/apache/jmeter/visualizers/TableSample.java >> Mon Jan 5 19:49:06 2015 >> @@ -46,17 +46,19 @@ public class TableSample implements Seri >> private final long latency; >> + private final long connect; >> + >> /** >> * @deprecated for unit test code only >> */ >> @Deprecated >> public TableSample() { >> - this(0, 1, 0, "", "", 0, true, 0, 0); >> + this(0, 1, 0, "", "", 0, true, 0, 0, 0); >> } >> public TableSample(long totalSamples, int sampleCount, long >> startTime, String threadName, >> String label, >> - long elapsed, boolean success, long bytes, long latency) { >> + long elapsed, boolean success, long bytes, long latency, >> long connect) { >> this.totalSamples = totalSamples; >> this.sampleCount = sampleCount; >> this.startTime = startTime; >> @@ -67,6 +69,7 @@ public class TableSample implements Seri >> this.bytes = (sampleCount > 0) ? bytes/sampleCount : 0; >> this.success = success; >> this.latency = latency; >> + this.connect = connect; >> } >> // The following getters may appear not to be used - however >> they are invoked via the Functor class >> @@ -142,4 +145,10 @@ public class TableSample implements Seri >> return latency; >> } >> + /** >> + * @return the conneect time >> + */ >> + public long getConnectTime() { >> + return connect; >> + } >> } >> >> Modified: >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java >> (original) >> +++ >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java >> Mon Jan 5 19:49:06 2015 >> @@ -73,6 +73,7 @@ import org.apache.http.client.methods.Ht >> import org.apache.http.client.params.ClientPNames; >> import org.apache.http.client.params.CookiePolicy; >> import org.apache.http.client.protocol.ResponseContentEncoding; >> +import org.apache.http.conn.ClientConnectionManager; >> import org.apache.http.conn.ConnectionKeepAliveStrategy; >> import org.apache.http.conn.DnsResolver; >> import org.apache.http.conn.params.ConnRoutePNames; >> @@ -90,7 +91,6 @@ import org.apache.http.impl.client.Abstr >> import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; >> import org.apache.http.impl.client.DefaultHttpClient; >> import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; >> -import org.apache.http.impl.conn.PoolingClientConnectionManager; >> import org.apache.http.impl.conn.SchemeRegistryFactory; >> import org.apache.http.impl.conn.SystemDefaultDnsResolver; >> import org.apache.http.message.BasicNameValuePair; >> @@ -123,6 +123,7 @@ import org.apache.jmeter.util.JsseSSLMan >> import org.apache.jmeter.util.SSLManager; >> import org.apache.jorphan.logging.LoggingManager; >> import org.apache.log.Logger; >> +import org.htmlparser.http.ConnectionManager; >> /** >> * HTTP Sampler using Apache HttpClient 4.x. >> @@ -654,10 +655,9 @@ public class HTTPHC4Impl extends HTTPHCA >> if (resolver == null) { >> resolver = new SystemDefaultDnsResolver(); >> } >> - PoolingClientConnectionManager >> poolingClientConnectionManager = new PoolingClientConnectionManager( >> - SchemeRegistryFactory.createDefault(), resolver); >> + ClientConnectionManager connManager = new >> MeasuringConnectionManager(SchemeRegistryFactory.createDefault(), >> resolver); >> - httpClient = new >> DefaultHttpClient(poolingClientConnectionManager, clientParams) { >> + httpClient = new DefaultHttpClient(connManager, >> clientParams) { >> @Override >> protected HttpRequestRetryHandler >> createHttpRequestRetryHandler() { >> return new >> DefaultHttpRequestRetryHandler(RETRY_COUNT, false); // set retry count >> >> Added: >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java?rev=1649629&view=auto >> ============================================================================== >> >> --- >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java >> (added) >> +++ >> jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java >> Mon Jan 5 19:49:06 2015 >> @@ -0,0 +1,268 @@ >> +/* >> + * Licensed to the Apache Software Foundation (ASF) under one or more >> + * contributor license agreements. See the NOTICE file distributed >> with >> + * this work for additional information regarding copyright ownership. >> + * The ASF licenses this file to You under the Apache License, >> Version 2.0 >> + * (the "License"); you may not use this file except in compliance with >> + * the License. You may obtain a copy of the License at >> + * >> + * http://www.apache.org/licenses/LICENSE-2.0 >> + * >> + * Unless required by applicable law or agreed to in writing, software >> + * distributed under the License is distributed on an "AS IS" BASIS, >> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> + * See the License for the specific language governing permissions and >> + * limitations under the License. >> + * >> + */ >> + >> +package org.apache.jmeter.protocol.http.sampler; >> + >> +import org.apache.http.HttpConnectionMetrics; >> +import org.apache.http.HttpException; >> +import org.apache.http.HttpHost; >> +import org.apache.http.HttpResponse; >> +import org.apache.http.HttpRequest; >> +import org.apache.http.HttpEntityEnclosingRequest; >> +import org.apache.http.conn.ClientConnectionRequest; >> +import org.apache.http.conn.ConnectionPoolTimeoutException; >> +import org.apache.http.conn.DnsResolver; >> +import org.apache.http.conn.ManagedClientConnection; >> +import org.apache.http.conn.routing.HttpRoute; >> +import org.apache.http.conn.scheme.SchemeRegistry; >> +import org.apache.http.impl.conn.PoolingClientConnectionManager; >> +import org.apache.http.params.HttpParams; >> +import org.apache.http.protocol.HttpContext; >> +import org.apache.jmeter.samplers.SampleResult; >> + >> +import javax.net.ssl.SSLSession; >> +import java.io.IOException; >> +import java.net.InetAddress; >> +import java.util.concurrent.TimeUnit; >> + >> +/** >> + * Adapter for {@link PoolingClientConnectionManager} >> + * that wraps all connection requests into time-measured >> implementation {@link MeasuringConnectionRequest} >> + */ >> +public class MeasuringConnectionManager extends >> PoolingClientConnectionManager { >> + >> + private MeasuringConnectionRequest measuredConnection; >> + private SampleResult sample; >> + >> + public MeasuringConnectionManager(SchemeRegistry aDefault, >> DnsResolver resolver) { >> + super(aDefault, resolver); >> + } >> + >> + @Override >> + public ClientConnectionRequest requestConnection(final HttpRoute >> route, final Object state) { >> + ClientConnectionRequest res = super.requestConnection(route, >> state); >> + this.measuredConnection = new >> MeasuringConnectionRequest(res, this.sample); >> + return this.measuredConnection; >> + } >> + >> + public void setSample(SampleResult sample) { >> + this.sample = sample; >> + } >> + >> + /** >> + * And adapter class to pass {@link SampleResult} into {@link >> MeasuredConnection} >> + */ >> + private static class MeasuringConnectionRequest implements >> ClientConnectionRequest { >> + private final ClientConnectionRequest handler; >> + private final SampleResult sample; >> + >> + public MeasuringConnectionRequest(ClientConnectionRequest >> res, SampleResult sample) { >> + handler = res; >> + this.sample = sample; >> + } >> + >> + @Override >> + public ManagedClientConnection getConnection(long timeout, >> TimeUnit tunit) throws InterruptedException, >> ConnectionPoolTimeoutException { >> + ManagedClientConnection res = >> handler.getConnection(timeout, tunit); >> + return new MeasuredConnection(res, this.sample); >> + } >> + >> + @Override >> + public void abortRequest() { >> + handler.abortRequest(); >> + } >> + } >> + >> + /** >> + * An adapter for {@link ManagedClientConnection} >> + * that calls SampleResult.connectEnd after calling >> ManagedClientConnection.open >> + */ >> + private static class MeasuredConnection implements >> ManagedClientConnection { >> + private final ManagedClientConnection handler; >> + private final SampleResult sample; >> + >> + public MeasuredConnection(ManagedClientConnection res, >> SampleResult sample) { >> + handler = res; >> + this.sample = sample; >> + } >> + >> + @Override >> + public void open(HttpRoute route, HttpContext context, >> HttpParams params) throws IOException { >> + handler.open(route, context, params); >> + if (sample != null) { >> + sample.connectEnd(); >> + } >> + } >> + >> + // ================= all following methods just wraps >> handler's ================= >> + @Override >> + public boolean isSecure() { >> + return handler.isSecure(); >> + } >> + >> + @Override >> + public HttpRoute getRoute() { >> + return handler.getRoute(); >> + } >> + >> + @Override >> + public SSLSession getSSLSession() { >> + return handler.getSSLSession(); >> + } >> + >> + @Override >> + public void tunnelTarget(boolean secure, HttpParams params) >> throws IOException { >> + handler.tunnelTarget(secure, params); >> + } >> + >> + @Override >> + public void tunnelProxy(HttpHost next, boolean secure, >> HttpParams params) throws IOException { >> + handler.tunnelProxy(next, secure, params); >> + } >> + >> + @Override >> + public void layerProtocol(HttpContext context, HttpParams >> params) throws IOException { >> + handler.layerProtocol(context, params); >> + } >> + >> + @Override >> + public void markReusable() { >> + handler.markReusable(); >> + } >> + >> + @Override >> + public void unmarkReusable() { >> + handler.unmarkReusable(); >> + } >> + >> + @Override >> + public boolean isMarkedReusable() { >> + return handler.isMarkedReusable(); >> + } >> + >> + @Override >> + public void setState(Object state) { >> + handler.setState(state); >> + } >> + >> + @Override >> + public Object getState() { >> + return handler.getState(); >> + } >> + >> + @Override >> + public void setIdleDuration(long duration, TimeUnit unit) { >> + handler.setIdleDuration(duration, unit); >> + } >> + >> + @Override >> + public void releaseConnection() throws IOException { >> + handler.releaseConnection(); >> + } >> + >> + @Override >> + public void abortConnection() throws IOException { >> + handler.abortConnection(); >> + } >> + >> + @Override >> + public boolean isResponseAvailable(int timeout) throws >> IOException { >> + return handler.isResponseAvailable(timeout); >> + } >> + >> + @Override >> + public void sendRequestHeader(HttpRequest request) throws >> HttpException, IOException { >> + handler.sendRequestHeader(request); >> + } >> + >> + @Override >> + public void sendRequestEntity(HttpEntityEnclosingRequest >> request) throws HttpException, IOException { >> + handler.sendRequestEntity(request); >> + } >> + >> + @Override >> + public HttpResponse receiveResponseHeader() throws >> HttpException, IOException { >> + return handler.receiveResponseHeader(); >> + } >> + >> + @Override >> + public void receiveResponseEntity(HttpResponse response) >> throws HttpException, IOException { >> + handler.receiveResponseEntity(response); >> + } >> + >> + @Override >> + public void flush() throws IOException { >> + handler.flush(); >> + } >> + >> + @Override >> + public InetAddress getLocalAddress() { >> + return handler.getLocalAddress(); >> + } >> + >> + @Override >> + public int getLocalPort() { >> + return handler.getLocalPort(); >> + } >> + >> + @Override >> + public InetAddress getRemoteAddress() { >> + return handler.getRemoteAddress(); >> + } >> + >> + @Override >> + public int getRemotePort() { >> + return handler.getRemotePort(); >> + } >> + >> + @Override >> + public void close() throws IOException { >> + handler.close(); >> + } >> + >> + @Override >> + public boolean isOpen() { >> + return handler.isOpen(); >> + } >> + >> + @Override >> + public boolean isStale() { >> + return handler.isStale(); >> + } >> + >> + @Override >> + public void setSocketTimeout(int timeout) { >> + handler.setSocketTimeout(timeout); >> + } >> + >> + @Override >> + public int getSocketTimeout() { >> + return handler.getSocketTimeout(); >> + } >> + >> + @Override >> + public void shutdown() throws IOException { >> + handler.shutdown(); >> + } >> + >> + @Override >> + public HttpConnectionMetrics getMetrics() { >> + return handler.getMetrics(); >> + } >> + } >> +} >> >> Modified: >> jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- >> jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java >> (original) >> +++ >> jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java >> Mon Jan 5 19:49:06 2015 >> @@ -84,6 +84,7 @@ public class JDBCSampler extends Abstrac >> try { >> conn = >> DataSourceElement.getConnection(getDataSource()); >> } finally { >> + // FIXME: there is separate connect time field now >> res.latencyEnd(); // use latency to measure >> connection time >> } >> res.setResponseHeaders(conn.toString()); >> >> Modified: jmeter/trunk/xdocs/changes.xml >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/xdocs/changes.xml (original) >> +++ jmeter/trunk/xdocs/changes.xml Mon Jan 5 19:49:06 2015 >> @@ -55,6 +55,7 @@ Summary >> <!-- <ch_title>Sample title</ch_title> >> <p> >> <ul> >> +<li><bugzilla>48799</bugzilla> - Add time to establish connection to >> available sample metrics. Implemented by Andrey Pokhilko (andrey at >> blazemeter.com) and contributed by BlazeMeter Ltd.</li> >> <li>Sample text</li> >> </ul> >> </p> >> >> Modified: jmeter/trunk/xdocs/usermanual/glossary.xml >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/glossary.xml?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/xdocs/usermanual/glossary.xml (original) >> +++ jmeter/trunk/xdocs/usermanual/glossary.xml Mon Jan 5 19:49:06 2015 >> @@ -48,6 +48,10 @@ browser or other application client. >> </p> >> <p> >> +<a name="Connect"><b>Connect Time</b></a>. JMeter measures the time >> it took to estable the connection, including SSL handshake. Note that >> connect time is not automatically subtracted from <a >> href="#Latency">latency</a>. >> +</p> >> + >> +<p> >> <a name="Median"><b>Median</b></a> is a number which divides the >> samples into two equal halves. >> Half of the samples are smaller than the median, and half are larger. >> [Some samples may equal the median.] >> >> Modified: jmeter/trunk/xdocs/usermanual/listeners.xml >> URL: >> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/listeners.xml?rev=1649629&r1=1649628&r2=1649629&view=diff >> ============================================================================== >> >> --- jmeter/trunk/xdocs/usermanual/listeners.xml (original) >> +++ jmeter/trunk/xdocs/usermanual/listeners.xml Mon Jan 5 19:49:06 2015 >> @@ -137,6 +137,7 @@ The full set of properties that affect r >> #jmeter.save.saveservice.subresults=true >> #jmeter.save.saveservice.assertions=true >> #jmeter.save.saveservice.latency=true >> +#jmeter.save.saveservice.connect_time=false >> #jmeter.save.saveservice.samplerData=false >> #jmeter.save.saveservice.responseHeaders=false >> #jmeter.save.saveservice.requestHeaders=false >> @@ -304,6 +305,7 @@ The order of appearance of columns is fi >> <li>URL</li> >> <li>Filename - if Save Response to File was used</li> >> <li>latency - time to first response</li> >> +<li>connect - time to establish connection</li> >> <li>encoding</li> >> <li>SampleCount - number of samples (1, unless multiple samples are >> aggregated)</li> >> <li>ErrorCount - number of errors (0 or 1, unless multiple samples >> are aggregated)</li> >> @@ -427,6 +429,7 @@ The sample attributes have the following >> <tr><td>it</td><td>Idle Time = time not spent sampling >> (milliseconds) (generally 0)</td></tr> >> <tr><td>lb</td><td>Label</td></tr> >> <tr><td>lt</td><td>Latency = time to initial response >> (milliseconds) - not all samplers support this</td></tr> >> +<tr><td>lt</td><td>Connect Time = time to establish the connection >> (milliseconds) - not all samplers support this</td></tr> >> <tr><td>na</td><td>Number of active threads for all thread >> groups</td></tr> >> <tr><td>ng</td><td>Number of active threads in this group</td></tr> >> <tr><td>rc</td><td>Response Code (e.g. 200)</td></tr> >> >> >
