Thanks for pointing to the right place, I'll work on it right now. Andrey Pokhilko
On 01/06/2015 04:10 PM, sebb wrote: > Ah - that class is different; the data is saved in > SampleSaveConfigurationConverter > But the principle is the same; don't save new properties unnecessarily. > > There is a comment at the beginning of the SampleSaveConfiguration > class which details all the changes that have to be made when adding a > new field, this includes: > > * - update SampleSaveConfigurationConverter to add new fields to > marshall() and shouldSerialiseMember() > > The sample config is used in lots of places so changes affect lots of classes. > > Maybe one could do something clever with annotations so that some of > this config was no longer necessary, > But that will be quite a lot of work for something that rarely changes. > > In the meantime, the unit tests hopefully catch any errors. > > On 6 January 2015 at 12:56, Andrey Pokhilko <[email protected]> wrote: >> I'm sorry, but I don't understand how this relates to the >> SampleSaveConfiguration, which generates this piece of JMX... I have >> correct defaults specified for connect times, it is false both in the >> code and in the jmeter.properties. I used no string "magic" strings in >> my code, did everything just like it is done for latency. I think this >> change in JMXses is unavoidable, since JMeter writes into JMX all sample >> save flags, including those with default values. I see the sense of this >> behavior to make JMXses consistently portable between different JMeter >> installation. >> >> Am I wrong? >> >> Andrey Pokhilko >> >> On 01/06/2015 03:45 PM, sebb wrote: >>> On 6 January 2015 at 08:25, Andrey Pokhilko <[email protected]> wrote: >>>> About modifying JMXses: >>>> >>>> As far as I understand how JMeter works, it applies the default (which >>>> is "false") when no configuration property provided. >>> Yes, assuming that the default is correctly defined. >>> >>>> But then when it >>>> saves the JMX, it writes all the properties, including those with >>>> default values. >>> That depends on how the code writes the values. >>> There is a property setter that takes a default value; if the value >>> matches the default, it removes the property instead of writing it. >>> >>> This is done to avoid cluttering up the JMX files, and to assist with >>> backwards compatibiity. >>> >>> See for example >>> >>> AuthManager.setClearEachIteration(boolean clear) >>> >>> Note that the same constant (DEFAULT_CLEAR_VALUE) is used for both get and >>> set. >>> It's vital that the same value is used for get and set - and the value >>> must never change. >>> >>>> I did change to JMXses since somewhere in the tests there is a check >>>> that JMX must stay unchanged upon open and save. If I'm wrong and there >>>> is some other way to make those tests passing, please tell it to me and >>>> I'll roll back the undesired changes. >>>> >>>> Andrey Pokhilko >>>> >>>> On 01/06/2015 05:48 AM, sebb wrote: >>>>> On 5 January 2015 at 19:49, <[email protected]> wrote: >>>>>> 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 >>>>> -1 to this change. >>>>> Similarly for the other JMX files. >>>>> >>>>> The code needs to be set up to default to false if the tag is not present. >>>>> >>>>>> @@ -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> >>>>>> >>>>>>
