Thanks, that looks OK now.

On 6 January 2015 at 13:29, Andrey Pokhilko <[email protected]> wrote:
> 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>
>>>>>>>>
>>>>>>>>
>

Reply via email to