Edgewall Software

Changes between Version 1 and Version 2 of TracPerformance/LoadTestingWithJmeter


Ignore:
Timestamp:
Feb 6, 2015, 9:01:43 AM (9 years ago)
Author:
figaro
Comment:

Cosmetic changes, added attachments

Legend:

Unmodified
Added
Removed
Modified
  • TracPerformance/LoadTestingWithJmeter

    v1 v2  
    1 = Trac Load Testing =
     1= Trac Load Testing
     2
    23While not necessarily definitive, some load testing has been done and the results are provided here for the benefit of anyone that has an interest in at least some insight into how Trac scales/performs under load.
    34
    4 == Why? ==
     5== Rationale
     6
    57This testing was prompted primarily due to investigation of issue #7490 and attempting to reproduce the issue or at least determine the extent of the impact of moving from Trac-0.10x to Trac-0.11x as well as the impact of various configurations (tracd vs. mod_python).
    68
    79Additional testing may be done in response to these results, but I figured while I was testing that I should probably capture the information somewhere as someone may find it of interest (so here it is).
    810
    9 == Test Hardware and Services Configuration ==
     11== Test Hardware and Services Configuration
     12
    1013The server that Trac was install on is a Linux server (Gentoo flavored) with the following characteristics:
    1114
     
    3639    *  CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
    3740
    38 The server was attached to a 100mb switch.  The load driver (client) had a 1gb network card attached to a 1gb unmanaged switch that was attached to the 100mb managed switch.  The load was generated from a client and was not generated on the server (which could skew the results).
     41The server was attached to a 100MB switch. The load driver (client) had a 1GB network card attached to a 1GB unmanaged switch that was attached to the 100MB managed switch. The load was generated from a client and was not generated on the server, which could skew the results.
    3942
    40 == Software Configurations ==
    41 Testing was conducted using three different versions of trac:
     43== Software Configurations
     44
     45Testing was conducted using three different versions of Trac:
    4246 *  Trac Branch 0.11-stable
    4347 *  Trac Trunk (r8253)
     
    4650''Get output from /about on the site being tested as suggested in an email thread -- lance''
    4751
    48 All the test were conducted on a "bare" installation of trac, that is base install with only one ticket created (required as one of the read tests is for ticket #1, which will fail unless/until the first ticket is created by the clients creating tickets); however, it was also "attached" to a real (but empty) svn repo.  Obviously, depending on the amount of change per day (tickets/day and change sets/day) has an impact on a number of the reports (timeline most directly) and will vary significantly from installation to installation.  These specifics are difficult to factor into the testing and also can significantly reduce the "reproducability" of the results.  Since the focus of this testing is to determine the performance impact from version to version of Trac as well as the performance of various configurations of Trac, I thought it more important to maintain reproducibility (for the sake of others) and also better enable others to compare the performance of their specific hardware and software configurations to the results presented here than it was to contrive or develop "the most realistic" test possible (which, in my (hopefully) humble opinion, while an interesting goal, it is generally not possible).
     52All the test were conducted on a "bare" installation of Trac, that is base install with only one ticket created (required as one of the read tests is for ticket #1, which will fail unless/until the first ticket is created by the clients creating tickets); however, it was also "attached" to a real (but empty) svn repo.  Obviously, depending on the amount of change per day (tickets/day and change sets/day) has an impact on a number of the reports (timeline most directly) and will vary significantly from installation to installation.  These specifics are difficult to factor into the testing and also can significantly reduce the "reproducability" of the results.  Since the focus of this testing is to determine the performance impact from version to version of Trac as well as the performance of various configurations of Trac, I thought it more important to maintain reproducibility (for the sake of others) and also better enable others to compare the performance of their specific hardware and software configurations to the results presented here than it was to contrive or develop "the most realistic" test possible (which, in my (hopefully) humble opinion, while an interesting goal, it is generally not possible).
    4953
    5054''Testing should also probably be done against a test environment that has a little more history/data, but that is also reproducible (archived in some way that it can be reused over and over for the testing but from a known state other than "empty")... -- lance''
     
    6771Python was version 2.5.4-!r2 (Gentoo calendar)
    6872
    69 == Testing Methodology ==
     73== Testing Methodology
     74
    7075Initial testing was done with a proprietary tool; however, I have switched to the Apache JMeter project for load testing trac for several reasons:
    7176 *  It is OSS and thus easier/cheaper for others to obtain and potentially use to verify/test their specific configurations and thus compare them with the data obtained here (more easily verifiable by others)
    7277 *  Not platform specific.  The original tool was only (mostly) available on Windows; however JMeter is 100% java and provides both *.bat and *.sh so should be usable regardless of platform (for client, sever was independent of load generator anyway, being HTTP).
    7378
    74 For the testing, I attempted to be realistic in the load that was placed on the server from the standpoint of ensuring that some form of "think time" was used in the clients.  The current testing scenario also includes a set of clients that are read only and a set of clients that are creating new tickets.  Obviously, the fact that tickets are being created (more tickets added over time) means that a number of the read only requests get longer and longer (more time to generate) as the testing continues, since they have to render successively more data as data is added to the system.  In some of my initial scenarios, this had the effect that the more transactions per second, the more data that was added by the clients; however, with the current configuration in JMeter, servers that provide more TPS (transactions per second) *should* not be penalized.  That is, if you are not careful, the data writers (clients adding new tickets) have a tendency to "equalize" the system by being able to add more tickets to a system with more TPS and thus the "average" performance would seem to be more equal between configurations with two different TPS. I have worked to engineer the testing such that this effect is minimized.
     79For the testing, I attempted to be realistic in the load that was placed on the server from the standpoint of ensuring that some form of "think time" was used in the clients.  The current testing scenario also includes a set of clients that are read only and a set of clients that are creating new tickets. Obviously, the fact that tickets are being created (more tickets added over time) means that a number of the read only requests get longer and longer (more time to generate) as the testing continues, since they have to render successively more data as data is added to the system. In some of my initial scenarios, this had the effect that the more transactions per second, the more data that was added by the clients; however, with the current configuration in JMeter, servers that provide more TPS (transactions per second) *should* not be penalized. That is, if you are not careful, the data writers (clients adding new tickets) have a tendency to "equalize" the system by being able to add more tickets to a system with more TPS and thus the "average" performance would seem to be more equal between configurations with two different TPS. I have worked to engineer the testing such that this effect is minimized.
    7580
    76 Testing was conducted on a "warm" machine (did not reboot between tests and the first few test runs (to warm up the machine/configuration) were not recorded).
     81Testing was conducted on a "warm" machine: did not reboot between tests and the first few test runs to warm up the machine/configuration were not recorded.
    7782
    78 == Test Cases ==
    79 This section provides the details (raw text) of the test cases created for JMeter.  Thankfully, JMeter saves it's test cases in XML format, so you can copy and past these into an XML file and download and use JMeter to potentially reproduce these tests on your own hardware for comparison with the results I have posted here.
     83== Test Cases
    8084
    81 Two different test cases were used, one for tracd and one for configurations using Apache.  The reason for this is that (for the most part and due to Python) tracd is pretty much single threaded while configurations leveraging Apache are not.  Since the test server was a dual core, this enabled configurations using Apache to sustain greater/higher TPS than the configurations with tracd and thus I decided to increase the number of client threads for testing of the Apache configurations in order to better represent it's capabilities other than just through a reduced response time (that is, show that it can sustain a higher TPS while still maintaining a low response time.
     85This section provides the details (raw text) of the test cases created for JMeter. Thankfully, JMeter saves its test cases in XML format, so you can copy and past these into an XML file and download and use JMeter to potentially reproduce these tests on your own hardware for comparison with the results I have posted here.
     86
     87Two different test cases were used, one for tracd and one for configurations using Apache.  The reason for this is that (for the most part and due to Python) tracd is pretty much single threaded while configurations leveraging Apache are not. Since the test server was a dual core, this enabled configurations using Apache to sustain greater/higher TPS than the configurations with tracd and thus I decided to increase the number of client threads for testing of the Apache configurations in order to better represent it's capabilities other than just through a reduced response time, ie show that it can sustain a higher TPS while still maintaining a low response time.
    8288
    8389=== tracd ===
    84 {{{
    85 <?xml version="1.0" encoding="UTF-8"?>
    86 <jmeterTestPlan version="1.2" properties="2.1">
    87   <hashTree>
    88     <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
    89       <stringProp name="TestPlan.comments"></stringProp>
    90       <boolProp name="TestPlan.functional_mode">false</boolProp>
    91       <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
    92       <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    93         <collectionProp name="Arguments.arguments"/>
    94       </elementProp>
    95       <stringProp name="TestPlan.user_define_classpath"></stringProp>
    96     </TestPlan>
    97     <hashTree>
    98       <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Read Only" enabled="true">
    99         <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
    100           <boolProp name="LoopController.continue_forever">false</boolProp>
    101           <intProp name="LoopController.loops">-1</intProp>
    102         </elementProp>
    103         <stringProp name="ThreadGroup.num_threads">15</stringProp>
    104         <stringProp name="ThreadGroup.ramp_time">30</stringProp>
    105         <longProp name="ThreadGroup.start_time">1244340027000</longProp>
    106         <longProp name="ThreadGroup.end_time">1244340027000</longProp>
    107         <boolProp name="ThreadGroup.scheduler">true</boolProp>
    108         <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
    109         <stringProp name="ThreadGroup.duration">${test_duration}</stringProp>
    110         <stringProp name="ThreadGroup.delay"></stringProp>
    111       </ThreadGroup>
    112       <hashTree>
    113         <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
    114           <intProp name="InterleaveControl.style">1</intProp>
    115         </RandomController>
    116         <hashTree>
    117           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Get Wiki Start Page" enabled="true">
    118             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    119               <collectionProp name="Arguments.arguments"/>
    120             </elementProp>
    121             <stringProp name="HTTPSampler.domain"></stringProp>
    122             <stringProp name="HTTPSampler.port"></stringProp>
    123             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    124             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    125             <stringProp name="HTTPSampler.protocol"></stringProp>
    126             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    127             <stringProp name="HTTPSampler.path">/test/wiki/wikistart</stringProp>
    128             <stringProp name="HTTPSampler.method">GET</stringProp>
    129             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    130             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    131             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    132             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    133             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    134             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    135             <stringProp name="HTTPSampler.mimetype"></stringProp>
    136             <boolProp name="HTTPSampler.monitor">false</boolProp>
    137             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    138           </HTTPSampler>
    139           <hashTree/>
    140           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Timeline" enabled="true">
    141             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    142               <collectionProp name="Arguments.arguments"/>
    143             </elementProp>
    144             <stringProp name="HTTPSampler.domain"></stringProp>
    145             <stringProp name="HTTPSampler.port"></stringProp>
    146             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    147             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    148             <stringProp name="HTTPSampler.protocol"></stringProp>
    149             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    150             <stringProp name="HTTPSampler.path">/test/timeline</stringProp>
    151             <stringProp name="HTTPSampler.method">GET</stringProp>
    152             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    153             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    154             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    155             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    156             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    157             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    158             <stringProp name="HTTPSampler.mimetype"></stringProp>
    159             <boolProp name="HTTPSampler.monitor">false</boolProp>
    160             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    161           </HTTPSampler>
    162           <hashTree/>
    163           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Browse Repo" enabled="true">
    164             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    165               <collectionProp name="Arguments.arguments"/>
    166             </elementProp>
    167             <stringProp name="HTTPSampler.domain"></stringProp>
    168             <stringProp name="HTTPSampler.port"></stringProp>
    169             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    170             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    171             <stringProp name="HTTPSampler.protocol"></stringProp>
    172             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    173             <stringProp name="HTTPSampler.path">/test/browser</stringProp>
    174             <stringProp name="HTTPSampler.method">GET</stringProp>
    175             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    176             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    177             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    178             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    179             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    180             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    181             <stringProp name="HTTPSampler.mimetype"></stringProp>
    182             <boolProp name="HTTPSampler.monitor">false</boolProp>
    183             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    184           </HTTPSampler>
    185           <hashTree/>
    186           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Roadmap" enabled="true">
    187             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    188               <collectionProp name="Arguments.arguments"/>
    189             </elementProp>
    190             <stringProp name="HTTPSampler.domain"></stringProp>
    191             <stringProp name="HTTPSampler.port"></stringProp>
    192             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    193             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    194             <stringProp name="HTTPSampler.protocol"></stringProp>
    195             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    196             <stringProp name="HTTPSampler.path">/test/roadmap</stringProp>
    197             <stringProp name="HTTPSampler.method">GET</stringProp>
    198             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    199             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    200             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    201             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    202             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    203             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    204             <stringProp name="HTTPSampler.mimetype"></stringProp>
    205             <boolProp name="HTTPSampler.monitor">false</boolProp>
    206             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    207           </HTTPSampler>
    208           <hashTree/>
    209           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Report All Active Tickets" enabled="true">
    210             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    211               <collectionProp name="Arguments.arguments"/>
    212             </elementProp>
    213             <stringProp name="HTTPSampler.domain"></stringProp>
    214             <stringProp name="HTTPSampler.port"></stringProp>
    215             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    216             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    217             <stringProp name="HTTPSampler.protocol"></stringProp>
    218             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    219             <stringProp name="HTTPSampler.path">/test/report/1</stringProp>
    220             <stringProp name="HTTPSampler.method">GET</stringProp>
    221             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    222             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    223             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    224             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    225             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    226             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    227             <stringProp name="HTTPSampler.mimetype"></stringProp>
    228             <boolProp name="HTTPSampler.monitor">false</boolProp>
    229             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    230           </HTTPSampler>
    231           <hashTree/>
    232           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Get Ticket #1" enabled="true">
    233             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
    234               <collectionProp name="Arguments.arguments"/>
    235             </elementProp>
    236             <stringProp name="HTTPSampler.domain"></stringProp>
    237             <stringProp name="HTTPSampler.port"></stringProp>
    238             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    239             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    240             <stringProp name="HTTPSampler.protocol"></stringProp>
    241             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    242             <stringProp name="HTTPSampler.path">/test/ticket/1</stringProp>
    243             <stringProp name="HTTPSampler.method">GET</stringProp>
    244             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    245             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    246             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    247             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    248             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    249             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    250             <stringProp name="HTTPSampler.mimetype"></stringProp>
    251             <boolProp name="HTTPSampler.monitor">false</boolProp>
    252             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    253           </HTTPSampler>
    254           <hashTree/>
    255         </hashTree>
    256         <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
    257           <collectionProp name="CookieManager.cookies"/>
    258           <boolProp name="CookieManager.clearEachIteration">false</boolProp>
    259           <stringProp name="CookieManager.policy">rfc2109</stringProp>
    260         </CookieManager>
    261         <hashTree/>
    262         <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
    263           <boolProp name="clearEachIteration">false</boolProp>
    264         </CacheManager>
    265         <hashTree/>
    266         <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
    267           <stringProp name="ConstantTimer.delay">500</stringProp>
    268           <stringProp name="RandomTimer.range">500</stringProp>
    269         </UniformRandomTimer>
    270         <hashTree/>
    271       </hashTree>
    272       <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Create Ticket" enabled="true">
    273         <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
    274           <boolProp name="LoopController.continue_forever">false</boolProp>
    275           <intProp name="LoopController.loops">-1</intProp>
    276         </elementProp>
    277         <stringProp name="ThreadGroup.num_threads">5</stringProp>
    278         <stringProp name="ThreadGroup.ramp_time">60</stringProp>
    279         <longProp name="ThreadGroup.start_time">1244329437000</longProp>
    280         <longProp name="ThreadGroup.end_time">1244329437000</longProp>
    281         <boolProp name="ThreadGroup.scheduler">true</boolProp>
    282         <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
    283         <stringProp name="ThreadGroup.duration">${test_duration}</stringProp>
    284         <stringProp name="ThreadGroup.delay"></stringProp>
    285       </ThreadGroup>
    286       <hashTree>
    287         <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
    288         <hashTree>
    289           <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
    290           <hashTree>
    291             <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="New Ticket" enabled="true">
    292               <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
    293                 <collectionProp name="Arguments.arguments"/>
    294               </elementProp>
    295               <stringProp name="HTTPSampler.domain"></stringProp>
    296               <stringProp name="HTTPSampler.port"></stringProp>
    297               <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    298               <stringProp name="HTTPSampler.response_timeout"></stringProp>
    299               <stringProp name="HTTPSampler.protocol">http</stringProp>
    300               <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    301               <stringProp name="HTTPSampler.path">/test/newticket</stringProp>
    302               <stringProp name="HTTPSampler.method">GET</stringProp>
    303               <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
    304               <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
    305               <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    306               <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    307               <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    308               <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    309               <stringProp name="HTTPSampler.mimetype"></stringProp>
    310               <boolProp name="HTTPSampler.monitor">false</boolProp>
    311               <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    312             </HTTPSampler>
    313             <hashTree/>
    314           </hashTree>
    315           <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
    316           <hashTree>
    317             <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
    318               <stringProp name="ConstantTimer.delay">30000</stringProp>
    319               <stringProp name="RandomTimer.range">30000</stringProp>
    320             </GaussianRandomTimer>
    321             <hashTree/>
    322             <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
    323               <stringProp name="argument_name">__FORM_TOKEN</stringProp>
    324               <boolProp name="path_extension">false</boolProp>
    325               <boolProp name="path_extension_no_equals">false</boolProp>
    326               <boolProp name="path_extension_no_questionmark">false</boolProp>
    327               <boolProp name="cache_value">true</boolProp>
    328             </URLRewritingModifier>
    329             <hashTree/>
    330             <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
    331               <collectionProp name="UserParameters.names">
    332                 <stringProp name="-1065084560">milestone</stringProp>
    333               </collectionProp>
    334               <collectionProp name="UserParameters.thread_values">
    335                 <collectionProp name="-1108354416">
    336                   <stringProp name="1342117057">milestone1</stringProp>
    337                 </collectionProp>
    338                 <collectionProp name="-1108354378">
    339                   <stringProp name="1342117058">milestone2</stringProp>
    340                 </collectionProp>
    341                 <collectionProp name="236008010">
    342                   <stringProp name="-1065084610">mileston3</stringProp>
    343                 </collectionProp>
    344                 <collectionProp name="236007197">
    345                   <stringProp name="-1065084609">mileston4</stringProp>
    346                 </collectionProp>
    347               </collectionProp>
    348               <boolProp name="UserParameters.per_iteration">false</boolProp>
    349             </UserParameters>
    350             <hashTree/>
    351             <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Create Ticket" enabled="true">
    352               <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
    353                 <collectionProp name="Arguments.arguments">
    354                   <elementProp name="author" elementType="HTTPArgument">
    355                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    356                     <stringProp name="Argument.name">author</stringProp>
    357                     <stringProp name="Argument.value">anonymous</stringProp>
    358                     <stringProp name="Argument.metadata">=</stringProp>
    359                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    360                   </elementProp>
    361                   <elementProp name="field_summary" elementType="HTTPArgument">
    362                     <boolProp name="HTTPArgument.always_encode">true</boolProp>
    363                     <stringProp name="Argument.name">field_summary</stringProp>
    364                     <stringProp name="Argument.value">Test ticket for load testing</stringProp>
    365                     <stringProp name="Argument.metadata">=</stringProp>
    366                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    367                   </elementProp>
    368                   <elementProp name="field_reporter" elementType="HTTPArgument">
    369                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    370                     <stringProp name="Argument.name">field_reporter</stringProp>
    371                     <stringProp name="Argument.value">anonymous</stringProp>
    372                     <stringProp name="Argument.metadata">=</stringProp>
    373                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    374                   </elementProp>
    375                   <elementProp name="field_description" elementType="HTTPArgument">
    376                     <boolProp name="HTTPArgument.always_encode">true</boolProp>
    377                     <stringProp name="Argument.name">field_description</stringProp>
    378                     <stringProp name="Argument.value">Blah Blah Blah Blah Blah Blah Blah Blah Blah</stringProp>
    379                     <stringProp name="Argument.metadata">=</stringProp>
    380                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    381                   </elementProp>
    382                   <elementProp name="field_type" elementType="HTTPArgument">
    383                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    384                     <stringProp name="Argument.name">field_type</stringProp>
    385                     <stringProp name="Argument.value">defect</stringProp>
    386                     <stringProp name="Argument.metadata">=</stringProp>
    387                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    388                   </elementProp>
    389                   <elementProp name="field_priority" elementType="HTTPArgument">
    390                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    391                     <stringProp name="Argument.name">field_priority</stringProp>
    392                     <stringProp name="Argument.value">major</stringProp>
    393                     <stringProp name="Argument.metadata">=</stringProp>
    394                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    395                   </elementProp>
    396                   <elementProp name="field_milestone" elementType="HTTPArgument">
    397                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    398                     <stringProp name="Argument.name">field_milestone</stringProp>
    399                     <stringProp name="Argument.value">${milestone}</stringProp>
    400                     <stringProp name="Argument.metadata">=</stringProp>
    401                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    402                   </elementProp>
    403                   <elementProp name="field_component" elementType="HTTPArgument">
    404                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    405                     <stringProp name="Argument.name">field_component</stringProp>
    406                     <stringProp name="Argument.value">component1</stringProp>
    407                     <stringProp name="Argument.metadata">=</stringProp>
    408                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    409                   </elementProp>
    410                   <elementProp name="field_version" elementType="HTTPArgument">
    411                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    412                     <stringProp name="Argument.name">field_version</stringProp>
    413                     <stringProp name="Argument.value"></stringProp>
    414                     <stringProp name="Argument.metadata">=</stringProp>
    415                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    416                   </elementProp>
    417                   <elementProp name="field_keywords" elementType="HTTPArgument">
    418                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    419                     <stringProp name="Argument.name">field_keywords</stringProp>
    420                     <stringProp name="Argument.value"></stringProp>
    421                     <stringProp name="Argument.metadata">=</stringProp>
    422                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    423                   </elementProp>
    424                   <elementProp name="field_cc" elementType="HTTPArgument">
    425                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    426                     <stringProp name="Argument.name">field_cc</stringProp>
    427                     <stringProp name="Argument.value"></stringProp>
    428                     <stringProp name="Argument.metadata">=</stringProp>
    429                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    430                   </elementProp>
    431                   <elementProp name="field_owner" elementType="HTTPArgument">
    432                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    433                     <stringProp name="Argument.name">field_owner</stringProp>
    434                     <stringProp name="Argument.value"></stringProp>
    435                     <stringProp name="Argument.metadata">=</stringProp>
    436                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    437                   </elementProp>
    438                   <elementProp name="field_status" elementType="HTTPArgument">
    439                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    440                     <stringProp name="Argument.name">field_status</stringProp>
    441                     <stringProp name="Argument.value">new</stringProp>
    442                     <stringProp name="Argument.metadata">=</stringProp>
    443                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    444                   </elementProp>
    445                   <elementProp name="submit" elementType="HTTPArgument">
    446                     <boolProp name="HTTPArgument.always_encode">true</boolProp>
    447                     <stringProp name="Argument.name">submit</stringProp>
    448                     <stringProp name="Argument.value">Create ticket</stringProp>
    449                     <stringProp name="Argument.metadata">=</stringProp>
    450                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    451                   </elementProp>
    452                 </collectionProp>
    453               </elementProp>
    454               <stringProp name="HTTPSampler.domain"></stringProp>
    455               <stringProp name="HTTPSampler.port"></stringProp>
    456               <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    457               <stringProp name="HTTPSampler.response_timeout"></stringProp>
    458               <stringProp name="HTTPSampler.protocol"></stringProp>
    459               <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
    460               <stringProp name="HTTPSampler.path">/test/newticket</stringProp>
    461               <stringProp name="HTTPSampler.method">POST</stringProp>
    462               <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
    463               <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
    464               <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    465               <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    466               <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    467               <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    468               <stringProp name="HTTPSampler.mimetype"></stringProp>
    469               <boolProp name="HTTPSampler.monitor">false</boolProp>
    470               <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    471             </HTTPSampler>
    472             <hashTree/>
    473           </hashTree>
    474         </hashTree>
    475         <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
    476           <collectionProp name="CookieManager.cookies"/>
    477           <boolProp name="CookieManager.clearEachIteration">false</boolProp>
    478           <stringProp name="CookieManager.policy">rfc2109</stringProp>
    479         </CookieManager>
    480         <hashTree/>
    481         <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
    482           <boolProp name="clearEachIteration">false</boolProp>
    483         </CacheManager>
    484         <hashTree/>
    485       </hashTree>
    486       <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
    487         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    488           <collectionProp name="Arguments.arguments"/>
    489         </elementProp>
    490         <stringProp name="HTTPSampler.domain">apollo.hendrix.local</stringProp>
    491         <stringProp name="HTTPSampler.port"></stringProp>
    492         <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    493         <stringProp name="HTTPSampler.response_timeout"></stringProp>
    494         <stringProp name="HTTPSampler.protocol">http</stringProp>
    495         <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    496         <stringProp name="HTTPSampler.path"></stringProp>
    497       </ConfigTestElement>
    498       <hashTree/>
    499       <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
    500         <collectionProp name="HeaderManager.headers">
    501           <elementProp name="Accept-Language" elementType="Header">
    502             <stringProp name="Header.name">Accept-Language</stringProp>
    503             <stringProp name="Header.value">en-us,en;q=0.5</stringProp>
    504           </elementProp>
    505           <elementProp name="Accept" elementType="Header">
    506             <stringProp name="Header.name">Accept</stringProp>
    507             <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
    508           </elementProp>
    509           <elementProp name="User-Agent" elementType="Header">
    510             <stringProp name="Header.name">User-Agent</stringProp>
    511             <stringProp name="Header.value">Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 GTB5 (.NET CLR 3.5.30729)</stringProp>
    512           </elementProp>
    513           <elementProp name="Accept-Encoding" elementType="Header">
    514             <stringProp name="Header.name">Accept-Encoding</stringProp>
    515             <stringProp name="Header.value">gzip,deflate</stringProp>
    516           </elementProp>
    517           <elementProp name="Accept-Charset" elementType="Header">
    518             <stringProp name="Header.name">Accept-Charset</stringProp>
    519             <stringProp name="Header.value">ISO-8859-1,utf-8;q=0.7,*;q=0.7</stringProp>
    520           </elementProp>
    521           <elementProp name="" elementType="Header">
    522             <stringProp name="Header.name">Keep-Alive</stringProp>
    523             <stringProp name="Header.value">300</stringProp>
    524           </elementProp>
    525         </collectionProp>
    526       </HeaderManager>
    527       <hashTree/>
    528       <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    529         <collectionProp name="Arguments.arguments">
    530           <elementProp name="test_duration" elementType="Argument">
    531             <stringProp name="Argument.name">test_duration</stringProp>
    532             <stringProp name="Argument.value">600</stringProp>
    533             <stringProp name="Argument.metadata">=</stringProp>
    534           </elementProp>
    535         </collectionProp>
    536       </Arguments>
    537       <hashTree/>
    538       <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
    539         <boolProp name="ResultCollector.error_logging">false</boolProp>
    540         <objProp>
    541           <name>saveConfig</name>
    542           <value class="SampleSaveConfiguration">
    543             <time>true</time>
    544             <latency>true</latency>
    545             <timestamp>true</timestamp>
    546             <success>true</success>
    547             <label>true</label>
    548             <code>true</code>
    549             <message>true</message>
    550             <threadName>true</threadName>
    551             <dataType>true</dataType>
    552             <encoding>true</encoding>
    553             <assertions>false</assertions>
    554             <subresults>false</subresults>
    555             <responseData>false</responseData>
    556             <samplerData>false</samplerData>
    557             <xml>true</xml>
    558             <fieldNames>false</fieldNames>
    559             <responseHeaders>false</responseHeaders>
    560             <requestHeaders>false</requestHeaders>
    561             <responseDataOnError>false</responseDataOnError>
    562             <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
    563             <assertionsResultsToSave>0</assertionsResultsToSave>
    564             <bytes>true</bytes>
    565             <url>true</url>
    566             <hostname>true</hostname>
    567             <threadCounts>true</threadCounts>
    568             <sampleCount>true</sampleCount>
    569           </value>
    570         </objProp>
    571         <stringProp name="filename">D:\workspace\trac-0.11-stable\detail.jtl</stringProp>
    572       </ResultCollector>
    573       <hashTree/>
    574     </hashTree>
    575   </hashTree>
    576 </jmeterTestPlan>
    577 }}}
    57890
    57991=== mod_python ===
    580 {{{
    581 <?xml version="1.0" encoding="UTF-8"?>
    582 <jmeterTestPlan version="1.2" properties="2.1">
    583   <hashTree>
    584     <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
    585       <stringProp name="TestPlan.comments"></stringProp>
    586       <boolProp name="TestPlan.functional_mode">false</boolProp>
    587       <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
    588       <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    589         <collectionProp name="Arguments.arguments"/>
    590       </elementProp>
    591       <stringProp name="TestPlan.user_define_classpath"></stringProp>
    592     </TestPlan>
    593     <hashTree>
    594       <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Read Only" enabled="true">
    595         <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
    596           <boolProp name="LoopController.continue_forever">false</boolProp>
    597           <intProp name="LoopController.loops">-1</intProp>
    598         </elementProp>
    599         <stringProp name="ThreadGroup.num_threads">20</stringProp>
    600         <stringProp name="ThreadGroup.ramp_time">30</stringProp>
    601         <longProp name="ThreadGroup.start_time">1244340027000</longProp>
    602         <longProp name="ThreadGroup.end_time">1244340027000</longProp>
    603         <boolProp name="ThreadGroup.scheduler">true</boolProp>
    604         <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
    605         <stringProp name="ThreadGroup.duration">${test_duration}</stringProp>
    606         <stringProp name="ThreadGroup.delay"></stringProp>
    607       </ThreadGroup>
    608       <hashTree>
    609         <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
    610           <intProp name="InterleaveControl.style">1</intProp>
    611         </RandomController>
    612         <hashTree>
    613           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Get Wiki Start Page" enabled="true">
    614             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    615               <collectionProp name="Arguments.arguments"/>
    616             </elementProp>
    617             <stringProp name="HTTPSampler.domain"></stringProp>
    618             <stringProp name="HTTPSampler.port"></stringProp>
    619             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    620             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    621             <stringProp name="HTTPSampler.protocol"></stringProp>
    622             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    623             <stringProp name="HTTPSampler.path">/test/wiki/wikistart</stringProp>
    624             <stringProp name="HTTPSampler.method">GET</stringProp>
    625             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    626             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    627             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    628             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    629             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    630             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    631             <stringProp name="HTTPSampler.mimetype"></stringProp>
    632             <boolProp name="HTTPSampler.monitor">false</boolProp>
    633             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    634           </HTTPSampler>
    635           <hashTree/>
    636           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Timeline" enabled="true">
    637             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    638               <collectionProp name="Arguments.arguments"/>
    639             </elementProp>
    640             <stringProp name="HTTPSampler.domain"></stringProp>
    641             <stringProp name="HTTPSampler.port"></stringProp>
    642             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    643             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    644             <stringProp name="HTTPSampler.protocol"></stringProp>
    645             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    646             <stringProp name="HTTPSampler.path">/test/timeline</stringProp>
    647             <stringProp name="HTTPSampler.method">GET</stringProp>
    648             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    649             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    650             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    651             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    652             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    653             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    654             <stringProp name="HTTPSampler.mimetype"></stringProp>
    655             <boolProp name="HTTPSampler.monitor">false</boolProp>
    656             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    657           </HTTPSampler>
    658           <hashTree/>
    659           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Browse Repo" enabled="true">
    660             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    661               <collectionProp name="Arguments.arguments"/>
    662             </elementProp>
    663             <stringProp name="HTTPSampler.domain"></stringProp>
    664             <stringProp name="HTTPSampler.port"></stringProp>
    665             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    666             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    667             <stringProp name="HTTPSampler.protocol"></stringProp>
    668             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    669             <stringProp name="HTTPSampler.path">/test/browser</stringProp>
    670             <stringProp name="HTTPSampler.method">GET</stringProp>
    671             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    672             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    673             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    674             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    675             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    676             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    677             <stringProp name="HTTPSampler.mimetype"></stringProp>
    678             <boolProp name="HTTPSampler.monitor">false</boolProp>
    679             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    680           </HTTPSampler>
    681           <hashTree/>
    682           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Roadmap" enabled="true">
    683             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    684               <collectionProp name="Arguments.arguments"/>
    685             </elementProp>
    686             <stringProp name="HTTPSampler.domain"></stringProp>
    687             <stringProp name="HTTPSampler.port"></stringProp>
    688             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    689             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    690             <stringProp name="HTTPSampler.protocol"></stringProp>
    691             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    692             <stringProp name="HTTPSampler.path">/test/roadmap</stringProp>
    693             <stringProp name="HTTPSampler.method">GET</stringProp>
    694             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    695             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    696             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    697             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    698             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    699             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    700             <stringProp name="HTTPSampler.mimetype"></stringProp>
    701             <boolProp name="HTTPSampler.monitor">false</boolProp>
    702             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    703           </HTTPSampler>
    704           <hashTree/>
    705           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Report All Active Tickets" enabled="true">
    706             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    707               <collectionProp name="Arguments.arguments"/>
    708             </elementProp>
    709             <stringProp name="HTTPSampler.domain"></stringProp>
    710             <stringProp name="HTTPSampler.port"></stringProp>
    711             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    712             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    713             <stringProp name="HTTPSampler.protocol"></stringProp>
    714             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    715             <stringProp name="HTTPSampler.path">/test/report/1</stringProp>
    716             <stringProp name="HTTPSampler.method">GET</stringProp>
    717             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    718             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    719             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    720             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    721             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    722             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    723             <stringProp name="HTTPSampler.mimetype"></stringProp>
    724             <boolProp name="HTTPSampler.monitor">false</boolProp>
    725             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    726           </HTTPSampler>
    727           <hashTree/>
    728           <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Get Ticket #1" enabled="true">
    729             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
    730               <collectionProp name="Arguments.arguments"/>
    731             </elementProp>
    732             <stringProp name="HTTPSampler.domain"></stringProp>
    733             <stringProp name="HTTPSampler.port"></stringProp>
    734             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    735             <stringProp name="HTTPSampler.response_timeout"></stringProp>
    736             <stringProp name="HTTPSampler.protocol"></stringProp>
    737             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    738             <stringProp name="HTTPSampler.path">/test/ticket/1</stringProp>
    739             <stringProp name="HTTPSampler.method">GET</stringProp>
    740             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
    741             <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
    742             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    743             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    744             <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    745             <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    746             <stringProp name="HTTPSampler.mimetype"></stringProp>
    747             <boolProp name="HTTPSampler.monitor">false</boolProp>
    748             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    749           </HTTPSampler>
    750           <hashTree/>
    751         </hashTree>
    752         <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
    753           <collectionProp name="CookieManager.cookies"/>
    754           <boolProp name="CookieManager.clearEachIteration">false</boolProp>
    755           <stringProp name="CookieManager.policy">rfc2109</stringProp>
    756         </CookieManager>
    757         <hashTree/>
    758         <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
    759           <boolProp name="clearEachIteration">false</boolProp>
    760         </CacheManager>
    761         <hashTree/>
    762         <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
    763           <stringProp name="ConstantTimer.delay">500</stringProp>
    764           <stringProp name="RandomTimer.range">1000</stringProp>
    765         </UniformRandomTimer>
    766         <hashTree/>
    767       </hashTree>
    768       <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Create Ticket" enabled="true">
    769         <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
    770           <boolProp name="LoopController.continue_forever">false</boolProp>
    771           <intProp name="LoopController.loops">-1</intProp>
    772         </elementProp>
    773         <stringProp name="ThreadGroup.num_threads">5</stringProp>
    774         <stringProp name="ThreadGroup.ramp_time">60</stringProp>
    775         <longProp name="ThreadGroup.start_time">1244329437000</longProp>
    776         <longProp name="ThreadGroup.end_time">1244329437000</longProp>
    777         <boolProp name="ThreadGroup.scheduler">true</boolProp>
    778         <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
    779         <stringProp name="ThreadGroup.duration">${test_duration}</stringProp>
    780         <stringProp name="ThreadGroup.delay"></stringProp>
    781       </ThreadGroup>
    782       <hashTree>
    783         <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
    784         <hashTree>
    785           <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
    786           <hashTree>
    787             <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="New Ticket" enabled="true">
    788               <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
    789                 <collectionProp name="Arguments.arguments"/>
    790               </elementProp>
    791               <stringProp name="HTTPSampler.domain"></stringProp>
    792               <stringProp name="HTTPSampler.port"></stringProp>
    793               <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    794               <stringProp name="HTTPSampler.response_timeout"></stringProp>
    795               <stringProp name="HTTPSampler.protocol">http</stringProp>
    796               <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    797               <stringProp name="HTTPSampler.path">/test/newticket</stringProp>
    798               <stringProp name="HTTPSampler.method">GET</stringProp>
    799               <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
    800               <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
    801               <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    802               <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    803               <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    804               <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    805               <stringProp name="HTTPSampler.mimetype"></stringProp>
    806               <boolProp name="HTTPSampler.monitor">false</boolProp>
    807               <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    808             </HTTPSampler>
    809             <hashTree>
    810               <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
    811                 <stringProp name="ConstantTimer.delay">0</stringProp>
    812                 <stringProp name="RandomTimer.range">1000</stringProp>
    813               </UniformRandomTimer>
    814               <hashTree/>
    815             </hashTree>
    816           </hashTree>
    817           <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
    818           <hashTree>
    819             <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
    820               <stringProp name="ConstantTimer.delay">30000</stringProp>
    821               <stringProp name="RandomTimer.range">30000</stringProp>
    822             </GaussianRandomTimer>
    823             <hashTree/>
    824             <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
    825               <stringProp name="argument_name">__FORM_TOKEN</stringProp>
    826               <boolProp name="path_extension">false</boolProp>
    827               <boolProp name="path_extension_no_equals">false</boolProp>
    828               <boolProp name="path_extension_no_questionmark">false</boolProp>
    829               <boolProp name="cache_value">true</boolProp>
    830             </URLRewritingModifier>
    831             <hashTree/>
    832             <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
    833               <collectionProp name="UserParameters.names">
    834                 <stringProp name="-1065084560">milestone</stringProp>
    835               </collectionProp>
    836               <collectionProp name="UserParameters.thread_values">
    837                 <collectionProp name="-1108354416">
    838                   <stringProp name="1342117057">milestone1</stringProp>
    839                 </collectionProp>
    840                 <collectionProp name="-1108354378">
    841                   <stringProp name="1342117058">milestone2</stringProp>
    842                 </collectionProp>
    843                 <collectionProp name="236008010">
    844                   <stringProp name="-1065084610">mileston3</stringProp>
    845                 </collectionProp>
    846                 <collectionProp name="236007197">
    847                   <stringProp name="-1065084609">mileston4</stringProp>
    848                 </collectionProp>
    849               </collectionProp>
    850               <boolProp name="UserParameters.per_iteration">false</boolProp>
    851             </UserParameters>
    852             <hashTree/>
    853             <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="Create Ticket" enabled="true">
    854               <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true">
    855                 <collectionProp name="Arguments.arguments">
    856                   <elementProp name="author" elementType="HTTPArgument">
    857                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    858                     <stringProp name="Argument.name">author</stringProp>
    859                     <stringProp name="Argument.value">anonymous</stringProp>
    860                     <stringProp name="Argument.metadata">=</stringProp>
    861                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    862                   </elementProp>
    863                   <elementProp name="field_summary" elementType="HTTPArgument">
    864                     <boolProp name="HTTPArgument.always_encode">true</boolProp>
    865                     <stringProp name="Argument.name">field_summary</stringProp>
    866                     <stringProp name="Argument.value">Test ticket for load testing</stringProp>
    867                     <stringProp name="Argument.metadata">=</stringProp>
    868                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    869                   </elementProp>
    870                   <elementProp name="field_reporter" elementType="HTTPArgument">
    871                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    872                     <stringProp name="Argument.name">field_reporter</stringProp>
    873                     <stringProp name="Argument.value">anonymous</stringProp>
    874                     <stringProp name="Argument.metadata">=</stringProp>
    875                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    876                   </elementProp>
    877                   <elementProp name="field_description" elementType="HTTPArgument">
    878                     <boolProp name="HTTPArgument.always_encode">true</boolProp>
    879                     <stringProp name="Argument.name">field_description</stringProp>
    880                     <stringProp name="Argument.value">Blah Blah Blah Blah Blah Blah Blah Blah Blah</stringProp>
    881                     <stringProp name="Argument.metadata">=</stringProp>
    882                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    883                   </elementProp>
    884                   <elementProp name="field_type" elementType="HTTPArgument">
    885                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    886                     <stringProp name="Argument.name">field_type</stringProp>
    887                     <stringProp name="Argument.value">defect</stringProp>
    888                     <stringProp name="Argument.metadata">=</stringProp>
    889                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    890                   </elementProp>
    891                   <elementProp name="field_priority" elementType="HTTPArgument">
    892                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    893                     <stringProp name="Argument.name">field_priority</stringProp>
    894                     <stringProp name="Argument.value">major</stringProp>
    895                     <stringProp name="Argument.metadata">=</stringProp>
    896                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    897                   </elementProp>
    898                   <elementProp name="field_milestone" elementType="HTTPArgument">
    899                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    900                     <stringProp name="Argument.name">field_milestone</stringProp>
    901                     <stringProp name="Argument.value">${milestone}</stringProp>
    902                     <stringProp name="Argument.metadata">=</stringProp>
    903                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    904                   </elementProp>
    905                   <elementProp name="field_component" elementType="HTTPArgument">
    906                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    907                     <stringProp name="Argument.name">field_component</stringProp>
    908                     <stringProp name="Argument.value">component1</stringProp>
    909                     <stringProp name="Argument.metadata">=</stringProp>
    910                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    911                   </elementProp>
    912                   <elementProp name="field_version" elementType="HTTPArgument">
    913                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    914                     <stringProp name="Argument.name">field_version</stringProp>
    915                     <stringProp name="Argument.value"></stringProp>
    916                     <stringProp name="Argument.metadata">=</stringProp>
    917                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    918                   </elementProp>
    919                   <elementProp name="field_keywords" elementType="HTTPArgument">
    920                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    921                     <stringProp name="Argument.name">field_keywords</stringProp>
    922                     <stringProp name="Argument.value"></stringProp>
    923                     <stringProp name="Argument.metadata">=</stringProp>
    924                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    925                   </elementProp>
    926                   <elementProp name="field_cc" elementType="HTTPArgument">
    927                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    928                     <stringProp name="Argument.name">field_cc</stringProp>
    929                     <stringProp name="Argument.value"></stringProp>
    930                     <stringProp name="Argument.metadata">=</stringProp>
    931                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    932                   </elementProp>
    933                   <elementProp name="field_owner" elementType="HTTPArgument">
    934                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    935                     <stringProp name="Argument.name">field_owner</stringProp>
    936                     <stringProp name="Argument.value"></stringProp>
    937                     <stringProp name="Argument.metadata">=</stringProp>
    938                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    939                   </elementProp>
    940                   <elementProp name="field_status" elementType="HTTPArgument">
    941                     <boolProp name="HTTPArgument.always_encode">false</boolProp>
    942                     <stringProp name="Argument.name">field_status</stringProp>
    943                     <stringProp name="Argument.value">new</stringProp>
    944                     <stringProp name="Argument.metadata">=</stringProp>
    945                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    946                   </elementProp>
    947                   <elementProp name="submit" elementType="HTTPArgument">
    948                     <boolProp name="HTTPArgument.always_encode">true</boolProp>
    949                     <stringProp name="Argument.name">submit</stringProp>
    950                     <stringProp name="Argument.value">Create ticket</stringProp>
    951                     <stringProp name="Argument.metadata">=</stringProp>
    952                     <boolProp name="HTTPArgument.use_equals">true</boolProp>
    953                   </elementProp>
    954                 </collectionProp>
    955               </elementProp>
    956               <stringProp name="HTTPSampler.domain"></stringProp>
    957               <stringProp name="HTTPSampler.port"></stringProp>
    958               <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    959               <stringProp name="HTTPSampler.response_timeout"></stringProp>
    960               <stringProp name="HTTPSampler.protocol"></stringProp>
    961               <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
    962               <stringProp name="HTTPSampler.path">/test/newticket</stringProp>
    963               <stringProp name="HTTPSampler.method">POST</stringProp>
    964               <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
    965               <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
    966               <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
    967               <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
    968               <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
    969               <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
    970               <stringProp name="HTTPSampler.mimetype"></stringProp>
    971               <boolProp name="HTTPSampler.monitor">false</boolProp>
    972               <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
    973             </HTTPSampler>
    974             <hashTree/>
    975           </hashTree>
    976         </hashTree>
    977         <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
    978           <collectionProp name="CookieManager.cookies"/>
    979           <boolProp name="CookieManager.clearEachIteration">false</boolProp>
    980           <stringProp name="CookieManager.policy">rfc2109</stringProp>
    981         </CookieManager>
    982         <hashTree/>
    983         <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
    984           <boolProp name="clearEachIteration">false</boolProp>
    985         </CacheManager>
    986         <hashTree/>
    987       </hashTree>
    988       <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
    989         <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    990           <collectionProp name="Arguments.arguments"/>
    991         </elementProp>
    992         <stringProp name="HTTPSampler.domain">apollo.hendrix.local</stringProp>
    993         <stringProp name="HTTPSampler.port"></stringProp>
    994         <stringProp name="HTTPSampler.connect_timeout"></stringProp>
    995         <stringProp name="HTTPSampler.response_timeout"></stringProp>
    996         <stringProp name="HTTPSampler.protocol">http</stringProp>
    997         <stringProp name="HTTPSampler.contentEncoding"></stringProp>
    998         <stringProp name="HTTPSampler.path"></stringProp>
    999       </ConfigTestElement>
    1000       <hashTree/>
    1001       <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
    1002         <collectionProp name="HeaderManager.headers">
    1003           <elementProp name="Accept-Language" elementType="Header">
    1004             <stringProp name="Header.name">Accept-Language</stringProp>
    1005             <stringProp name="Header.value">en-us,en;q=0.5</stringProp>
    1006           </elementProp>
    1007           <elementProp name="Accept" elementType="Header">
    1008             <stringProp name="Header.name">Accept</stringProp>
    1009             <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
    1010           </elementProp>
    1011           <elementProp name="User-Agent" elementType="Header">
    1012             <stringProp name="Header.name">User-Agent</stringProp>
    1013             <stringProp name="Header.value">Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 GTB5 (.NET CLR 3.5.30729)</stringProp>
    1014           </elementProp>
    1015           <elementProp name="Accept-Encoding" elementType="Header">
    1016             <stringProp name="Header.name">Accept-Encoding</stringProp>
    1017             <stringProp name="Header.value">gzip,deflate</stringProp>
    1018           </elementProp>
    1019           <elementProp name="Accept-Charset" elementType="Header">
    1020             <stringProp name="Header.name">Accept-Charset</stringProp>
    1021             <stringProp name="Header.value">ISO-8859-1,utf-8;q=0.7,*;q=0.7</stringProp>
    1022           </elementProp>
    1023           <elementProp name="" elementType="Header">
    1024             <stringProp name="Header.name">Keep-Alive</stringProp>
    1025             <stringProp name="Header.value">300</stringProp>
    1026           </elementProp>
    1027         </collectionProp>
    1028       </HeaderManager>
    1029       <hashTree/>
    1030       <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
    1031         <collectionProp name="Arguments.arguments">
    1032           <elementProp name="test_duration" elementType="Argument">
    1033             <stringProp name="Argument.name">test_duration</stringProp>
    1034             <stringProp name="Argument.value">600</stringProp>
    1035             <stringProp name="Argument.metadata">=</stringProp>
    1036           </elementProp>
    1037         </collectionProp>
    1038       </Arguments>
    1039       <hashTree/>
    1040       <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
    1041         <boolProp name="ResultCollector.error_logging">false</boolProp>
    1042         <objProp>
    1043           <name>saveConfig</name>
    1044           <value class="SampleSaveConfiguration">
    1045             <time>true</time>
    1046             <latency>true</latency>
    1047             <timestamp>true</timestamp>
    1048             <success>true</success>
    1049             <label>true</label>
    1050             <code>true</code>
    1051             <message>true</message>
    1052             <threadName>true</threadName>
    1053             <dataType>true</dataType>
    1054             <encoding>true</encoding>
    1055             <assertions>false</assertions>
    1056             <subresults>false</subresults>
    1057             <responseData>false</responseData>
    1058             <samplerData>false</samplerData>
    1059             <xml>true</xml>
    1060             <fieldNames>false</fieldNames>
    1061             <responseHeaders>false</responseHeaders>
    1062             <requestHeaders>false</requestHeaders>
    1063             <responseDataOnError>false</responseDataOnError>
    1064             <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
    1065             <assertionsResultsToSave>0</assertionsResultsToSave>
    1066             <bytes>true</bytes>
    1067             <url>true</url>
    1068             <hostname>true</hostname>
    1069             <threadCounts>true</threadCounts>
    1070             <sampleCount>true</sampleCount>
    1071           </value>
    1072         </objProp>
    1073         <stringProp name="filename">D:\workspace\trac-0.11-stable\detail.jtl</stringProp>
    1074       </ResultCollector>
    1075       <hashTree/>
    1076       <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
    1077         <boolProp name="ResultCollector.error_logging">false</boolProp>
    1078         <objProp>
    1079           <name>saveConfig</name>
    1080           <value class="SampleSaveConfiguration">
    1081             <time>true</time>
    1082             <latency>true</latency>
    1083             <timestamp>true</timestamp>
    1084             <success>true</success>
    1085             <label>true</label>
    1086             <code>true</code>
    1087             <message>true</message>
    1088             <threadName>true</threadName>
    1089             <dataType>true</dataType>
    1090             <encoding>false</encoding>
    1091             <assertions>true</assertions>
    1092             <subresults>true</subresults>
    1093             <responseData>false</responseData>
    1094             <samplerData>false</samplerData>
    1095             <xml>true</xml>
    1096             <fieldNames>false</fieldNames>
    1097             <responseHeaders>false</responseHeaders>
    1098             <requestHeaders>false</requestHeaders>
    1099             <responseDataOnError>false</responseDataOnError>
    1100             <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
    1101             <assertionsResultsToSave>0</assertionsResultsToSave>
    1102             <bytes>true</bytes>
    1103           </value>
    1104         </objProp>
    1105         <stringProp name="filename">D:\workspace\trac-0.11-stable\detail-mod_python</stringProp>
    1106       </ResultCollector>
    1107       <hashTree/>
    1108     </hashTree>
    1109   </hashTree>
    1110 </jmeterTestPlan>
    1111 }}}
    111292
    1113 == Testing Results ==
     93== Testing Results
     94
    111495While the testing resulted in many MB of results from log files and test data, I am only providing key metrics for the testing here.  If desired the testing could most likely be recreated and (one would hope) similar results could be obtained if anyone so desired.
    111596
    1116 (formatting could probably be improved as I am not the most familiar with wiki formatting, but I am committed to improving ;) )
     97=== Trac-0.11-stable
    111798
    1118 === Trac-0.11-stable ===
    111999Testing done on the stable branch of Trac-0.11 (r???).
    1120100
    1121 ==== Tracd Results  (no --http11) ====
     101==== Tracd Results (without --http11)
     102
    1122103''needs to be redone since I fixed the issue with the errors on "get ticket !#1" -- lance''
    1123104||sampler_label||aggregate_report_count||average||aggregate_report_min||aggregate_report_max||aggregate_report_stddev||aggregate_report_error%||aggregate_report_rate||aggregate_report_bandwidth||average_bytes
     
    1132113||TOTAL||3134||1933||29||14236||2042.9401288283566||0.016273133375877474||4.835569051123722||67.50873074123534||14295.926611359286
    1133114
    1134 ==== Trac-0.11-stable (with --http11) ====
     115==== Trac-0.11-stable (with --http11)
     116
    1135117''needs to be redone since I fixed the issue with the errors on "get ticket !#1" -- lance''
    1136118||sampler_label||aggregate_report_count||average||aggregate_report_min||aggregate_report_max||aggregate_report_stddev||aggregate_report_error%||aggregate_report_rate||aggregate_report_bandwidth||average_bytes
     
    1145127||TOTAL||3077||2002||29||16424||2073.3038492683213||0.0025999350016249595||4.513113256115144||63.88590915782842||14495.353266168346
    1146128
    1147 ==== mod_python ====
     129==== mod_python
     130
    1148131||sampler_label||aggregate_report_count||average||aggregate_report_min||aggregate_report_max||aggregate_report_stddev||aggregate_report_error%||aggregate_report_rate||aggregate_report_bandwidth||average_bytes
    1149132||New Ticket||82||611||76||1353||254.62547556725843||0.0||0.1410221353158982||1.2909584926281537||9374.0
     
    1157140||TOTAL||5375||936||37||7207||1132.8669042178017||0.0||8.321180539429237||127.51528091676575||15691.961860465117
    1158141
    1159 === Trac-0.10-stable ===
     142=== Trac-0.10-stable
     143
    1160144Testing done on the "stable" branch of the 0.10 version (r???).
    1161145
    1162 == Discussion ==
    1163 === About the presentation ===
     146== Discussion
     147
     148=== About the presentation
     149
    1164150 - what are the units used in the table above (asked by Shane Caraveo on Trac-Users)
    1165151 - maybe you could put the jmeter config files as attachments instead of inline (cboos)
    1166 === About the tests ===
    1167  - I tried to run the tests locally and I noticed that the retrieval operations were done only on the main page, the sub-resources (images, CSS, etc.) were not queried. Maybe you should switch that option on instead, as I think this is more representative of a real load? (cboos)
     152
     153=== About the tests
     154
     155I tried to run the tests locally and I noticed that the retrieval operations were done only on the main page, the sub-resources (images, CSS, etc.) were not queried. Maybe you should switch that option on instead, as I think this is more representative of a real load? (cboos)
    1168156