Done Andrey Pokhilko
On 01/06/2015 04:16 PM, Andrey Pokhilko wrote: > 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> >>>>>>> >>>>>>>
