├── .gitignore ├── LICENSE ├── README.md ├── assembly └── assembly.xml ├── jmeter └── bin │ ├── jmeter.properties │ └── saveservice.properties ├── pom.xml └── src └── main ├── java └── com │ └── loadium │ └── postman2jmx │ ├── app │ └── Postman2Jmx.java │ ├── builder │ ├── AbstractJmxBodyBuilder.java │ ├── AbstractJmxFileBuilder.java │ ├── IJmxBodyBuilder.java │ ├── IJmxFileBuilder.java │ ├── JmxBinaryBodyBuilder.java │ ├── JmxBodyBuilderFactory.java │ ├── JmxEmptyBodyBuilder.java │ ├── JmxFileBuilder.java │ ├── JmxFormDataBodyBuilder.java │ ├── JmxRawBodyBuilder.java │ └── JmxUrlEncodedBodyBuilder.java │ ├── config │ ├── Postman2JmxConfig.java │ └── jmeter │ │ └── bin │ │ ├── jmeter.properties │ │ └── saveservice.properties │ ├── exception │ ├── InvalidArgumentsException.java │ ├── NoPostmanCollectionItemException.java │ ├── NullPostmanCollectionException.java │ └── UnsupportedJmxFileBuilderException.java │ ├── model │ ├── deserializer │ │ └── ExecDeserializer.java │ ├── jmx │ │ ├── JmxCookieManager.java │ │ ├── JmxFile.java │ │ ├── JmxHTTPSamplerProxy.java │ │ ├── JmxHeaderManager.java │ │ ├── JmxJsonPostProcessor.java │ │ ├── JmxLoopController.java │ │ ├── JmxTestPlan.java │ │ └── JmxThreadGroup.java │ └── postman │ │ ├── PostmanBody.java │ │ ├── PostmanCollection.java │ │ ├── PostmanEvent.java │ │ ├── PostmanFileBody.java │ │ ├── PostmanFormDataBody.java │ │ ├── PostmanHeader.java │ │ ├── PostmanInfo.java │ │ ├── PostmanItem.java │ │ ├── PostmanQuery.java │ │ ├── PostmanRawBody.java │ │ ├── PostmanRequest.java │ │ ├── PostmanScript.java │ │ ├── PostmanUrl.java │ │ └── PostmanUrlEncodedBody.java │ ├── parser │ ├── AbstractParser.java │ ├── IParser.java │ ├── ParserFactory.java │ └── PostmanParserV2.java │ └── utils │ ├── CollectionVersion.java │ ├── JmxFileAttributesType.java │ ├── PostmanCollectionUtils.java │ ├── ResponseBodyMode.java │ ├── TypeUtils.java │ ├── UrlUtils.java │ └── ValueUtils.java └── resources ├── jmeter └── bin │ ├── jmeter.properties │ └── saveservice.properties ├── jmxFileTemplate.jmx └── log4j2.properties /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Loadium 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # postman2jmx 2 | Postman collection to Jmeter jmx file converter. 3 | 4 | ### Note 5 | 6 | - postman2jmx converter only converts the Postman V2+ exported files! 7 | - feel free to send any pull requests. 8 | 9 | ### Installation 10 | 11 | postman2jmx requires Java8+ and Maven 3+. 12 | 13 | - Clone or download the project. 14 | ```sh 15 | $ git clone https://github.com/Loadium/postman2jmx.git 16 | ``` 17 | - Build the project. 18 | ```sh 19 | $ cd postman2jmx 20 | $ mvn package 21 | ``` 22 | 23 | ### Usage 24 | 25 | - After build, go to the Postman2Jmx folder. It is located under the target folder. 26 | ```sh 27 | $ cd target/Postman2Jmx 28 | ``` 29 | - Then execute the following command to convert your postman json collection file to the jmx file. 30 | ```sh 31 | $ java -jar Postman2Jmx.jar my_postman_collection.json my_jmx_file.jmx 32 | ``` 33 | 34 | License 35 | ---- 36 | 37 | The MIT License (MIT) 38 | -------------------------------------------------------------------------------- /assembly/assembly.xml: -------------------------------------------------------------------------------- 1 | 5 | make-assembly 6 | 7 | zip 8 | 9 | false 10 | 11 | 12 | ${project.basedir}/jmeter 13 | /jmeter 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /jmeter/bin/jmeter.properties: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Apache JMeter Property file 3 | ################################################################################ 4 | 5 | ## Licensed to the Apache Software Foundation (ASF) under one or more 6 | ## contributor license agreements. See the NOTICE file distributed with 7 | ## this work for additional information regarding copyright ownership. 8 | ## The ASF licenses this file to You under the Apache License, Version 2.0 9 | ## (the "License"); you may not use this file except in compliance with 10 | ## the License. You may obtain a copy of the License at 11 | ## 12 | ## http://www.apache.org/licenses/LICENSE-2.0 13 | ## 14 | ## Unless required by applicable law or agreed to in writing, software 15 | ## distributed under the License is distributed on an "AS IS" BASIS, 16 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | ## See the License for the specific language governing permissions and 18 | ## limitations under the License. 19 | 20 | ################################################################################ 21 | # 22 | # THIS FILE SHOULD NOT BE MODIFIED 23 | # 24 | # This avoids having to re-apply the modifications when upgrading JMeter 25 | # Instead only user.properties should be modified: 26 | # 1/ copy the property you want to modify to user.properties from jmeter.properties 27 | # 2/ Change its value there 28 | # 29 | ################################################################################ 30 | 31 | # JMeter properties are described in the file 32 | # http://jmeter.apache.org/usermanual/properties_reference.html 33 | # A local copy can be found in 34 | # printable_docs/usermanual/properties_reference.html 35 | 36 | #Preferred GUI language. Comment out to use the JVM default locale's language. 37 | #language=en 38 | 39 | 40 | # Additional locale(s) to add to the displayed list. 41 | # The current default list is: en, fr, de, no, es, tr, ja, zh_CN, zh_TW, pl, pt_BR 42 | # [see JMeterMenuBar#makeLanguageMenu()] 43 | # The entries are a comma-separated list of language names 44 | #locales.add=zu 45 | 46 | 47 | #--------------------------------------------------------------------------- 48 | # XML Parser 49 | #--------------------------------------------------------------------------- 50 | 51 | # Path to a Properties file containing Namespace mapping in the form 52 | # prefix=Namespace 53 | # Example: 54 | # ns=http://biz.aol.com/schema/2006-12-18 55 | #xpath.namespace.config= 56 | 57 | #--------------------------------------------------------------------------- 58 | # SSL configuration 59 | #--------------------------------------------------------------------------- 60 | 61 | ## SSL System properties are now in system.properties 62 | 63 | # JMeter no longer converts javax.xxx property entries in this file into System properties. 64 | # These must now be defined in the system.properties file or on the command-line. 65 | # The system.properties file gives more flexibility. 66 | 67 | # By default, SSL session contexts are now created per-thread, rather than being shared. 68 | # The original behaviour can be enabled by setting the JMeter property to true 69 | #https.sessioncontext.shared=false 70 | 71 | # Be aware that https default protocol may vary depending on the version of JVM 72 | # See https://blogs.oracle.com/java-platform-group/entry/diagnosing_tls_ssl_and_https 73 | # See https://bz.apache.org/bugzilla/show_bug.cgi?id=58236 74 | # Default HTTPS protocol level: 75 | #https.default.protocol=TLS 76 | # This may need to be changed here (or in user.properties) to: 77 | #https.default.protocol=SSLv3 78 | 79 | # List of protocols to enable. You may have to select only a subset if you find issues with target server. 80 | # This is needed when server does not support Socket version negotiation, this can lead to: 81 | # javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 82 | # java.net.SocketException: Connection reset 83 | # see https://bz.apache.org/bugzilla/show_bug.cgi?id=54759 84 | #https.socket.protocols=SSLv2Hello SSLv3 TLSv1 85 | 86 | # Control if we allow reuse of cached SSL context between iterations 87 | # set the value to 'false' to reset the SSL context each iteration 88 | #https.use.cached.ssl.context=true 89 | 90 | # Start and end index to be used with keystores with many entries 91 | # The default is to use entry 0, i.e. the first 92 | #https.keyStoreStartIndex=0 93 | #https.keyStoreEndIndex=0 94 | 95 | #--------------------------------------------------------------------------- 96 | # Look and Feel configuration 97 | #--------------------------------------------------------------------------- 98 | 99 | #Classname of the Swing default UI 100 | # 101 | # The LAF classnames that are available are now displayed as ToolTip text 102 | # when hovering over the Options/Look and Feel selection list. 103 | # 104 | # You can either use a full class name, as shown below, 105 | # or one of the strings "System" or "CrossPlatform" which means 106 | # JMeter will use the corresponding string returned by UIManager.getLookAndFeelClassName() 107 | 108 | # LAF can be overridden by os.name (lowercased, spaces replaced by '_') 109 | # Sample os.name LAF: 110 | #jmeter.laf.windows_xp=javax.swing.plaf.metal.MetalLookAndFeel 111 | 112 | # Failing that, the OS family = os.name, but only up to first space: 113 | # Sample OS family LAF: 114 | #jmeter.laf.windows=com.sun.java.swing.plaf.windows.WindowsLookAndFeel 115 | 116 | # Custom settings for Mac using System LAF if you don't want to use Darcula 117 | #jmeter.laf.mac=System 118 | 119 | # Failing that, the JMeter default laf can be defined: 120 | #jmeter.laf=System 121 | 122 | # If none of the above jmeter.laf properties are defined, JMeter uses the CrossPlatform LAF. 123 | # This is because the CrossPlatform LAF generally looks better than the System LAF. 124 | # See https://bz.apache.org/bugzilla/show_bug.cgi?id=52026 for details 125 | # N.B. the laf can be defined in user.properties. 126 | 127 | # LoggerPanel display 128 | # default to false 129 | #jmeter.loggerpanel.display=false 130 | 131 | # Enable LogViewer Panel to receive log event even if closed 132 | # Enabled since 2.12 133 | # Note this has some impact on performances, but as GUI mode must 134 | # not be used for Load Test it is acceptable 135 | #jmeter.loggerpanel.enable_when_closed=true 136 | 137 | # Max lines kept in LoggerPanel, default to 1000 chars 138 | # 0 means no limit 139 | #jmeter.loggerpanel.maxlength=1000 140 | 141 | # Interval period in ms to process the queue of events of the listeners 142 | #jmeter.gui.refresh_period=500 143 | 144 | # HiDPI mode (default: false) 145 | # Activate a 'pseudo'-hidpi mode. Allows to increase size of some UI elements 146 | # which are not correctly managed by JVM with high resolution screens in Linux or Windows 147 | #jmeter.hidpi.mode=false 148 | # To enable pseudo-hidpi mode change to true 149 | #jmeter.hidpi.mode=true 150 | # HiDPI scale factor 151 | #jmeter.hidpi.scale.factor=1.0 152 | # Suggested value for HiDPI 153 | #jmeter.hidpi.scale.factor=2.0 154 | 155 | # Toolbar display 156 | # Toolbar icon definitions 157 | #jmeter.toolbar.icons=org/apache/jmeter/images/toolbar/icons-toolbar.properties 158 | # Toolbar list 159 | #jmeter.toolbar=new,open,close,save,save_as_testplan,|,cut,copy,paste,|,expand,collapse,toggle,|,test_start,test_stop,test_shutdown,|,test_start_remote_all,test_stop_remote_all,test_shutdown_remote_all,|,test_clear,test_clear_all,|,search,search_reset,|,function_helper,help 160 | # Toolbar icons default size: 22x22. Available sizes are: 22x22, 32x32, 48x48 161 | #jmeter.toolbar.icons.size=22x22 162 | # Suggested value for HiDPI 163 | #jmeter.toolbar.icons.size=48x48 164 | 165 | # Icon definitions 166 | # default: 167 | #jmeter.icons=org/apache/jmeter/images/icon.properties 168 | # alternate: 169 | #jmeter.icons=org/apache/jmeter/images/icon_1.properties 170 | # Historical icon set (deprecated) 171 | #jmeter.icons=org/apache/jmeter/images/icon_old.properties 172 | 173 | # Tree icons default size: 19x19. Available sizes are: 19x19, 24x24, 32x32, 48x48 174 | # Useful for HiDPI display (see below) 175 | #jmeter.tree.icons.size=19x19 176 | # Suggested value for HiDPI screen like 3200x1800: 177 | #jmeter.tree.icons.size=32x32 178 | 179 | #Components to not display in JMeter GUI (GUI class name or static label) 180 | # These elements are deprecated and will be removed in next version: 181 | # MongoDB Script, MongoDB Source Config, Monitor Results 182 | # BSF Elements 183 | not_in_menu=org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler,org.apache.jmeter.protocol.mongodb.config.MongoSourceElement,\ 184 | org.apache.jmeter.timers.BSFTimer,org.apache.jmeter.modifiers.BSFPreProcessor,org.apache.jmeter.extractor.BSFPostProcessor,org.apache.jmeter.assertions.BSFAssertion,\ 185 | org.apache.jmeter.visualizers.BSFListener,org.apache.jmeter.protocol.java.sampler.BSFSampler,\ 186 | org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui 187 | 188 | # Number of items in undo history 189 | # Feature is disabled by default (0) due to known and not fixed bugs: 190 | # https://bz.apache.org/bugzilla/show_bug.cgi?id=57043 191 | # https://bz.apache.org/bugzilla/show_bug.cgi?id=57039 192 | # https://bz.apache.org/bugzilla/show_bug.cgi?id=57040 193 | # Set it to a number > 0 (25 can be a good default) 194 | # The bigger it is, the more it consumes memory 195 | #undo.history.size=0 196 | 197 | # Hotkeys to add JMeter components, will add elements when you press Ctrl+0 .. Ctrl+9 (Command+0 .. Command+9 on Mac) 198 | gui.quick_0=ThreadGroupGui 199 | gui.quick_1=HttpTestSampleGui 200 | gui.quick_2=RegexExtractorGui 201 | gui.quick_3=AssertionGui 202 | gui.quick_4=ConstantTimerGui 203 | gui.quick_5=TestActionGui 204 | gui.quick_6=JSR223PostProcessor 205 | gui.quick_7=JSR223PreProcessor 206 | gui.quick_8=DebugSampler 207 | gui.quick_9=ViewResultsFullVisualizer 208 | 209 | 210 | #--------------------------------------------------------------------------- 211 | # JMX Backup configuration 212 | #--------------------------------------------------------------------------- 213 | #Enable auto backups of the .jmx file when a test plan is saved. 214 | #When enabled, before the .jmx is saved, it will be backed up to the directory pointed 215 | #by the jmeter.gui.action.save.backup_directory property (see below). Backup file names are built 216 | #after the jmx file being saved. For example, saving test-plan.jmx will create a test-plan-000012.jmx 217 | #in the backup directory provided that the last created backup file is test-plan-000011.jmx. 218 | #Default value is true indicating that auto backups are enabled 219 | #jmeter.gui.action.save.backup_on_save=true 220 | 221 | #Set the backup directory path where JMX backups will be created upon save in the GUI. 222 | #If not set (what it defaults to) then backup files will be created in 223 | #a sub-directory of the JMeter base installation. The default directory is ${JMETER_HOME}/backups 224 | #If set and the directory does not exist, it will be created. 225 | #jmeter.gui.action.save.backup_directory= 226 | 227 | #Set the maximum time (in hours) that backup files should be preserved since the save time. 228 | #By default no expiration time is set which means we keep backups for ever. 229 | #jmeter.gui.action.save.keep_backup_max_hours=0 230 | 231 | #Set the maximum number of backup files that should be preserved. By default 10 backups will be preserved. 232 | #Setting this to zero will cause the backups to not being deleted (unless keep_backup_max_hours is set to a non zero value) 233 | #jmeter.gui.action.save.keep_backup_max_count=10 234 | 235 | #Enable auto saving of the .jmx file before start run a test plan 236 | #When enabled, before the run, the .jmx will be saved and also backed up to the directory pointed 237 | #save_automatically_before_run=true 238 | 239 | #--------------------------------------------------------------------------- 240 | # Remote hosts and RMI configuration 241 | #--------------------------------------------------------------------------- 242 | 243 | # Remote Hosts - comma delimited 244 | remote_hosts=127.0.0.1 245 | #remote_hosts=localhost:1099,localhost:2010 246 | 247 | # RMI port to be used by the server (must start rmiregistry with same port) 248 | #server_port=1099 249 | 250 | # To change the port to (say) 1234: 251 | # On the server(s) 252 | # - set server_port=1234 253 | # - start rmiregistry with port 1234 254 | # On Windows this can be done by: 255 | # SET SERVER_PORT=1234 256 | # JMETER-SERVER 257 | # 258 | # On Unix: 259 | # SERVER_PORT=1234 jmeter-server 260 | # 261 | # On the client: 262 | # - set remote_hosts=server:1234 263 | 264 | # Parameter that controls the RMI port used by RemoteSampleListenerImpl (The Controller) 265 | # Default value is 0 which means port is randomly assigned 266 | # You may need to open Firewall port on the Controller machine 267 | #client.rmi.localport=0 268 | 269 | # When distributed test is starting, there may be several attempts to initialize 270 | # remote engines. By default, only single try is made. Increase following property 271 | # to make it retry for additional times 272 | #client.tries=1 273 | 274 | # If there is initialization retries, following property sets delay between attempts 275 | #client.retries_delay=5000 276 | 277 | # When all initialization tries was made, test will fail if some remote engines are failed 278 | # Set following property to true to ignore failed nodes and proceed with test 279 | #client.continue_on_fail=false 280 | 281 | # To change the default port (1099) used to access the server: 282 | #server.rmi.port=1234 283 | 284 | # To use a specific port for the JMeter server engine, define 285 | # the following property before starting the server: 286 | #server.rmi.localport=4000 287 | 288 | # The jmeter server creates by default the RMI registry as part of the server process. 289 | # To stop the server creating the RMI registry: 290 | #server.rmi.create=false 291 | 292 | # Define the following property to cause JMeter to exit after the first test 293 | #server.exitaftertest=true 294 | 295 | # 296 | # Configuration of Secure RMI connection 297 | # 298 | # Type of keystore : JKS 299 | #server.rmi.ssl.keystore.type=JKS 300 | # 301 | # Keystore file that contains private key 302 | #server.rmi.ssl.keystore.file=rmi_keystore.jks 303 | # 304 | # Password of Keystore 305 | #server.rmi.ssl.keystore.password=changeit 306 | # 307 | # Key alias 308 | #server.rmi.ssl.keystore.alias=rmi 309 | # 310 | # Type of truststore : JKS 311 | #server.rmi.ssl.truststore.type=JKS 312 | # 313 | # Keystore file that contains certificate 314 | #server.rmi.ssl.truststore.file=rmi_keystore.jks 315 | # 316 | # Password of Trust store 317 | #server.rmi.ssl.truststore.password=changeit 318 | # 319 | # Set this if you don't want to use SSL for RMI 320 | #server.rmi.ssl.disable=false 321 | #--------------------------------------------------------------------------- 322 | # Include Controller 323 | #--------------------------------------------------------------------------- 324 | 325 | # Prefix used by IncludeController when building file name 326 | #includecontroller.prefix= 327 | 328 | #--------------------------------------------------------------------------- 329 | # HTTP Java configuration 330 | #--------------------------------------------------------------------------- 331 | 332 | # Number of connection retries performed by HTTP Java sampler before giving up 333 | # 0 means no retry since version 3.0 334 | #http.java.sampler.retries=0 335 | 336 | #--------------------------------------------------------------------------- 337 | # Following properties apply to Apache HttpClient 338 | #--------------------------------------------------------------------------- 339 | 340 | # set the socket timeout (or use the parameter http.socket.timeout) 341 | # for AJP Sampler implementation. 342 | # Value is in milliseconds 343 | #httpclient.timeout=0 344 | # 0 == no timeout 345 | 346 | # Set the http version (defaults to 1.1) 347 | #httpclient.version=1.1 (or use the parameter http.protocol.version) 348 | 349 | # Define characters per second > 0 to emulate slow connections 350 | #httpclient.socket.http.cps=0 351 | #httpclient.socket.https.cps=0 352 | 353 | #Enable loopback protocol 354 | #httpclient.loopback=true 355 | 356 | # Define the local host address to be used for multi-homed hosts 357 | #httpclient.localaddress=1.2.3.4 358 | 359 | #--------------------------------------------------------------------------- 360 | # AuthManager Kerberos configuration 361 | #--------------------------------------------------------------------------- 362 | 363 | # AuthManager Kerberos configuration 364 | # Name of application module used in jaas.conf 365 | #kerberos_jaas_application=JMeter 366 | 367 | # Should ports be stripped from urls before constructing SPNs 368 | # for SPNEGO authentication 369 | #kerberos.spnego.strip_port=true 370 | 371 | #--------------------------------------------------------------------------- 372 | # Apache HttpComponents HTTPClient configuration (HTTPClient4) 373 | #--------------------------------------------------------------------------- 374 | 375 | # define a properties file for overriding Apache HttpClient parameters 376 | # Uncomment this line if you put anything in hc.parameters file 377 | #hc.parameters.file=hc.parameters 378 | 379 | # Preemptively send Authorization Header when BASIC auth is used 380 | #httpclient4.auth.preemptive=true 381 | 382 | # Number of retries to attempt (default 0) 383 | #httpclient4.retrycount=0 384 | 385 | # true if it's OK to retry requests that have been sent 386 | # This will retry Idempotent and non Idempotent requests 387 | # This should usually be false, but it can be useful 388 | # when testing against some Load Balancers like Amazon ELB 389 | #httpclient4.request_sent_retry_enabled=false 390 | 391 | # Idle connection timeout (Milliseconds) to apply if the server does not send 392 | # Keep-Alive headers (default 0) 393 | # Set this > 0 to compensate for servers that don't send a Keep-Alive header 394 | # If <= 0, idle timeout will only apply if the server sends a Keep-Alive header 395 | #httpclient4.idletimeout=0 396 | 397 | # Check connections if the elapsed time (Milliseconds) since the last 398 | # use of the connection exceed this value 399 | #httpclient4.validate_after_inactivity=1700 400 | 401 | # TTL (in Milliseconds) represents an absolute value. 402 | # No matter what, the connection will not be re-used beyond its TTL. 403 | #httpclient4.time_to_live=2000 404 | 405 | # Max size in bytes of PUT body to retain in result sampler. 406 | # Bigger results will be clipped. 407 | #httpclient4.max_body_retain_size=32768 408 | 409 | #--------------------------------------------------------------------------- 410 | # HTTP Cache Manager configuration 411 | #--------------------------------------------------------------------------- 412 | # 413 | # Space or comma separated list of methods that can be cached 414 | #cacheable_methods=GET 415 | # N.B. This property is currently a temporary solution for Bug 56162 416 | 417 | # Since 2.12, JMeter does not create anymore a Sample Result with 204 response 418 | # code for a resource found in cache which is inline with what browser do. 419 | #cache_manager.cached_resource_mode=RETURN_NO_SAMPLE 420 | 421 | # You can choose between 3 modes: 422 | # RETURN_NO_SAMPLE (default) 423 | # RETURN_200_CACHE 424 | # RETURN_CUSTOM_STATUS 425 | 426 | # Those mode have the following behaviours: 427 | # RETURN_NO_SAMPLE: 428 | # this mode returns no Sample Result, it has no additional configuration 429 | 430 | # RETURN_200_CACHE: 431 | # this mode will return Sample Result with response code to 200 and 432 | # response message to "(ex cache)", you can modify response message by setting 433 | # RETURN_200_CACHE.message=(ex cache) 434 | 435 | # RETURN_CUSTOM_STATUS: 436 | # This mode lets you select what response code and message you want to return, 437 | # if you use this mode you need to set those properties 438 | # RETURN_CUSTOM_STATUS.code= 439 | # RETURN_CUSTOM_STATUS.message= 440 | 441 | #--------------------------------------------------------------------------- 442 | # Results file configuration 443 | #--------------------------------------------------------------------------- 444 | 445 | # This section helps determine how result data will be saved. 446 | # The commented out values are the defaults. 447 | 448 | # legitimate values: xml, csv, db. Only xml and csv are currently supported. 449 | #jmeter.save.saveservice.output_format=csv 450 | 451 | # The below properties are true when field should be saved; false otherwise 452 | # 453 | # assertion_results_failure_message only affects CSV output 454 | #jmeter.save.saveservice.assertion_results_failure_message=true 455 | # 456 | # legitimate values: none, first, all 457 | #jmeter.save.saveservice.assertion_results=none 458 | # 459 | #jmeter.save.saveservice.data_type=true 460 | #jmeter.save.saveservice.label=true 461 | #jmeter.save.saveservice.response_code=true 462 | # response_data is not currently supported for CSV output 463 | #jmeter.save.saveservice.response_data=false 464 | # Save ResponseData for failed samples 465 | #jmeter.save.saveservice.response_data.on_error=false 466 | #jmeter.save.saveservice.response_message=true 467 | #jmeter.save.saveservice.successful=true 468 | #jmeter.save.saveservice.thread_name=true 469 | #jmeter.save.saveservice.time=true 470 | #jmeter.save.saveservice.subresults=true 471 | #jmeter.save.saveservice.assertions=true 472 | #jmeter.save.saveservice.latency=true 473 | # Only available with HttpClient4 474 | #jmeter.save.saveservice.connect_time=true 475 | #jmeter.save.saveservice.samplerData=false 476 | #jmeter.save.saveservice.responseHeaders=false 477 | #jmeter.save.saveservice.requestHeaders=false 478 | #jmeter.save.saveservice.encoding=false 479 | #jmeter.save.saveservice.bytes=true 480 | # Only available with HttpClient4 481 | #jmeter.save.saveservice.sent_bytes=true 482 | #jmeter.save.saveservice.url=false 483 | #jmeter.save.saveservice.filename=false 484 | #jmeter.save.saveservice.hostname=false 485 | #jmeter.save.saveservice.thread_counts=true 486 | #jmeter.save.saveservice.sample_count=false 487 | #jmeter.save.saveservice.idle_time=true 488 | 489 | # Timestamp format - this only affects CSV output files 490 | # legitimate values: none, ms, or a format suitable for SimpleDateFormat 491 | #jmeter.save.saveservice.timestamp_format=ms 492 | #jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS 493 | 494 | # For use with Comma-separated value (CSV) files or other formats 495 | # where the fields' values are separated by specified delimiters. 496 | # Default: 497 | #jmeter.save.saveservice.default_delimiter=, 498 | # For TAB, one can use: 499 | #jmeter.save.saveservice.default_delimiter=\t 500 | 501 | # Only applies to CSV format files: 502 | # Print field names as first line in CSV 503 | #jmeter.save.saveservice.print_field_names=true 504 | 505 | # Optional list of JMeter variable names whose values are to be saved in the result data files. 506 | # Use commas to separate the names. For example: 507 | #sample_variables=SESSION_ID,REFERENCE 508 | # N.B. The current implementation saves the values in XML as attributes, 509 | # so the names must be valid XML names. 510 | # By default JMeter sends the variable to all servers 511 | # to ensure that the correct data is available at the client. 512 | 513 | # Optional xml processing instruction for line 2 of the file: 514 | # Example: 515 | #jmeter.save.saveservice.xml_pi= 516 | # Default value: 517 | #jmeter.save.saveservice.xml_pi= 518 | 519 | # Prefix used to identify filenames that are relative to the current base 520 | #jmeter.save.saveservice.base_prefix=~/ 521 | 522 | # AutoFlush on each line written in XML or CSV output 523 | # Setting this to true will result in less test results data loss in case of Crash 524 | # but with impact on performances, particularly for intensive tests (low or no pauses) 525 | # Since JMeter 2.10, this is false by default 526 | #jmeter.save.saveservice.autoflush=false 527 | 528 | #--------------------------------------------------------------------------- 529 | # Settings that affect SampleResults 530 | #--------------------------------------------------------------------------- 531 | 532 | # Save the start time stamp instead of the end 533 | # This also affects the timestamp stored in result files 534 | sampleresult.timestamp.start=true 535 | 536 | # Whether to use System.nanoTime() - otherwise only use System.currentTimeMillis() 537 | #sampleresult.useNanoTime=true 538 | 539 | # Use a background thread to calculate the nanoTime offset 540 | # Set this to <= 0 to disable the background thread 541 | #sampleresult.nanoThreadSleep=5000 542 | 543 | #--------------------------------------------------------------------------- 544 | # Upgrade property 545 | #--------------------------------------------------------------------------- 546 | 547 | # File that holds a record of name changes for backward compatibility issues 548 | upgrade_properties=/bin/upgrade.properties 549 | 550 | #--------------------------------------------------------------------------- 551 | # JMeter Test Script recorder configuration 552 | # 553 | # N.B. The element was originally called the Proxy recorder, which is why the 554 | # properties have the prefix "proxy". 555 | #--------------------------------------------------------------------------- 556 | 557 | # If the recorder detects a gap of at least 5s (default) between HTTP requests, 558 | # it assumes that the user has clicked a new URL 559 | #proxy.pause=5000 560 | 561 | # Add numeric prefix to Sampler names (default true) 562 | #proxy.number.requests=true 563 | 564 | # List of URL patterns that will be added to URL Patterns to exclude 565 | # Separate multiple lines with ; 566 | #proxy.excludes.suggested=.*\\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2) 567 | 568 | # Change the default HTTP Sampler (currently HttpClient4) 569 | # Java: 570 | #jmeter.httpsampler=HTTPSampler 571 | #or 572 | #jmeter.httpsampler=Java 573 | # 574 | # HttpClient4.x 575 | #jmeter.httpsampler=HttpClient4 576 | 577 | # By default JMeter tries to be more lenient with RFC2616 redirects and allows 578 | # relative paths. 579 | # If you want to test strict conformance, set this value to true 580 | # When the property is true, JMeter follows http://tools.ietf.org/html/rfc3986#section-5.2 581 | #jmeter.httpclient.strict_rfc2616=false 582 | 583 | # Default content-type include filter to use 584 | #proxy.content_type_include=text/html|text/plain|text/xml 585 | # Default content-type exclude filter to use 586 | #proxy.content_type_exclude=image/.*|text/css|application/.* 587 | 588 | # Default headers to remove from Header Manager elements 589 | # (Cookie and Authorization are always removed) 590 | #proxy.headers.remove=If-Modified-Since,If-None-Match,Host 591 | 592 | # Binary content-type handling 593 | # These content-types will be handled by saving the request in a file: 594 | #proxy.binary.types=application/x-amf,application/x-java-serialized-object 595 | # The files will be saved in this directory: 596 | #proxy.binary.directory=user.dir 597 | # The files will be created with this file filesuffix: 598 | #proxy.binary.filesuffix=.binary 599 | 600 | #--------------------------------------------------------------------------- 601 | # Test Script Recorder certificate configuration 602 | #--------------------------------------------------------------------------- 603 | 604 | #proxy.cert.directory= 605 | #proxy.cert.file=proxyserver.jks 606 | #proxy.cert.type=JKS 607 | #proxy.cert.keystorepass=password 608 | #proxy.cert.keypassword=password 609 | #proxy.cert.factory=SunX509 610 | # define this property if you wish to use your own keystore 611 | #proxy.cert.alias= 612 | # The default validity for certificates created by JMeter 613 | #proxy.cert.validity=7 614 | # Use dynamic key generation (if supported by JMeter/JVM) 615 | # If false, will revert to using a single key with no certificate 616 | #proxy.cert.dynamic_keys=true 617 | 618 | #--------------------------------------------------------------------------- 619 | # Test Script Recorder miscellaneous configuration 620 | #--------------------------------------------------------------------------- 621 | 622 | # Whether to attempt disabling of samples that resulted from redirects 623 | # where the generated samples use auto-redirection 624 | #proxy.redirect.disabling=true 625 | 626 | # SSL configuration 627 | #proxy.ssl.protocol=TLS 628 | 629 | #--------------------------------------------------------------------------- 630 | # JMeter Proxy configuration 631 | #--------------------------------------------------------------------------- 632 | # use command-line flags for user-name and password 633 | #http.proxyDomain=NTLM domain, if required by HTTPClient sampler 634 | 635 | #--------------------------------------------------------------------------- 636 | # HTTPSampleResponse Parser configuration 637 | #--------------------------------------------------------------------------- 638 | 639 | # Space-separated list of parser groups 640 | HTTPResponse.parsers=htmlParser wmlParser cssParser 641 | # for each parser, there should be a parser.types and a parser.className property 642 | 643 | # CSS Parser based on ph-css 644 | cssParser.className=org.apache.jmeter.protocol.http.parser.CssParser 645 | cssParser.types=text/css 646 | 647 | # CSS parser LRU cache size 648 | # This cache stores the URLs found in a CSS to avoid continuously parsing the CSS 649 | # By default the cache size is 400 650 | # It can be disabled by setting its value to 0 651 | #css.parser.cache.size=400 652 | 653 | # Let the CSS Parser ignore all css errors 654 | #css.parser.ignore_all_css_errors=true 655 | 656 | #--------------------------------------------------------------------------- 657 | # HTML Parser configuration 658 | #--------------------------------------------------------------------------- 659 | 660 | # Define the HTML parser to be used. 661 | # Default parser: 662 | # This new parser (since 2.10) should perform better than all others 663 | # see https://bz.apache.org/bugzilla/show_bug.cgi?id=55632 664 | # Do not comment this property 665 | htmlParser.className=org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 666 | 667 | # Other parsers: 668 | # Default parser before 2.10 669 | #htmlParser.className=org.apache.jmeter.protocol.http.parser.JTidyHTMLParser 670 | # Note that Regexp extractor may detect references that have been commented out. 671 | # In many cases it will work OK, but you should be aware that it may generate 672 | # additional references. 673 | #htmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser 674 | # This parser is based on JSoup, it should be the most accurate but less 675 | # performant than LagartoBasedHtmlParser 676 | #htmlParser.className=org.apache.jmeter.protocol.http.parser.JsoupBasedHtmlParser 677 | 678 | #Used by HTTPSamplerBase to associate htmlParser with content types below 679 | htmlParser.types=text/html application/xhtml+xml application/xml text/xml 680 | 681 | #--------------------------------------------------------------------------- 682 | # WML Parser configuration 683 | #--------------------------------------------------------------------------- 684 | 685 | wmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser 686 | 687 | #Used by HTTPSamplerBase to associate wmlParser with content types below 688 | wmlParser.types=text/vnd.wap.wml 689 | 690 | #--------------------------------------------------------------------------- 691 | # Remote batching configuration 692 | #--------------------------------------------------------------------------- 693 | # How is Sample sender implementations configured: 694 | # - true (default) means client configuration will be used 695 | # - false means server configuration will be used 696 | #sample_sender_client_configured=true 697 | 698 | # By default when Stripping modes are used JMeter since 3.1 will strip 699 | # response even for SampleResults in error. 700 | # If you want to revert to previous behaviour (no stripping of Responses in error) 701 | # set this property to false 702 | #sample_sender_strip_also_on_error=true 703 | 704 | # Remote batching support 705 | # Since JMeter 2.9, default is MODE_STRIPPED_BATCH, which returns samples in 706 | # batch mode (every 100 samples or every minute by default) 707 | # Note also that MODE_STRIPPED_BATCH strips response data from SampleResult, so if you need it change to 708 | # another mode 709 | # Batch returns samples in batches 710 | # Statistical returns sample summary statistics 711 | # mode can also be the class name of an implementation of org.apache.jmeter.samplers.SampleSender 712 | #mode=Standard 713 | #mode=Batch 714 | #mode=Statistical 715 | #Set to true to key statistical samples on threadName rather than threadGroup 716 | #key_on_threadname=false 717 | #mode=Stripped 718 | #mode=StrippedBatch 719 | #mode=org.example.load.MySampleSender 720 | # 721 | #num_sample_threshold=100 722 | # Value is in milliseconds 723 | #time_threshold=60000 724 | # 725 | # Asynchronous sender; uses a queue and background worker process to return the samples 726 | #mode=Asynch 727 | # default queue size 728 | #asynch.batch.queue.size=100 729 | # Same as Asynch but strips response data from SampleResult 730 | #mode=StrippedAsynch 731 | # 732 | # DiskStore: Serialises the samples to disk, rather than saving in memory 733 | #mode=DiskStore 734 | # Same as DiskStore but strips response data from SampleResult 735 | #mode=StrippedDiskStore 736 | # Note: the mode is currently resolved on the client; 737 | # other properties (e.g. time_threshold) are resolved on the server. 738 | 739 | #--------------------------------------------------------------------------- 740 | # JDBC Request configuration 741 | #--------------------------------------------------------------------------- 742 | 743 | # String used to indicate a null value 744 | #jdbcsampler.nullmarker=]NULL[ 745 | # 746 | # Max size of BLOBs and CLOBs to store in JDBC sampler. Result will be cut off 747 | #jdbcsampler.max_retain_result_size=65536 748 | 749 | # Database validation query 750 | # based in https://stackoverflow.com/questions/10684244/dbcp-validationquery-for-different-databases list 751 | jdbc.config.check.query=select 1 from INFORMATION_SCHEMA.SYSTEM_USERS|select 1 from dual|select 1 from sysibm.sysdummy1|select 1|select 1 from rdb$database 752 | jdbc.config.jdbc.driver.class=com.mysql.jdbc.Driver|org.postgresql.Driver|oracle.jdbc.OracleDriver|com.ingres.jdbc.IngresDriver|com.microsoft.sqlserver.jdbc.SQLServerDriver|com.microsoft.jdbc.sqlserver.SQLServerDriver|org.apache.derby.jdbc.ClientDriver|org.hsqldb.jdbc.JDBCDriver|com.ibm.db2.jcc.DB2Driver|org.apache.derby.jdbc.ClientDriver|org.h2.Driver|org.firebirdsql.jdbc.FBDrivery|org.mariadb.jdbc.Driver|org.sqlite.JDBC|net.sourceforge.jtds.jdbc.Driver 753 | 754 | #--------------------------------------------------------------------------- 755 | # OS Process Sampler configuration 756 | #--------------------------------------------------------------------------- 757 | # Polling to see if process has finished its work, used when a timeout is configured on sampler 758 | #os_sampler.poll_for_timeout=100 759 | 760 | #--------------------------------------------------------------------------- 761 | # TCP Sampler configuration 762 | #--------------------------------------------------------------------------- 763 | 764 | # The default handler class 765 | #tcp.handler=TCPClientImpl 766 | # 767 | # eolByte = byte value for end of line 768 | # set this to a value outside the range -128 to +127 to skip eol checking 769 | #tcp.eolByte=1000 770 | # 771 | # TCP Charset, used by org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl 772 | # default to Platform defaults charset as returned by Charset.defaultCharset().name() 773 | #tcp.charset= 774 | # 775 | # status.prefix and suffix = strings that enclose the status response code 776 | #tcp.status.prefix=Status= 777 | #tcp.status.suffix=. 778 | # 779 | # status.properties = property file to convert codes to messages 780 | #tcp.status.properties=mytestfiles/tcpstatus.properties 781 | 782 | # The length prefix used by LengthPrefixedBinaryTCPClientImpl implementation 783 | # defaults to 2 bytes. 784 | #tcp.binarylength.prefix.length=2 785 | 786 | #--------------------------------------------------------------------------- 787 | # Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode) 788 | #--------------------------------------------------------------------------- 789 | # 790 | # Comment the following property to disable the default non-GUI summariser 791 | # [or change the value to rename it] 792 | # (applies to non-GUI mode only) 793 | summariser.name=summary 794 | # 795 | # interval between summaries (in seconds) default 30 seconds 796 | #summariser.interval=30 797 | # 798 | # Write messages to log file 799 | #summariser.log=true 800 | # 801 | # Write messages to System.out 802 | #summariser.out=true 803 | 804 | # Ignore SampleResults generated by TransactionControllers 805 | # defaults to true 806 | #summariser.ignore_transaction_controller_sample_result=true 807 | 808 | 809 | #--------------------------------------------------------------------------- 810 | # Aggregate Report and Aggregate Graph - configuration 811 | #--------------------------------------------------------------------------- 812 | # 813 | # Percentiles to display in reports 814 | # Can be float value between 0 and 100 815 | # First percentile to display, defaults to 90% 816 | #aggregate_rpt_pct1=90 817 | # Second percentile to display, defaults to 95% 818 | #aggregate_rpt_pct2=95 819 | # Second percentile to display, defaults to 99% 820 | #aggregate_rpt_pct3=99 821 | 822 | #--------------------------------------------------------------------------- 823 | # BackendListener - configuration 824 | #--------------------------------------------------------------------------- 825 | # 826 | # Backend metrics window mode (fixed=fixed-size window, timed=time boxed) 827 | #backend_metrics_window_mode=fixed 828 | # Backend metrics sliding window size for Percentiles, Min, Max 829 | #backend_metrics_window=100 830 | 831 | # Backend metrics sliding window size for Percentiles, Min, Max 832 | # when backend_metrics_window_mode is timed 833 | # Setting this value too high can lead to OOM 834 | #backend_metrics_large_window=5000 835 | 836 | ######################## 837 | # Graphite Backend 838 | ######################## 839 | # Send interval in second 840 | # Defaults to 1 second 841 | #backend_graphite.send_interval=1 842 | 843 | ######################## 844 | # Influx Backend 845 | ######################## 846 | 847 | # Send interval in second 848 | # Defaults to 5 seconds 849 | #backend_influxdb.send_interval=5 850 | #Influxdb timeouts 851 | #backend_influxdb.connection_timeout=1000 852 | #backend_influxdb.socket_timeout=3000 853 | #backend_influxdb.connection_request_timeout=100 854 | 855 | #--------------------------------------------------------------------------- 856 | # BeanShell configuration 857 | #--------------------------------------------------------------------------- 858 | 859 | # BeanShell Server properties 860 | # 861 | # Define the port number as non-zero to start the http server on that port 862 | #beanshell.server.port=9000 863 | # The telnet server will be started on the next port 864 | 865 | # 866 | # Define the server initialisation file 867 | beanshell.server.file=../extras/startup.bsh 868 | 869 | # 870 | # Define a file to be processed at startup 871 | # This is processed using its own interpreter. 872 | #beanshell.init.file= 873 | 874 | # 875 | # Define the intialisation files for BeanShell Sampler, Function and other BeanShell elements 876 | # N.B. Beanshell test elements do not share interpreters. 877 | # Each element in each thread has its own interpreter. 878 | # This is retained between samples. 879 | #beanshell.sampler.init=BeanShellSampler.bshrc 880 | #beanshell.function.init=BeanShellFunction.bshrc 881 | #beanshell.assertion.init=BeanShellAssertion.bshrc 882 | #beanshell.listener.init=etc 883 | #beanshell.postprocessor.init=etc 884 | #beanshell.preprocessor.init=etc 885 | #beanshell.timer.init=etc 886 | 887 | # The file BeanShellListeners.bshrc contains sample definitions 888 | # of Test and Thread Listeners. 889 | 890 | #--------------------------------------------------------------------------- 891 | # Groovy function 892 | #--------------------------------------------------------------------------- 893 | 894 | #Path to Groovy file containing utility functions to make available to __groovy function 895 | #groovy.utilities= 896 | 897 | # Example 898 | #groovy.utilities=bin/utility.groovy 899 | 900 | #--------------------------------------------------------------------------- 901 | # MailerModel configuration 902 | #--------------------------------------------------------------------------- 903 | 904 | # Number of successful samples before a message is sent 905 | #mailer.successlimit=2 906 | # 907 | # Number of failed samples before a message is sent 908 | #mailer.failurelimit=2 909 | 910 | #--------------------------------------------------------------------------- 911 | # CSVRead configuration 912 | #--------------------------------------------------------------------------- 913 | 914 | # CSVRead delimiter setting (default ",") 915 | # Make sure that there are no trailing spaces or tabs after the delimiter 916 | # characters, or these will be included in the list of valid delimiters 917 | #csvread.delimiter=, 918 | #csvread.delimiter=; 919 | #csvread.delimiter=! 920 | #csvread.delimiter=~ 921 | # The following line has a tab after the = 922 | #csvread.delimiter= 923 | 924 | #--------------------------------------------------------------------------- 925 | # __time() function configuration 926 | # 927 | # The properties below can be used to redefine the default formats 928 | #--------------------------------------------------------------------------- 929 | #time.YMD=yyyyMMdd 930 | #time.HMS=HHmmss 931 | #time.YMDHMS=yyyyMMdd-HHmmss 932 | #time.USER1= 933 | #time.USER2= 934 | 935 | #--------------------------------------------------------------------------- 936 | # CSV DataSet configuration 937 | #--------------------------------------------------------------------------- 938 | 939 | # String to return at EOF (if recycle not used) 940 | #csvdataset.eofstring= 941 | #list in https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html 942 | csvdataset.file.encoding_list=UTF-8|UTF-16|ISO-8859-15|US-ASCII 943 | 944 | 945 | #--------------------------------------------------------------------------- 946 | # LDAP Sampler configuration 947 | #--------------------------------------------------------------------------- 948 | # Maximum number of search results returned by a search that will be sorted 949 | # to guarantee a stable ordering (if more results then this limit are returned 950 | # then no sorting is done). Set to 0 to turn off all sorting, in which case 951 | # "Equals" response assertions will be very likely to fail against search results. 952 | # 953 | #ldapsampler.max_sorted_results=1000 954 | 955 | # Number of characters to log for each of three sections (starting matching section, diff section, 956 | # ending matching section where not all sections will appear for all diffs) diff display when an Equals 957 | # assertion fails. So a value of 100 means a maximum of 300 characters of diff text will be displayed 958 | # (+ a number of extra characters like "..." and "[[["/"]]]" which are used to decorate it). 959 | #assertion.equals_section_diff_len=100 960 | # test written out to log to signify start/end of diff delta 961 | #assertion.equals_diff_delta_start=[[[ 962 | #assertion.equals_diff_delta_end=]]] 963 | 964 | #--------------------------------------------------------------------------- 965 | # Miscellaneous configuration 966 | #--------------------------------------------------------------------------- 967 | # Used to control what happens when you start a test and 968 | # have listeners that could overwrite existing result files 969 | # Possible values: 970 | # ASK : Ask user 971 | # APPEND : Append results to existing file 972 | # DELETE : Delete existing file and start a new file 973 | #resultcollector.action_if_file_exists=ASK 974 | 975 | # If defined, then start the mirror server on the port 976 | #mirror.server.port=8081 977 | 978 | # ORO PatternCacheLRU size 979 | #oro.patterncache.size=1000 980 | 981 | #TestBeanGui 982 | # 983 | #propertyEditorSearchPath=null 984 | 985 | # Turn expert mode on/off: expert mode will show expert-mode beans and properties 986 | #jmeter.expertMode=true 987 | 988 | # Max size of bytes stored in memory per SampleResult 989 | # Ensure you don't exceed max capacity of a Java Array and remember 990 | # that the higher it is, the higher JMeter will consume heap 991 | # Defaults to 0, which means no truncation 992 | #httpsampler.max_bytes_to_store_per_request=0 993 | 994 | # Max size of buffer in bytes used when reading responses 995 | # Defaults to 64k 996 | #httpsampler.max_buffer_size=66560 997 | 998 | # Maximum redirects to follow in a single sequence (default 20) 999 | #httpsampler.max_redirects=20 1000 | # Maximum frame/iframe nesting depth (default 5) 1001 | #httpsampler.max_frame_depth=5 1002 | 1003 | # Revert to BUG 51939 behaviour (no separate container for embedded resources) by setting the following false: 1004 | #httpsampler.separate.container=true 1005 | 1006 | # If embedded resources download fails due to missing resources or other reasons, if this property is true 1007 | # Parent sample will not be marked as failed 1008 | #httpsampler.ignore_failed_embedded_resources=false 1009 | 1010 | #keep alive time for the parallel download threads (in seconds) 1011 | #httpsampler.parallel_download_thread_keepalive_inseconds=60 1012 | 1013 | # Don't keep the embedded resources response data : just keep the size and the md5 1014 | # default to false 1015 | #httpsampler.embedded_resources_use_md5=false 1016 | 1017 | # List of extra HTTP methods that should be available in select box 1018 | #httpsampler.user_defined_methods=VERSION-CONTROL,REPORT,CHECKOUT,CHECKIN,UNCHECKOUT,MKWORKSPACE,UPDATE,LABEL,MERGE,BASELINE-CONTROL,MKACTIVITY 1019 | 1020 | # The encoding to be used if none is provided (default ISO-8859-1) 1021 | #sampleresult.default.encoding=ISO-8859-1 1022 | 1023 | # CookieManager behaviour - should cookies with null/empty values be deleted? 1024 | # Default is true. Use false to revert to original behaviour 1025 | #CookieManager.delete_null_cookies=true 1026 | 1027 | # CookieManager behaviour - should variable cookies be allowed? 1028 | # Default is true. Use false to revert to original behaviour 1029 | #CookieManager.allow_variable_cookies=true 1030 | 1031 | # CookieManager behaviour - should Cookies be stored as variables? 1032 | # Default is false 1033 | #CookieManager.save.cookies=false 1034 | 1035 | # CookieManager behaviour - prefix to add to cookie name before storing it as a variable 1036 | # Default is COOKIE_; to remove the prefix, define it as one or more spaces 1037 | #CookieManager.name.prefix= 1038 | 1039 | # CookieManager behaviour - check received cookies are valid before storing them? 1040 | # Default is true. Use false to revert to previous behaviour 1041 | #CookieManager.check.cookies=true 1042 | 1043 | # Netscape HTTP Cookie file 1044 | cookies=cookies 1045 | 1046 | # Ability to switch to Nashorn as default Javascript Engine used by IfController and __javaScript function 1047 | # JMeter works as following: 1048 | # - JDK >= 8 and javascript.use_rhino=false or not set : Nashorn 1049 | # - JDK >= 8 and javascript.use_rhino=true: Rhino 1050 | # If you want to use Rhino on JDK8, set this property to true 1051 | #javascript.use_rhino=false 1052 | 1053 | # Number of milliseconds to wait for a thread to stop 1054 | #jmeterengine.threadstop.wait=5000 1055 | 1056 | #Whether to invoke System.exit(0) in server exit code after stopping RMI 1057 | #jmeterengine.remote.system.exit=false 1058 | 1059 | # Whether to call System.exit(1) on failure to stop threads in non-GUI mode. 1060 | # This only takes effect if the test was explicitly requested to stop. 1061 | # If this is disabled, it may be necessary to kill the JVM externally 1062 | #jmeterengine.stopfail.system.exit=true 1063 | 1064 | # Whether to force call System.exit(0) at end of test in non-GUI mode, even if 1065 | # there were no failures and the test was not explicitly asked to stop. 1066 | # Without this, the JVM may never exit if there are other threads spawned by 1067 | # the test which never exit. 1068 | #jmeterengine.force.system.exit=false 1069 | 1070 | # How long to pause (in ms) in the daemon thread before reporting that the JVM has failed to exit. 1071 | # If the value is <= 0, the JMeter does not start the daemon thread 1072 | #jmeter.exit.check.pause=2000 1073 | 1074 | # If running non-GUI, then JMeter listens on the following port for a shutdown message. 1075 | # To disable, set the port to 1000 or less. 1076 | #jmeterengine.nongui.port=4445 1077 | # 1078 | # If the initial port is busy, keep trying until this port is reached 1079 | # (to disable searching, set the value less than or equal to the .port property) 1080 | #jmeterengine.nongui.maxport=4455 1081 | 1082 | # How often to check for shutdown during ramp-up (milliseconds) 1083 | #jmeterthread.rampup.granularity=1000 1084 | 1085 | #Should JMeter expand the tree when loading a test plan? 1086 | # default value is false since JMeter 2.7 1087 | #onload.expandtree=false 1088 | 1089 | #JSyntaxTextArea configuration 1090 | #jsyntaxtextarea.wrapstyleword=true 1091 | #jsyntaxtextarea.linewrap=true 1092 | #jsyntaxtextarea.codefolding=true 1093 | # Set 0 to disable undo feature in JSyntaxTextArea 1094 | #jsyntaxtextarea.maxundos=50 1095 | # Change the font on the (JSyntax) Text Areas. (Useful for HiDPI screens) 1096 | #jsyntaxtextarea.font.family=Hack 1097 | #jsyntaxtextarea.font.size=14 1098 | 1099 | # Set this to false to disable the use of JSyntaxTextArea for the Console Logger panel 1100 | #loggerpanel.usejsyntaxtext=true 1101 | 1102 | # Maximum size of HTML page that can be displayed; default=10 mbytes 1103 | # Set to 0 to disable the size check and display the whole response 1104 | #view.results.tree.max_size=10485760 1105 | 1106 | # Order of Renderers in View Results Tree 1107 | # Note full class names should be used for non jmeter core renderers 1108 | # For JMeter core renderers, class names start with . and are automatically 1109 | # prefixed with org.apache.jmeter.visualizers 1110 | view.results.tree.renderers_order=.RenderAsText,.RenderAsRegexp,.RenderAsBoundaryExtractor,.RenderAsCssJQuery,.RenderAsXPath,org.apache.jmeter.extractor.json.render.RenderAsJsonRenderer,.RenderAsHTML,.RenderAsHTMLFormatted,.RenderAsHTMLWithEmbedded,.RenderAsDocument,.RenderAsJSON,.RenderAsXML 1111 | 1112 | # Maximum number of results in the results tree 1113 | # Set to 0 to store all results (might consume a lot of memory) 1114 | #view.results.tree.max_results=500 1115 | 1116 | # Maximum size of Document that can be parsed by Tika engine; defaut=10 * 1024 * 1024 (10MB) 1117 | # Set to 0 to disable the size check 1118 | #document.max_size=0 1119 | 1120 | #JMS options 1121 | # Enable the following property to stop JMS Point-to-Point Sampler from using 1122 | # the properties java.naming.security.[principal|credentials] when creating the queue connection 1123 | #JMSSampler.useSecurity.properties=false 1124 | 1125 | # Set the following value to true in order to skip the delete confirmation dialogue 1126 | #confirm.delete.skip=false 1127 | 1128 | # Used by JSR223 elements 1129 | # Size of compiled scripts cache 1130 | #jsr223.compiled_scripts_cache_size=100 1131 | 1132 | #--------------------------------------------------------------------------- 1133 | # Classpath configuration 1134 | #--------------------------------------------------------------------------- 1135 | 1136 | # List of directories (separated by ;) to search for additional JMeter plugin classes, 1137 | # for example new GUI elements and samplers. 1138 | # Any jar file in such a directory will be automatically included, 1139 | # jar files in sub directories are ignored. 1140 | # The given value is in addition to any jars found in the lib/ext directory. 1141 | # Do not use this for utility or plugin dependency jars. 1142 | #search_paths=/app1/lib;/app2/lib 1143 | 1144 | # List of directories that JMeter will search for utility and plugin dependency classes. 1145 | # Use your platform path separator to separate multiple paths. 1146 | # Any jar file in such a directory will be automatically included, 1147 | # jar files in sub directories are ignored. 1148 | # The given value is in addition to any jars found in the lib directory. 1149 | # All entries will be added to the class path of the system class loader 1150 | # and also to the path of the JMeter internal loader. 1151 | # Paths with spaces may cause problems for the JVM 1152 | #user.classpath=../classes;../lib 1153 | 1154 | # List of directories (separated by ;) that JMeter will search for utility 1155 | # and plugin dependency classes. 1156 | # Any jar file in such a directory will be automatically included, 1157 | # jar files in sub directories are ignored. 1158 | # The given value is in addition to any jars found in the lib directory 1159 | # or given by the user.classpath property. 1160 | # All entries will be added to the path of the JMeter internal loader only. 1161 | # For plugin dependencies this property should be used instead of user.classpath. 1162 | #plugin_dependency_paths=../dependencies/lib;../app1/;../app2/ 1163 | 1164 | # Classpath finder 1165 | # ================ 1166 | # The classpath finder currently needs to load every single JMeter class to find 1167 | # the classes it needs. 1168 | # For non-GUI mode, it's only necessary to scan for Function classes, but all classes 1169 | # are still loaded. 1170 | # All current Function classes include ".function." in their name, 1171 | # and none include ".gui." in the name, so the number of unwanted classes loaded can be 1172 | # reduced by checking for these. However, if a valid function class name does not match 1173 | # these restrictions, it will not be loaded. If problems are encountered, then comment 1174 | # or change the following properties: 1175 | classfinder.functions.contain=.functions. 1176 | classfinder.functions.notContain=.gui. 1177 | 1178 | 1179 | #--------------------------------------------------------------------------- 1180 | # Additional property files to load 1181 | #--------------------------------------------------------------------------- 1182 | 1183 | # Should JMeter automatically load additional JMeter properties? 1184 | # File name to look for (comment to disable) 1185 | user.properties=user.properties 1186 | 1187 | # Should JMeter automatically load additional system properties? 1188 | # File name to look for (comment to disable) 1189 | system.properties=system.properties 1190 | 1191 | # Comma separated list of files that contain reference to templates and their description 1192 | # Path must be relative to JMeter root folder 1193 | #template.files=/bin/templates/templates.xml 1194 | 1195 | 1196 | #--------------------------------------------------------------------------- 1197 | # Thread Group Validation feature 1198 | #--------------------------------------------------------------------------- 1199 | 1200 | # Validation is the name of the feature used to rapidly validate a Thread Group runs fine 1201 | # Default implementation is org.apache.jmeter.gui.action.validation.TreeClonerForValidation 1202 | # It runs validation without timers, with 1 thread, 1 iteration and Startup Delay set to 0 1203 | # You can implement your own policy that must extend org.apache.jmeter.engine.TreeCloner 1204 | # JMeter will instantiate it and use it to create the Tree used to run validation on Thread Group 1205 | #testplan_validation.tree_cloner_class=org.apache.jmeter.validation.ComponentTreeClonerForValidation 1206 | 1207 | # Number of threads to use to validate a Thread Group 1208 | #testplan_validation.nb_threads_per_thread_group=1 1209 | 1210 | # Ignore BackendListener when validating the thread group of plan 1211 | #testplan_validation.ignore_backends=true 1212 | 1213 | # Ignore timers when validating the thread group of plan 1214 | #testplan_validation.ignore_timers=true 1215 | 1216 | # Number of iterations to use to validate a Thread Group 1217 | #testplan_validation.number_iterations=1 1218 | 1219 | # Force throuput controllers that work in percentage mode to be a 100% 1220 | # Disabled by default 1221 | #testplan_validation.tpc_force_100_pct=false 1222 | 1223 | #--------------------------------------------------------------------------- 1224 | # Think Time configuration 1225 | #--------------------------------------------------------------------------- 1226 | 1227 | # 1228 | # Apply a factor on computed pauses by the following Timers: 1229 | # - Gaussian Random Timer 1230 | # - Uniform Random Timer 1231 | # - Poisson Random Timer 1232 | # 1233 | #timer.factor=1.0f 1234 | 1235 | # Default implementation that create the Timer structure to add to Test Plan 1236 | # Implementation of interface org.apache.jmeter.gui.action.thinktime.ThinkTimeCreator 1237 | #think_time_creator.impl=org.apache.jmeter.thinktime.DefaultThinkTimeCreator 1238 | 1239 | # Default Timer GUI class added to Test Plan by DefaultThinkTimeCreator 1240 | #think_time_creator.default_timer_implementation=org.apache.jmeter.timers.gui.UniformRandomTimerGui 1241 | 1242 | # Default constant pause of Timer 1243 | #think_time_creator.default_constant_pause=1000 1244 | 1245 | # Default range pause of Timer 1246 | #think_time_creator.default_range=100 1247 | 1248 | 1249 | # Change this parameter if you want to override the APDEX satisfaction threshold. 1250 | jmeter.reportgenerator.apdex_satisfied_threshold=500 1251 | 1252 | # Change this parameter if you want to override the APDEX tolerance threshold. 1253 | jmeter.reportgenerator.apdex_tolerated_threshold=1500 1254 | 1255 | #--------------------------------------------------------------------------- 1256 | # Naming Policy configuration 1257 | #--------------------------------------------------------------------------- 1258 | 1259 | # Prefix used when naming elements 1260 | #naming_policy.prefix= 1261 | # Suffix used when naming elements 1262 | #naming_policy.suffix= 1263 | 1264 | # Implementation of interface org.apache.jmeter.gui.action.TreeNodeNamingPolicy 1265 | #naming_policy.impl=org.apache.jmeter.gui.action.impl.DefaultTreeNodeNamingPolicy 1266 | 1267 | #--------------------------------------------------------------------------- 1268 | # Help Documentation 1269 | #--------------------------------------------------------------------------- 1270 | 1271 | # Switch that allows using Local documentation opened in JMeter GUI 1272 | # By default we use Online documentation opened in Browser 1273 | #help.local=false -------------------------------------------------------------------------------- /jmeter/bin/saveservice.properties: -------------------------------------------------------------------------------- 1 | #--------------------------------------------------------- 2 | # SAVESERVICE PROPERTIES - JMETER INTERNAL USE ONLY 3 | #--------------------------------------------------------- 4 | 5 | ## Licensed to the Apache Software Foundation (ASF) under one or more 6 | ## contributor license agreements. See the NOTICE file distributed with 7 | ## this work for additional information regarding copyright ownership. 8 | ## The ASF licenses this file to You under the Apache License, Version 2.0 9 | ## (the "License"); you may not use this file except in compliance with 10 | ## the License. You may obtain a copy of the License at 11 | ## 12 | ## http://www.apache.org/licenses/LICENSE-2.0 13 | ## 14 | ## Unless required by applicable law or agreed to in writing, software 15 | ## distributed under the License is distributed on an "AS IS" BASIS, 16 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | ## See the License for the specific language governing permissions and 18 | ## limitations under the License. 19 | 20 | # This file is used to define how XStream (de-)serializes classnames 21 | # in JMX test plan files. 22 | 23 | # FOR JMETER INTERNAL USE ONLY 24 | 25 | #--------------------------------------------------------- 26 | 27 | # N.B. To ensure backward compatibility, please do NOT change or delete any entries 28 | 29 | # New entries can be added as necessary. 30 | # 31 | # Note that keys starting with an underscore are special, 32 | # and are not used as aliases. 33 | # 34 | # Please keep the entries in alphabetical order within the sections 35 | # to reduce the likelihood of duplicates 36 | # 37 | # version number of this file is now computed by a sha1 sum, so no need for 38 | # an explicit _file_version property anymore. 39 | # 40 | # For this sha1 sum we ignore every newline character. It can be computed 41 | # by the following command: 42 | # 43 | # cat bin/saveservice.properties | perl -ne 'chomp; print' | sha1sum 44 | # 45 | # Be aware, that every change in this file will change the sha1 sum! 46 | # 47 | # Conversion version (for JMX output files) 48 | # Must be updated if the file has been changed since the previous release 49 | # Format is: 50 | # Save service version=JMeter version at which change occurred 51 | # 1.7 = 2.1.1 52 | # 1.8 = 2.1.2 53 | # (Some version updates were missed here...) 54 | # 2.0 = 2.3.1 55 | # 2.1 = 2.3.2 56 | # (Some version updates were missed here...) 57 | # 2.2 = 2.6 58 | # 2.3 = 2.7 59 | # 2.4 = 2.9 60 | # 2.5 = 2.10 61 | # 2.6 = 2.11 62 | # 2.7 = 2.12 63 | # 2.8 = 2.13 64 | # 2.9 = 2.14 65 | # 3.1 = 3.1 66 | # 3.2 = 3.2 67 | # 3.4 = 3.4 68 | _version=4.0 69 | # 70 | # 71 | # Character set encoding used to read and write JMeter XML files and CSV results 72 | # 73 | _file_encoding=UTF-8 74 | # 75 | #--------------------------------------------------------- 76 | # 77 | # The following properties are used to create aliases 78 | # [Must all start with capital letter] 79 | # 80 | AccessLogSampler=org.apache.jmeter.protocol.http.sampler.AccessLogSampler 81 | AjpSampler=org.apache.jmeter.protocol.http.sampler.AjpSampler 82 | AjpSamplerGui=org.apache.jmeter.protocol.http.control.gui.AjpSamplerGui 83 | AnchorModifier=org.apache.jmeter.protocol.http.modifier.AnchorModifier 84 | AnchorModifierGui=org.apache.jmeter.protocol.http.modifier.gui.AnchorModifierGui 85 | Argument=org.apache.jmeter.config.Argument 86 | Arguments=org.apache.jmeter.config.Arguments 87 | ArgumentsPanel=org.apache.jmeter.config.gui.ArgumentsPanel 88 | AssertionGui=org.apache.jmeter.assertions.gui.AssertionGui 89 | AssertionVisualizer=org.apache.jmeter.visualizers.AssertionVisualizer 90 | AuthManager=org.apache.jmeter.protocol.http.control.AuthManager 91 | Authorization=org.apache.jmeter.protocol.http.control.Authorization 92 | AuthPanel=org.apache.jmeter.protocol.http.gui.AuthPanel 93 | BackendListener=org.apache.jmeter.visualizers.backend.BackendListener 94 | BackendListenerGui=org.apache.jmeter.visualizers.backend.BackendListenerGui 95 | BeanShellAssertion=org.apache.jmeter.assertions.BeanShellAssertion 96 | BeanShellAssertionGui=org.apache.jmeter.assertions.gui.BeanShellAssertionGui 97 | BeanShellListener=org.apache.jmeter.visualizers.BeanShellListener 98 | BeanShellPostProcessor=org.apache.jmeter.extractor.BeanShellPostProcessor 99 | BeanShellPreProcessor=org.apache.jmeter.modifiers.BeanShellPreProcessor 100 | BeanShellSampler=org.apache.jmeter.protocol.java.sampler.BeanShellSampler 101 | BeanShellSamplerGui=org.apache.jmeter.protocol.java.control.gui.BeanShellSamplerGui 102 | BeanShellTimer=org.apache.jmeter.timers.BeanShellTimer 103 | BoundaryExtractor=org.apache.jmeter.extractor.BoundaryExtractor 104 | BoundaryExtractorGui=org.apache.jmeter.extractor.gui.BoundaryExtractorGui 105 | BSFAssertion=org.apache.jmeter.assertions.BSFAssertion 106 | BSFListener=org.apache.jmeter.visualizers.BSFListener 107 | BSFPreProcessor=org.apache.jmeter.modifiers.BSFPreProcessor 108 | BSFPostProcessor=org.apache.jmeter.extractor.BSFPostProcessor 109 | BSFSampler=org.apache.jmeter.protocol.java.sampler.BSFSampler 110 | BSFSamplerGui=org.apache.jmeter.protocol.java.control.gui.BSFSamplerGui 111 | BSFTimer=org.apache.jmeter.timers.BSFTimer 112 | CacheManager=org.apache.jmeter.protocol.http.control.CacheManager 113 | CacheManagerGui=org.apache.jmeter.protocol.http.gui.CacheManagerGui 114 | CompareAssertion=org.apache.jmeter.assertions.CompareAssertion 115 | ComparisonVisualizer=org.apache.jmeter.visualizers.ComparisonVisualizer 116 | ConfigTestElement=org.apache.jmeter.config.ConfigTestElement 117 | ConstantThroughputTimer=org.apache.jmeter.timers.ConstantThroughputTimer 118 | ConstantTimer=org.apache.jmeter.timers.ConstantTimer 119 | ConstantTimerGui=org.apache.jmeter.timers.gui.ConstantTimerGui 120 | Cookie=org.apache.jmeter.protocol.http.control.Cookie 121 | CookieManager=org.apache.jmeter.protocol.http.control.CookieManager 122 | CookiePanel=org.apache.jmeter.protocol.http.gui.CookiePanel 123 | CounterConfig=org.apache.jmeter.modifiers.CounterConfig 124 | CriticalSectionController=org.apache.jmeter.control.CriticalSectionController 125 | CriticalSectionControllerGui=org.apache.jmeter.control.gui.CriticalSectionControllerGui 126 | CounterConfigGui=org.apache.jmeter.modifiers.gui.CounterConfigGui 127 | CSVDataSet=org.apache.jmeter.config.CSVDataSet 128 | DebugPostProcessor=org.apache.jmeter.extractor.DebugPostProcessor 129 | DebugSampler=org.apache.jmeter.sampler.DebugSampler 130 | # removed in 3.1, class was deleted in r1763837 131 | DistributionGraphVisualizer=org.apache.jmeter.visualizers.DistributionGraphVisualizer 132 | DNSCacheManager=org.apache.jmeter.protocol.http.control.DNSCacheManager 133 | DNSCachePanel=org.apache.jmeter.protocol.http.gui.DNSCachePanel 134 | DurationAssertion=org.apache.jmeter.assertions.DurationAssertion 135 | DurationAssertionGui=org.apache.jmeter.assertions.gui.DurationAssertionGui 136 | PreciseThroughputTimer=org.apache.jmeter.timers.poissonarrivals.PreciseThroughputTimer 137 | # Should really have been defined as floatProp to agree with other properties 138 | # No point changing this now 139 | FloatProperty=org.apache.jmeter.testelement.property.FloatProperty 140 | ForeachController=org.apache.jmeter.control.ForeachController 141 | ForeachControlPanel=org.apache.jmeter.control.gui.ForeachControlPanel 142 | FtpConfigGui=org.apache.jmeter.protocol.ftp.config.gui.FtpConfigGui 143 | FTPSampler=org.apache.jmeter.protocol.ftp.sampler.FTPSampler 144 | FtpTestSamplerGui=org.apache.jmeter.protocol.ftp.control.gui.FtpTestSamplerGui 145 | GaussianRandomTimer=org.apache.jmeter.timers.GaussianRandomTimer 146 | GaussianRandomTimerGui=org.apache.jmeter.timers.gui.GaussianRandomTimerGui 147 | GenericController=org.apache.jmeter.control.GenericController 148 | GraphAccumVisualizer=org.apache.jmeter.visualizers.GraphAccumVisualizer 149 | GraphVisualizer=org.apache.jmeter.visualizers.GraphVisualizer 150 | Header=org.apache.jmeter.protocol.http.control.Header 151 | HeaderManager=org.apache.jmeter.protocol.http.control.HeaderManager 152 | HeaderPanel=org.apache.jmeter.protocol.http.gui.HeaderPanel 153 | HTMLAssertion=org.apache.jmeter.assertions.HTMLAssertion 154 | HTMLAssertionGui=org.apache.jmeter.assertions.gui.HTMLAssertionGui 155 | HTTPArgument=org.apache.jmeter.protocol.http.util.HTTPArgument 156 | HTTPArgumentsPanel=org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel 157 | HTTPFileArg=org.apache.jmeter.protocol.http.util.HTTPFileArg 158 | HTTPFileArgs=org.apache.jmeter.protocol.http.util.HTTPFileArgs 159 | HttpDefaultsGui=org.apache.jmeter.protocol.http.config.gui.HttpDefaultsGui 160 | HtmlExtractor=org.apache.jmeter.extractor.HtmlExtractor 161 | HtmlExtractorGui=org.apache.jmeter.extractor.gui.HtmlExtractorGui 162 | # removed in r1039684, probably not released. Not present in r322831 or since. 163 | #HttpGenericSampler=org.apache.jmeter.protocol.http.sampler.HttpGenericSampler 164 | # removed in r1039684, probably not released. Not present in r322831 or since. 165 | #HttpGenericSamplerGui=org.apache.jmeter.protocol.http.control.gui.HttpGenericSamplerGui 166 | HttpMirrorControl=org.apache.jmeter.protocol.http.control.HttpMirrorControl 167 | HttpMirrorControlGui=org.apache.jmeter.protocol.http.control.gui.HttpMirrorControlGui 168 | # r397955 - removed test class. Keep as commented entry for info only. 169 | #HTTPNullSampler=org.apache.jmeter.protocol.http.sampler.HTTPNullSampler 170 | # Merge previous 2 HTTP samplers into one 171 | HTTPSampler_=org.apache.jmeter.protocol.http.sampler.HTTPSampler 172 | HTTPSampler2_=org.apache.jmeter.protocol.http.sampler.HTTPSampler2 173 | HTTPSamplerProxy,HTTPSampler,HTTPSampler2=org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy 174 | # Merge GUIs 175 | HttpTestSampleGui,HttpTestSampleGui2=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui 176 | #HttpTestSampleGui2=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui2 177 | IfController=org.apache.jmeter.control.IfController 178 | IfControllerPanel=org.apache.jmeter.control.gui.IfControllerPanel 179 | IncludeController=org.apache.jmeter.control.IncludeController 180 | IncludeControllerGui=org.apache.jmeter.control.gui.IncludeControllerGui 181 | InterleaveControl=org.apache.jmeter.control.InterleaveControl 182 | InterleaveControlGui=org.apache.jmeter.control.gui.InterleaveControlGui 183 | JavaConfig=org.apache.jmeter.protocol.java.config.JavaConfig 184 | JavaConfigGui=org.apache.jmeter.protocol.java.config.gui.JavaConfigGui 185 | JavaSampler=org.apache.jmeter.protocol.java.sampler.JavaSampler 186 | JavaTest=org.apache.jmeter.protocol.java.test.JavaTest 187 | JavaTestSamplerGui=org.apache.jmeter.protocol.java.control.gui.JavaTestSamplerGui 188 | JDBCDataSource=org.apache.jmeter.protocol.jdbc.config.DataSourceElement 189 | JDBCPostProcessor=org.apache.jmeter.protocol.jdbc.processor.JDBCPostProcessor 190 | JDBCPreProcessor=org.apache.jmeter.protocol.jdbc.processor.JDBCPreProcessor 191 | JDBCSampler=org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler 192 | # Renamed to JMSSamplerGui; keep original entry for backwards compatibility 193 | JMSConfigGui=org.apache.jmeter.protocol.jms.control.gui.JMSConfigGui 194 | JMSProperties=org.apache.jmeter.protocol.jms.sampler.JMSProperties 195 | JMSProperty=org.apache.jmeter.protocol.jms.sampler.JMSProperty 196 | JMSPublisherGui=org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui 197 | JMSSampler=org.apache.jmeter.protocol.jms.sampler.JMSSampler 198 | JMSSamplerGui=org.apache.jmeter.protocol.jms.control.gui.JMSSamplerGui 199 | JMSSubscriberGui=org.apache.jmeter.protocol.jms.control.gui.JMSSubscriberGui 200 | JSONPathAssertion=org.apache.jmeter.assertions.JSONPathAssertion 201 | JSONPathAssertionGui=org.apache.jmeter.assertions.gui.JSONPathAssertionGui 202 | JSONPostProcessor=org.apache.jmeter.extractor.json.jsonpath.JSONPostProcessor 203 | JSONPostProcessorGui=org.apache.jmeter.extractor.json.jsonpath.gui.JSONPostProcessorGui 204 | # Removed in r545311 as Jndi no longer present; keep for compat. 205 | JndiDefaultsGui=org.apache.jmeter.protocol.jms.control.gui.JndiDefaultsGui 206 | JSR223Assertion=org.apache.jmeter.assertions.JSR223Assertion 207 | JSR223Listener=org.apache.jmeter.visualizers.JSR223Listener 208 | JSR223PostProcessor=org.apache.jmeter.extractor.JSR223PostProcessor 209 | JSR223PreProcessor=org.apache.jmeter.modifiers.JSR223PreProcessor 210 | JSR223Sampler=org.apache.jmeter.protocol.java.sampler.JSR223Sampler 211 | JSR223Timer=org.apache.jmeter.timers.JSR223Timer 212 | JUnitSampler=org.apache.jmeter.protocol.java.sampler.JUnitSampler 213 | JUnitTestSamplerGui=org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui 214 | KeystoreConfig=org.apache.jmeter.config.KeystoreConfig 215 | LDAPArgument=org.apache.jmeter.protocol.ldap.config.gui.LDAPArgument 216 | LDAPArguments=org.apache.jmeter.protocol.ldap.config.gui.LDAPArguments 217 | LDAPArgumentsPanel=org.apache.jmeter.protocol.ldap.config.gui.LDAPArgumentsPanel 218 | LdapConfigGui=org.apache.jmeter.protocol.ldap.config.gui.LdapConfigGui 219 | LdapExtConfigGui=org.apache.jmeter.protocol.ldap.config.gui.LdapExtConfigGui 220 | LDAPExtSampler=org.apache.jmeter.protocol.ldap.sampler.LDAPExtSampler 221 | LdapExtTestSamplerGui=org.apache.jmeter.protocol.ldap.control.gui.LdapExtTestSamplerGui 222 | LDAPSampler=org.apache.jmeter.protocol.ldap.sampler.LDAPSampler 223 | LdapTestSamplerGui=org.apache.jmeter.protocol.ldap.control.gui.LdapTestSamplerGui 224 | LogicControllerGui=org.apache.jmeter.control.gui.LogicControllerGui 225 | LoginConfig=org.apache.jmeter.config.LoginConfig 226 | LoginConfigGui=org.apache.jmeter.config.gui.LoginConfigGui 227 | LoopController=org.apache.jmeter.control.LoopController 228 | LoopControlPanel=org.apache.jmeter.control.gui.LoopControlPanel 229 | MailerModel=org.apache.jmeter.reporters.MailerModel 230 | MailerResultCollector=org.apache.jmeter.reporters.MailerResultCollector 231 | MailerVisualizer=org.apache.jmeter.visualizers.MailerVisualizer 232 | MailReaderSampler=org.apache.jmeter.protocol.mail.sampler.MailReaderSampler 233 | MailReaderSamplerGui=org.apache.jmeter.protocol.mail.sampler.gui.MailReaderSamplerGui 234 | MD5HexAssertion=org.apache.jmeter.assertions.MD5HexAssertion 235 | MD5HexAssertionGUI=org.apache.jmeter.assertions.gui.MD5HexAssertionGUI 236 | ModuleController=org.apache.jmeter.control.ModuleController 237 | ModuleControllerGui=org.apache.jmeter.control.gui.ModuleControllerGui 238 | MongoScriptSampler=org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler 239 | MongoSourceElement=org.apache.jmeter.protocol.mongodb.config.MongoSourceElement 240 | 241 | # removed in 3.2, class was deleted in r 242 | MonitorHealthVisualizer=org.apache.jmeter.visualizers.MonitorHealthVisualizer 243 | 244 | NamePanel=org.apache.jmeter.gui.NamePanel 245 | ObsoleteGui=org.apache.jmeter.config.gui.ObsoleteGui 246 | OnceOnlyController=org.apache.jmeter.control.OnceOnlyController 247 | OnceOnlyControllerGui=org.apache.jmeter.control.gui.OnceOnlyControllerGui 248 | # removed in 3.0, class was deleted in r1722962 249 | ParamMask=org.apache.jmeter.protocol.http.modifier.ParamMask 250 | # removed in 3.0, class was deleted in r1722757 251 | ParamModifier=org.apache.jmeter.protocol.http.modifier.ParamModifier 252 | # removed in 3.0, class was deleted in r1722757 253 | ParamModifierGui=org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui 254 | PoissonRandomTimer=org.apache.jmeter.timers.PoissonRandomTimer 255 | PoissonRandomTimerGui=org.apache.jmeter.timers.gui.PoissonRandomTimerGui 256 | PropertyControlGui=org.apache.jmeter.visualizers.PropertyControlGui 257 | ProxyControl=org.apache.jmeter.protocol.http.proxy.ProxyControl 258 | ProxyControlGui=org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui 259 | PublisherSampler=org.apache.jmeter.protocol.jms.sampler.PublisherSampler 260 | RandomControlGui=org.apache.jmeter.control.gui.RandomControlGui 261 | RandomController=org.apache.jmeter.control.RandomController 262 | RandomOrderController=org.apache.jmeter.control.RandomOrderController 263 | RandomOrderControllerGui=org.apache.jmeter.control.gui.RandomOrderControllerGui 264 | RandomVariableConfig=org.apache.jmeter.config.RandomVariableConfig 265 | RecordController=org.apache.jmeter.protocol.http.control.gui.RecordController 266 | RecordingController=org.apache.jmeter.protocol.http.control.RecordingController 267 | # removed in r1039684, class was deleted in r580452 268 | ReflectionThreadGroup=org.apache.jmeter.threads.ReflectionThreadGroup 269 | RegexExtractor=org.apache.jmeter.extractor.RegexExtractor 270 | RegexExtractorGui=org.apache.jmeter.extractor.gui.RegexExtractorGui 271 | RegExUserParameters=org.apache.jmeter.protocol.http.modifier.RegExUserParameters 272 | RegExUserParametersGui=org.apache.jmeter.protocol.http.modifier.gui.RegExUserParametersGui 273 | RemoteListenerWrapper=org.apache.jmeter.samplers.RemoteListenerWrapper 274 | RemoteSampleListenerWrapper=org.apache.jmeter.samplers.RemoteSampleListenerWrapper 275 | RemoteTestListenerWrapper=org.apache.jmeter.samplers.RemoteTestListenerWrapper 276 | RemoteThreadsListenerWrapper=org.apache.jmeter.threads.RemoteThreadsListenerWrapper 277 | ResponseAssertion=org.apache.jmeter.assertions.ResponseAssertion 278 | RespTimeGraphVisualizer=org.apache.jmeter.visualizers.RespTimeGraphVisualizer 279 | ResultAction=org.apache.jmeter.reporters.ResultAction 280 | ResultActionGui=org.apache.jmeter.reporters.gui.ResultActionGui 281 | ResultCollector=org.apache.jmeter.reporters.ResultCollector 282 | ResultSaver=org.apache.jmeter.reporters.ResultSaver 283 | ResultSaverGui=org.apache.jmeter.reporters.gui.ResultSaverGui 284 | RunTime=org.apache.jmeter.control.RunTime 285 | RunTimeGui=org.apache.jmeter.control.gui.RunTimeGui 286 | SampleSaveConfiguration=org.apache.jmeter.samplers.SampleSaveConfiguration 287 | SampleTimeout=org.apache.jmeter.modifiers.SampleTimeout 288 | SampleTimeoutGui=org.apache.jmeter.modifiers.gui.SampleTimeoutGui 289 | SimpleConfigGui=org.apache.jmeter.config.gui.SimpleConfigGui 290 | SimpleDataWriter=org.apache.jmeter.visualizers.SimpleDataWriter 291 | SizeAssertion=org.apache.jmeter.assertions.SizeAssertion 292 | SizeAssertionGui=org.apache.jmeter.assertions.gui.SizeAssertionGui 293 | SMIMEAssertion=org.apache.jmeter.assertions.SMIMEAssertionTestElement 294 | SMIMEAssertionGui=org.apache.jmeter.assertions.gui.SMIMEAssertionGui 295 | SmtpSampler=org.apache.jmeter.protocol.smtp.sampler.SmtpSampler 296 | SmtpSamplerGui=org.apache.jmeter.protocol.smtp.sampler.gui.SmtpSamplerGui 297 | 298 | # removed in 3.2, class was deleted in r 299 | SoapSampler=org.apache.jmeter.protocol.http.sampler.SoapSampler 300 | # removed in 3.2, class was deleted in r 301 | SoapSamplerGui=org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui 302 | 303 | # removed in 3.1, class was deleted in r1763837 304 | SplineVisualizer=org.apache.jmeter.visualizers.SplineVisualizer 305 | # Originally deleted in r397955 as class is obsolete; needed for compat. 306 | SqlConfigGui=org.apache.jmeter.protocol.jdbc.config.gui.SqlConfigGui 307 | StaticHost=org.apache.jmeter.protocol.http.control.StaticHost 308 | StatGraphVisualizer=org.apache.jmeter.visualizers.StatGraphVisualizer 309 | StatVisualizer=org.apache.jmeter.visualizers.StatVisualizer 310 | SubscriberSampler=org.apache.jmeter.protocol.jms.sampler.SubscriberSampler 311 | SubstitutionElement=org.apache.jmeter.assertions.SubstitutionElement 312 | Summariser=org.apache.jmeter.reporters.Summariser 313 | SummariserGui=org.apache.jmeter.reporters.gui.SummariserGui 314 | SummaryReport=org.apache.jmeter.visualizers.SummaryReport 315 | SwitchController=org.apache.jmeter.control.SwitchController 316 | SwitchControllerGui=org.apache.jmeter.control.gui.SwitchControllerGui 317 | SyncTimer=org.apache.jmeter.timers.SyncTimer 318 | SystemSampler=org.apache.jmeter.protocol.system.SystemSampler 319 | SystemSamplerGui=org.apache.jmeter.protocol.system.gui.SystemSamplerGui 320 | TableVisualizer=org.apache.jmeter.visualizers.TableVisualizer 321 | TCPConfigGui=org.apache.jmeter.protocol.tcp.config.gui.TCPConfigGui 322 | TCPSampler=org.apache.jmeter.protocol.tcp.sampler.TCPSampler 323 | TCPSamplerGui=org.apache.jmeter.protocol.tcp.control.gui.TCPSamplerGui 324 | TestAction=org.apache.jmeter.sampler.TestAction 325 | TestActionGui=org.apache.jmeter.sampler.gui.TestActionGui 326 | TestBeanGUI=org.apache.jmeter.testbeans.gui.TestBeanGUI 327 | TestFragmentController=org.apache.jmeter.control.TestFragmentController 328 | TestFragmentControllerGui=org.apache.jmeter.control.gui.TestFragmentControllerGui 329 | TestPlan=org.apache.jmeter.testelement.TestPlan 330 | TestPlanGui=org.apache.jmeter.control.gui.TestPlanGui 331 | ThreadGroup=org.apache.jmeter.threads.ThreadGroup 332 | ThreadGroupGui=org.apache.jmeter.threads.gui.ThreadGroupGui 333 | PostThreadGroup=org.apache.jmeter.threads.PostThreadGroup 334 | PostThreadGroupGui=org.apache.jmeter.threads.gui.PostThreadGroupGui 335 | SetupThreadGroup=org.apache.jmeter.threads.SetupThreadGroup 336 | SetupThreadGroupGui=org.apache.jmeter.threads.gui.SetupThreadGroupGui 337 | ThroughputController=org.apache.jmeter.control.ThroughputController 338 | ThroughputControllerGui=org.apache.jmeter.control.gui.ThroughputControllerGui 339 | TransactionController=org.apache.jmeter.control.TransactionController 340 | TransactionControllerGui=org.apache.jmeter.control.gui.TransactionControllerGui 341 | TransactionSampler=org.apache.jmeter.control.TransactionSampler 342 | UniformRandomTimer=org.apache.jmeter.timers.UniformRandomTimer 343 | UniformRandomTimerGui=org.apache.jmeter.timers.gui.UniformRandomTimerGui 344 | URLRewritingModifier=org.apache.jmeter.protocol.http.modifier.URLRewritingModifier 345 | URLRewritingModifierGui=org.apache.jmeter.protocol.http.modifier.gui.URLRewritingModifierGui 346 | UserParameterModifier=org.apache.jmeter.protocol.http.modifier.UserParameterModifier 347 | UserParameterModifierGui=org.apache.jmeter.protocol.http.modifier.gui.UserParameterModifierGui 348 | UserParameters=org.apache.jmeter.modifiers.UserParameters 349 | UserParametersGui=org.apache.jmeter.modifiers.gui.UserParametersGui 350 | ViewResultsFullVisualizer=org.apache.jmeter.visualizers.ViewResultsFullVisualizer 351 | # removed in 3.0, class was deleted in r1722757 352 | WebServiceSampler=org.apache.jmeter.protocol.http.sampler.WebServiceSampler 353 | # removed in 3.0, class was deleted in r1722757 354 | WebServiceSamplerGui=org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui 355 | WhileController=org.apache.jmeter.control.WhileController 356 | WhileControllerGui=org.apache.jmeter.control.gui.WhileControllerGui 357 | WorkBench=org.apache.jmeter.testelement.WorkBench 358 | WorkBenchGui=org.apache.jmeter.control.gui.WorkBenchGui 359 | XMLAssertion=org.apache.jmeter.assertions.XMLAssertion 360 | XMLAssertionGui=org.apache.jmeter.assertions.gui.XMLAssertionGui 361 | XMLSchemaAssertion=org.apache.jmeter.assertions.XMLSchemaAssertion 362 | XMLSchemaAssertionGUI=org.apache.jmeter.assertions.gui.XMLSchemaAssertionGUI 363 | XPathAssertion=org.apache.jmeter.assertions.XPathAssertion 364 | XPathAssertionGui=org.apache.jmeter.assertions.gui.XPathAssertionGui 365 | XPathExtractor=org.apache.jmeter.extractor.XPathExtractor 366 | XPathExtractorGui=org.apache.jmeter.extractor.gui.XPathExtractorGui 367 | # 368 | # Properties - all start with lower case letter and end with Prop 369 | # 370 | boolProp=org.apache.jmeter.testelement.property.BooleanProperty 371 | collectionProp=org.apache.jmeter.testelement.property.CollectionProperty 372 | doubleProp=org.apache.jmeter.testelement.property.DoubleProperty 373 | elementProp=org.apache.jmeter.testelement.property.TestElementProperty 374 | # see above - already defined as FloatProperty 375 | #floatProp=org.apache.jmeter.testelement.property.FloatProperty 376 | intProp=org.apache.jmeter.testelement.property.IntegerProperty 377 | longProp=org.apache.jmeter.testelement.property.LongProperty 378 | mapProp=org.apache.jmeter.testelement.property.MapProperty 379 | objProp=org.apache.jmeter.testelement.property.ObjectProperty 380 | stringProp=org.apache.jmeter.testelement.property.StringProperty 381 | # 382 | # Other - must start with a lower case letter (and not end with Prop) 383 | # (otherwise they could clash with the initial set of aliases) 384 | # 385 | hashTree=org.apache.jorphan.collections.ListedHashTree 386 | jmeterTestPlan=org.apache.jmeter.save.ScriptWrapper 387 | sample=org.apache.jmeter.samplers.SampleResult 388 | httpSample=org.apache.jmeter.protocol.http.sampler.HTTPSampleResult 389 | statSample=org.apache.jmeter.samplers.StatisticalSampleResult 390 | testResults=org.apache.jmeter.save.TestResultWrapper 391 | assertionResult=org.apache.jmeter.assertions.AssertionResult 392 | 393 | # removed in 3.2, class was deleted in r 394 | monitorStats=org.apache.jmeter.visualizers.MonitorStats 395 | sampleEvent=org.apache.jmeter.samplers.SampleEvent 396 | # 397 | # Converters to register. Must start line with '_' 398 | # If the converter is a collection of subitems, set equal to "collection" 399 | # If the converter needs to know the class mappings but is not a collection of 400 | # subitems, set it equal to "mapping" 401 | _org.apache.jmeter.protocol.http.sampler.HTTPSamplerBaseConverter=collection 402 | _org.apache.jmeter.protocol.http.util.HTTPResultConverter=collection 403 | _org.apache.jmeter.save.converters.BooleanPropertyConverter= 404 | _org.apache.jmeter.save.converters.IntegerPropertyConverter= 405 | _org.apache.jmeter.save.converters.LongPropertyConverter= 406 | _org.apache.jmeter.save.converters.MultiPropertyConverter=collection 407 | _org.apache.jmeter.save.converters.SampleEventConverter= 408 | _org.apache.jmeter.save.converters.SampleResultConverter=collection 409 | _org.apache.jmeter.save.converters.SampleSaveConfigurationConverter=collection 410 | _org.apache.jmeter.save.converters.StringPropertyConverter= 411 | _org.apache.jmeter.save.converters.HashTreeConverter=collection 412 | _org.apache.jmeter.save.converters.TestElementConverter=collection 413 | _org.apache.jmeter.save.converters.TestElementPropertyConverter=collection 414 | _org.apache.jmeter.save.converters.TestResultWrapperConverter=collection 415 | _org.apache.jmeter.save.ScriptWrapperConverter=mapping 416 | # 417 | # Remember to update the _version entry 418 | # 419 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | loadium 8 | postman2jmx 9 | 0.2.8 10 | 11 | 12 | 13 | org.apache.logging.log4j 14 | log4j-slf4j-impl 15 | 2.10.0 16 | 17 | 18 | com.fasterxml.jackson.core 19 | jackson-databind 20 | 2.9.10.1 21 | 22 | 23 | 24 | org.apache.jmeter 25 | ApacheJMeter_http 26 | 4.0 27 | 28 | 29 | commons-math3 30 | commons-math3 31 | 32 | 33 | commons-pool2 34 | commons-pool2 35 | 36 | 37 | log4j 38 | * 39 | 40 | 41 | org.slf4j 42 | * 43 | 44 | 45 | org.codehaus.groovy 46 | groovy-all 47 | 48 | 49 | org.apache.poi 50 | poi-ooxml 51 | 52 | 53 | edu.ucar 54 | grib 55 | 56 | 57 | edu.ucar 58 | cdm 59 | 60 | 61 | xalan 62 | xalan 63 | 64 | 65 | org.apache.poi 66 | poi 67 | 68 | 69 | org.apache.pdfbox 70 | pdfbox 71 | 72 | 73 | org.bouncycastle 74 | bcprov-jdk15on 75 | 76 | 77 | com.fasterxml.jackson.core 78 | jackson-databind 79 | 80 | 81 | 82 | apache-xerces 83 | xercesImpl 84 | 85 | 86 | org.apache.commons 87 | commons-math3 88 | 89 | 90 | org.apache.poi 91 | poi-scratchpad 92 | 93 | 94 | org.freemarker 95 | freemarker 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | org.apache.maven.plugins 107 | maven-compiler-plugin 108 | 3.7.0 109 | 110 | 1.8 111 | 1.8 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | maven-resources-plugin 120 | 3.0.2 121 | 122 | 123 | copy-resources 124 | validate 125 | 126 | copy-resources 127 | 128 | 129 | ${basedir}/target/Postman2Jmx/jmeter 130 | 131 | 132 | jmeter 133 | true 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | org.apache.maven.plugins 143 | maven-dependency-plugin 144 | 145 | 146 | copy-dependencies 147 | prepare-package 148 | 149 | copy-dependencies 150 | 151 | 152 | ${project.build.directory}/Postman2Jmx/lib 153 | false 154 | false 155 | true 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | org.apache.maven.plugins 164 | maven-jar-plugin 165 | 166 | 167 | 168 | true 169 | lib/ 170 | com.loadium.postman2jmx.app.Postman2Jmx 171 | 172 | 173 | . 174 | 175 | 176 | 177 | Postman2Jmx/Postman2Jmx 178 | 179 | 180 | 181 | 182 | 183 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/app/Postman2Jmx.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.app; 2 | 3 | import com.loadium.postman2jmx.builder.JmxFileBuilder; 4 | import com.loadium.postman2jmx.exception.InvalidArgumentsException; 5 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 6 | import com.loadium.postman2jmx.parser.IParser; 7 | import com.loadium.postman2jmx.parser.ParserFactory; 8 | import com.loadium.postman2jmx.utils.CollectionVersion; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | 13 | public class Postman2Jmx { 14 | 15 | private static Logger logger = LoggerFactory.getLogger(Postman2Jmx.class.getName()); 16 | 17 | 18 | public static void main(String[] args) { 19 | 20 | try { 21 | if (args.length != 2) { 22 | throw new InvalidArgumentsException(); 23 | } 24 | 25 | String postmanCollectionJson = args[0]; 26 | String jmxOutputFile = args[1]; 27 | 28 | logger.info("Trying to parse postman collection file: {}", postmanCollectionJson); 29 | IParser parser = ParserFactory.getParser(CollectionVersion.V2); 30 | PostmanCollection postmanCollection = parser.parse(postmanCollectionJson); 31 | logger.info("Successfully parsed postman collection file: {}, Total parsed item count: {} ", postmanCollectionJson, postmanCollection.getItems().size()); 32 | 33 | logger.info("Trying to build jmx file: {}", jmxOutputFile); 34 | JmxFileBuilder jmxFileBuilder = new JmxFileBuilder(); 35 | jmxFileBuilder.build(postmanCollection, jmxOutputFile); 36 | logger.info("Successfully build jmx file: {} ", jmxOutputFile); 37 | 38 | } catch (Exception e) { 39 | logger.error("Error occurred!", e); 40 | } 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/AbstractJmxBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxHTTPSamplerProxy; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | public abstract class AbstractJmxBodyBuilder implements IJmxBodyBuilder { 10 | 11 | @Override 12 | public HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) throws Exception { 13 | return JmxHTTPSamplerProxy.newInstance(postmanItem); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/AbstractJmxFileBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.config.Postman2JmxConfig; 4 | import com.loadium.postman2jmx.exception.NoPostmanCollectionItemException; 5 | import com.loadium.postman2jmx.exception.NullPostmanCollectionException; 6 | import com.loadium.postman2jmx.model.jmx.*; 7 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 8 | import com.loadium.postman2jmx.model.postman.PostmanItem; 9 | import org.apache.jmeter.control.LoopController; 10 | import org.apache.jmeter.extractor.json.jsonpath.JSONPostProcessor; 11 | import org.apache.jmeter.protocol.http.control.HeaderManager; 12 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 13 | import org.apache.jmeter.save.SaveService; 14 | import org.apache.jmeter.testelement.TestPlan; 15 | import org.apache.jmeter.threads.ThreadGroup; 16 | import org.apache.jorphan.collections.HashTree; 17 | import org.apache.jorphan.collections.ListedHashTree; 18 | 19 | import java.io.*; 20 | import java.util.*; 21 | 22 | public abstract class AbstractJmxFileBuilder implements IJmxFileBuilder { 23 | 24 | protected JmxFile buildJmxFile(PostmanCollection postmanCollection, String jmxOutputFilePath) throws Exception { 25 | if (postmanCollection == null) { 26 | throw new NullPostmanCollectionException(); 27 | } 28 | 29 | if (postmanCollection.getItems() == null || postmanCollection.getItems().isEmpty()) { 30 | throw new NoPostmanCollectionItemException(); 31 | } 32 | 33 | Postman2JmxConfig config = new Postman2JmxConfig(); 34 | config.setJMeterHome(); 35 | 36 | // TestPlan 37 | TestPlan testPlan = JmxTestPlan.newInstance(postmanCollection.getInfo() != null ? postmanCollection.getInfo().getName() : ""); 38 | 39 | // ThreadGroup controller 40 | LoopController loopController = JmxLoopController.newInstance(); 41 | 42 | // ThreadGroup 43 | ThreadGroup threadGroup = JmxThreadGroup.newInstance(loopController); 44 | 45 | // HTTPSamplerProxy 46 | List httpSamplerProxies = new ArrayList<>(); 47 | List headerManagers = new ArrayList<>(); 48 | 49 | for (PostmanItem item : postmanCollection.getItems()) { 50 | /* if (!item.getEvent().isEmpty()) { 51 | continue; 52 | }*/ 53 | 54 | removeEmptyQueries(item); 55 | IJmxBodyBuilder bodyBuilder = JmxBodyBuilderFactory.getJmxBodyBuilder(item); 56 | HTTPSamplerProxy httpSamplerProxy = bodyBuilder.buildJmxBody(item); 57 | httpSamplerProxies.add(httpSamplerProxy); 58 | 59 | headerManagers.add(JmxHeaderManager.newInstance(item.getRequest().getHeaders())); 60 | } 61 | 62 | // Create TestPlan hash tree 63 | HashTree testPlanHashTree = new ListedHashTree(); 64 | testPlanHashTree.add(testPlan); 65 | 66 | // Add ThreadGroup to TestPlan hash tree 67 | HashTree threadGroupHashTree = new ListedHashTree(); 68 | threadGroupHashTree = testPlanHashTree.add(testPlan, threadGroup); 69 | 70 | // Add Http Cookie Manager 71 | threadGroupHashTree.add(JmxCookieManager.newInstance()); 72 | 73 | // Add Http Sampler to ThreadGroup hash tree 74 | HashTree httpSamplerHashTree = new ListedHashTree(); 75 | 76 | // Add header manager hash tree 77 | HashTree headerHashTree = null; 78 | 79 | // Add Java Sampler to ThreadGroup hash tree 80 | for (int i = 0; i < httpSamplerProxies.size(); i++) { 81 | HTTPSamplerProxy httpSamplerProxy = httpSamplerProxies.get(i); 82 | HeaderManager headerManager = headerManagers.get(i); 83 | 84 | httpSamplerHashTree = threadGroupHashTree.add(httpSamplerProxy); 85 | 86 | headerHashTree = new HashTree(); 87 | headerHashTree = httpSamplerHashTree.add(headerManager); 88 | 89 | PostmanItem postmanItem = postmanCollection.getItems().get(i); 90 | if (!postmanItem.getEvents().isEmpty()) { 91 | List jsonPostProcessors = JmxJsonPostProcessor.getJsonPostProcessors(postmanItem); 92 | httpSamplerHashTree.add(jsonPostProcessors); 93 | } 94 | } 95 | 96 | File file = new File(jmxOutputFilePath); 97 | OutputStream os = new FileOutputStream(file); 98 | SaveService.saveTree(testPlanHashTree, os); 99 | 100 | InputStream is = new FileInputStream(file); 101 | ByteArrayOutputStream bos = new ByteArrayOutputStream(); 102 | byte[] buffer = new byte[1024]; 103 | 104 | for (int len = 0; (len = is.read(buffer)) != -1; ) { 105 | bos.write(buffer, 0, len); 106 | } 107 | bos.flush(); 108 | 109 | byte[] data = bos.toByteArray(); 110 | JmxFile jmxFile = new JmxFile(data, testPlanHashTree); 111 | 112 | os.close(); 113 | is.close(); 114 | bos.close(); 115 | 116 | return jmxFile; 117 | } 118 | 119 | private void removeEmptyQueries(PostmanItem item) { 120 | item.getRequest().getUrl().getQueries().removeIf(query -> Objects.equals(query.getKey(), "") 121 | || Objects.equals(query.getValue(), "") || Objects.equals(query.getKey(), null) 122 | || Objects.equals(query.getValue(), null) || Objects.equals(query.getKey(), " ") 123 | || Objects.equals(query.getValue(), " ")); 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/IJmxBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanItem; 4 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 5 | 6 | public interface IJmxBodyBuilder { 7 | 8 | HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) throws Exception; 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/IJmxFileBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 4 | import com.loadium.postman2jmx.model.jmx.JmxFile; 5 | 6 | public interface IJmxFileBuilder { 7 | 8 | JmxFile build(PostmanCollection postmanCollection, String jmxOutputFilePath) throws Exception; 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxBinaryBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxHTTPSamplerProxy; 4 | import com.loadium.postman2jmx.model.postman.PostmanFileBody; 5 | import com.loadium.postman2jmx.model.postman.PostmanItem; 6 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 7 | import org.apache.jmeter.protocol.http.util.HTTPFileArg; 8 | 9 | public class JmxBinaryBodyBuilder extends AbstractJmxBodyBuilder { 10 | 11 | @Override 12 | public HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) { 13 | HTTPSamplerProxy httpSamplerProxy = JmxHTTPSamplerProxy.newInstance(postmanItem); 14 | PostmanFileBody fileBody = postmanItem.getRequest().getBody().getFile(); 15 | 16 | HTTPFileArg argument = new HTTPFileArg(); 17 | argument.setPath(fileBody.getSrc() == null ? "" : fileBody.getSrc()); 18 | argument.setParamName(" "); 19 | argument.setMimeType(" "); 20 | 21 | HTTPFileArg[] fileArgs = new HTTPFileArg[1]; 22 | fileArgs[0] = argument; 23 | 24 | httpSamplerProxy.setHTTPFiles(fileArgs); 25 | 26 | return httpSamplerProxy; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxBodyBuilderFactory.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.exception.UnsupportedJmxFileBuilderException; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import com.loadium.postman2jmx.utils.ResponseBodyMode; 6 | 7 | public class JmxBodyBuilderFactory { 8 | private static JmxRawBodyBuilder jmxRawBodyFileBuilder; 9 | private static JmxFormDataBodyBuilder jmxFormDataBodyFileBuilder; 10 | private static JmxUrlEncodedBodyBuilder jmxUrlEncodedBodyFileBuilder; 11 | private static JmxBinaryBodyBuilder jmxBinaryBodyFileBuilder; 12 | private static JmxEmptyBodyBuilder jmxEmptyBodyBuilder; 13 | 14 | 15 | public static IJmxBodyBuilder getJmxBodyBuilder(PostmanItem postmanItem) throws UnsupportedJmxFileBuilderException { 16 | String responseBodyMode = null; 17 | if (postmanItem.getRequest().getBody() != null) { 18 | responseBodyMode = postmanItem.getRequest().getBody().getMode(); 19 | } 20 | 21 | if (responseBodyMode == null || ResponseBodyMode.EMPTY.getMode().equals(responseBodyMode)) { 22 | if (jmxEmptyBodyBuilder == null) { 23 | jmxEmptyBodyBuilder = new JmxEmptyBodyBuilder(); 24 | } 25 | return jmxEmptyBodyBuilder; 26 | } 27 | 28 | if (ResponseBodyMode.RAW.getMode().equals(responseBodyMode)) { 29 | if (jmxRawBodyFileBuilder == null) { 30 | jmxRawBodyFileBuilder = new JmxRawBodyBuilder(); 31 | } 32 | return jmxRawBodyFileBuilder; 33 | } else if (ResponseBodyMode.FORM_DATA.getMode().equals(responseBodyMode)) { 34 | if (jmxFormDataBodyFileBuilder == null) { 35 | jmxFormDataBodyFileBuilder = new JmxFormDataBodyBuilder(); 36 | } 37 | return jmxFormDataBodyFileBuilder; 38 | } else if (ResponseBodyMode.URL_ENCODED.getMode().equals(responseBodyMode)) { 39 | if (jmxUrlEncodedBodyFileBuilder == null) { 40 | jmxUrlEncodedBodyFileBuilder = new JmxUrlEncodedBodyBuilder(); 41 | } 42 | return jmxUrlEncodedBodyFileBuilder; 43 | } else if (ResponseBodyMode.FILE.getMode().equals(responseBodyMode)) { 44 | if (jmxBinaryBodyFileBuilder == null) { 45 | jmxBinaryBodyFileBuilder = new JmxBinaryBodyBuilder(); 46 | } 47 | return jmxBinaryBodyFileBuilder; 48 | } else { 49 | throw new UnsupportedJmxFileBuilderException("There is no Jxm builder for response body type: " + responseBodyMode); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxEmptyBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxHTTPSamplerProxy; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 6 | 7 | public class JmxEmptyBodyBuilder extends AbstractJmxBodyBuilder { 8 | 9 | @Override 10 | public HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) throws Exception { 11 | return JmxHTTPSamplerProxy.newInstance(postmanItem); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxFileBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxFile; 4 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 5 | 6 | public class JmxFileBuilder extends AbstractJmxFileBuilder { 7 | 8 | @Override 9 | public JmxFile build(PostmanCollection postmanCollection, String jmxOutputFilePath) throws Exception { 10 | return super.buildJmxFile(postmanCollection, jmxOutputFilePath); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxFormDataBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxHTTPSamplerProxy; 4 | import com.loadium.postman2jmx.model.postman.PostmanFormDataBody; 5 | import com.loadium.postman2jmx.model.postman.PostmanItem; 6 | import com.loadium.postman2jmx.model.postman.PostmanRawBody; 7 | import org.apache.jmeter.config.Argument; 8 | import org.apache.jmeter.config.Arguments; 9 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 10 | import org.apache.jmeter.protocol.http.util.HTTPArgument; 11 | 12 | import java.util.List; 13 | 14 | public class JmxFormDataBodyBuilder extends AbstractJmxBodyBuilder { 15 | 16 | @Override 17 | public HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) { 18 | HTTPSamplerProxy httpSamplerProxy = JmxHTTPSamplerProxy.newInstance(postmanItem); 19 | 20 | Arguments arguments = new Arguments(); 21 | List formDataList = postmanItem.getRequest().getBody().getFormDataList(); 22 | 23 | HTTPArgument argument; 24 | for(PostmanFormDataBody formData : formDataList) { 25 | argument = new HTTPArgument(); 26 | argument.setEnabled(true); 27 | argument.setName(formData.getKey()); 28 | argument.setValue(formData.getValue()); 29 | argument.setMetaData("="); 30 | argument.setAlwaysEncoded(false); 31 | argument.setUseEquals(true); 32 | arguments.addArgument(argument); 33 | } 34 | 35 | httpSamplerProxy.setArguments(arguments); 36 | return httpSamplerProxy; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxRawBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxHTTPSamplerProxy; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import com.loadium.postman2jmx.model.postman.PostmanRawBody; 6 | import com.loadium.postman2jmx.utils.ValueUtils; 7 | import org.apache.jmeter.config.Arguments; 8 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 9 | import org.apache.jmeter.protocol.http.util.HTTPArgument; 10 | 11 | import javax.ws.rs.HttpMethod; 12 | 13 | public class JmxRawBodyBuilder extends AbstractJmxBodyBuilder { 14 | 15 | @Override 16 | public HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) { 17 | 18 | HTTPSamplerProxy httpSamplerProxy = JmxHTTPSamplerProxy.newInstance(postmanItem); 19 | 20 | if (HttpMethod.POST.equalsIgnoreCase(httpSamplerProxy.getMethod()) || HttpMethod.PUT.equalsIgnoreCase(httpSamplerProxy.getMethod()) || HttpMethod.DELETE.equalsIgnoreCase(httpSamplerProxy.getMethod())) { 21 | httpSamplerProxy.setPostBodyRaw(true); 22 | Arguments arguments = new Arguments(); 23 | PostmanRawBody raw = postmanItem.getRequest().getBody().getRaw(); 24 | 25 | if (raw.getValue() != null && !raw.getValue().isEmpty()) { 26 | HTTPArgument argument = new HTTPArgument(); 27 | argument.setEnabled(true); 28 | argument.setAlwaysEncoded(false); 29 | argument.setMetaData("="); 30 | argument.setValue(ValueUtils.value(raw.getValue())); 31 | arguments.addArgument(argument); 32 | } 33 | httpSamplerProxy.setArguments(arguments); 34 | } 35 | 36 | return httpSamplerProxy; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/builder/JmxUrlEncodedBodyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.builder; 2 | 3 | import com.loadium.postman2jmx.model.jmx.JmxHTTPSamplerProxy; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import com.loadium.postman2jmx.model.postman.PostmanUrlEncodedBody; 6 | import org.apache.jmeter.config.Arguments; 7 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 8 | import org.apache.jmeter.protocol.http.util.HTTPArgument; 9 | 10 | import java.util.List; 11 | 12 | public class JmxUrlEncodedBodyBuilder extends AbstractJmxBodyBuilder { 13 | 14 | @Override 15 | public HTTPSamplerProxy buildJmxBody(PostmanItem postmanItem) throws Exception { 16 | HTTPSamplerProxy httpSamplerProxy = JmxHTTPSamplerProxy.newInstance(postmanItem); 17 | 18 | Arguments arguments = new Arguments(); 19 | List urlEncodes = postmanItem.getRequest().getBody().getUrlEncodes(); 20 | 21 | HTTPArgument argument; 22 | for (PostmanUrlEncodedBody urlEncode : urlEncodes) { 23 | argument = new HTTPArgument(); 24 | argument.setEnabled(true); 25 | argument.setName(urlEncode.getKey()); 26 | argument.setValue(urlEncode.getValue()); 27 | argument.setMetaData("="); 28 | argument.setAlwaysEncoded(false); 29 | argument.setUseEquals(true); 30 | arguments.addArgument(argument); 31 | } 32 | 33 | httpSamplerProxy.setArguments(arguments); 34 | return httpSamplerProxy; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/config/Postman2JmxConfig.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.config; 2 | 3 | import org.apache.jmeter.util.JMeterUtils; 4 | 5 | import java.io.File; 6 | 7 | public class Postman2JmxConfig { 8 | 9 | public void setJMeterHome() throws Exception { 10 | String path = new File("").getAbsolutePath(); 11 | path = path + "/jmeter"; 12 | JMeterUtils.setJMeterHome(path); 13 | } 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/config/jmeter/bin/saveservice.properties: -------------------------------------------------------------------------------- 1 | #--------------------------------------------------------- 2 | # SAVESERVICE PROPERTIES - JMETER INTERNAL USE ONLY 3 | #--------------------------------------------------------- 4 | 5 | ## Licensed to the Apache Software Foundation (ASF) under one or more 6 | ## contributor license agreements. See the NOTICE file distributed with 7 | ## this work for additional information regarding copyright ownership. 8 | ## The ASF licenses this file to You under the Apache License, Version 2.0 9 | ## (the "License"); you may not use this file except in compliance with 10 | ## the License. You may obtain a copy of the License at 11 | ## 12 | ## http://www.apache.org/licenses/LICENSE-2.0 13 | ## 14 | ## Unless required by applicable law or agreed to in writing, software 15 | ## distributed under the License is distributed on an "AS IS" BASIS, 16 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | ## See the License for the specific language governing permissions and 18 | ## limitations under the License. 19 | 20 | # This file is used to define how XStream (de-)serializes classnames 21 | # in JMX test plan files. 22 | 23 | # FOR JMETER INTERNAL USE ONLY 24 | 25 | #--------------------------------------------------------- 26 | 27 | # N.B. To ensure backward compatibility, please do NOT change or delete any entries 28 | 29 | # New entries can be added as necessary. 30 | # 31 | # Note that keys starting with an underscore are special, 32 | # and are not used as aliases. 33 | # 34 | # Please keep the entries in alphabetical order within the sections 35 | # to reduce the likelihood of duplicates 36 | # 37 | # version number of this file is now computed by a sha1 sum, so no need for 38 | # an explicit _file_version property anymore. 39 | # 40 | # For this sha1 sum we ignore every newline character. It can be computed 41 | # by the following command: 42 | # 43 | # cat bin/saveservice.properties | perl -ne 'chomp; print' | sha1sum 44 | # 45 | # Be aware, that every change in this file will change the sha1 sum! 46 | # 47 | # Conversion version (for JMX output files) 48 | # Must be updated if the file has been changed since the previous release 49 | # Format is: 50 | # Save service version=JMeter version at which change occurred 51 | # 1.7 = 2.1.1 52 | # 1.8 = 2.1.2 53 | # (Some version updates were missed here...) 54 | # 2.0 = 2.3.1 55 | # 2.1 = 2.3.2 56 | # (Some version updates were missed here...) 57 | # 2.2 = 2.6 58 | # 2.3 = 2.7 59 | # 2.4 = 2.9 60 | # 2.5 = 2.10 61 | # 2.6 = 2.11 62 | # 2.7 = 2.12 63 | # 2.8 = 2.13 64 | # 2.9 = 2.14 65 | # 3.1 = 3.1 66 | # 3.2 = 3.2 67 | # 3.4 = 3.4 68 | _version=4.0 69 | # 70 | # 71 | # Character set encoding used to read and write JMeter XML files and CSV results 72 | # 73 | _file_encoding=UTF-8 74 | # 75 | #--------------------------------------------------------- 76 | # 77 | # The following properties are used to create aliases 78 | # [Must all start with capital letter] 79 | # 80 | AccessLogSampler=org.apache.jmeter.protocol.http.sampler.AccessLogSampler 81 | AjpSampler=org.apache.jmeter.protocol.http.sampler.AjpSampler 82 | AjpSamplerGui=org.apache.jmeter.protocol.http.control.gui.AjpSamplerGui 83 | AnchorModifier=org.apache.jmeter.protocol.http.modifier.AnchorModifier 84 | AnchorModifierGui=org.apache.jmeter.protocol.http.modifier.gui.AnchorModifierGui 85 | Argument=org.apache.jmeter.config.Argument 86 | Arguments=org.apache.jmeter.config.Arguments 87 | ArgumentsPanel=org.apache.jmeter.config.gui.ArgumentsPanel 88 | AssertionGui=org.apache.jmeter.assertions.gui.AssertionGui 89 | AssertionVisualizer=org.apache.jmeter.visualizers.AssertionVisualizer 90 | AuthManager=org.apache.jmeter.protocol.http.control.AuthManager 91 | Authorization=org.apache.jmeter.protocol.http.control.Authorization 92 | AuthPanel=org.apache.jmeter.protocol.http.gui.AuthPanel 93 | BackendListener=org.apache.jmeter.visualizers.backend.BackendListener 94 | BackendListenerGui=org.apache.jmeter.visualizers.backend.BackendListenerGui 95 | BeanShellAssertion=org.apache.jmeter.assertions.BeanShellAssertion 96 | BeanShellAssertionGui=org.apache.jmeter.assertions.gui.BeanShellAssertionGui 97 | BeanShellListener=org.apache.jmeter.visualizers.BeanShellListener 98 | BeanShellPostProcessor=org.apache.jmeter.extractor.BeanShellPostProcessor 99 | BeanShellPreProcessor=org.apache.jmeter.modifiers.BeanShellPreProcessor 100 | BeanShellSampler=org.apache.jmeter.protocol.java.sampler.BeanShellSampler 101 | BeanShellSamplerGui=org.apache.jmeter.protocol.java.control.gui.BeanShellSamplerGui 102 | BeanShellTimer=org.apache.jmeter.timers.BeanShellTimer 103 | BoundaryExtractor=org.apache.jmeter.extractor.BoundaryExtractor 104 | BoundaryExtractorGui=org.apache.jmeter.extractor.gui.BoundaryExtractorGui 105 | BSFAssertion=org.apache.jmeter.assertions.BSFAssertion 106 | BSFListener=org.apache.jmeter.visualizers.BSFListener 107 | BSFPreProcessor=org.apache.jmeter.modifiers.BSFPreProcessor 108 | BSFPostProcessor=org.apache.jmeter.extractor.BSFPostProcessor 109 | BSFSampler=org.apache.jmeter.protocol.java.sampler.BSFSampler 110 | BSFSamplerGui=org.apache.jmeter.protocol.java.control.gui.BSFSamplerGui 111 | BSFTimer=org.apache.jmeter.timers.BSFTimer 112 | CacheManager=org.apache.jmeter.protocol.http.control.CacheManager 113 | CacheManagerGui=org.apache.jmeter.protocol.http.gui.CacheManagerGui 114 | CompareAssertion=org.apache.jmeter.assertions.CompareAssertion 115 | ComparisonVisualizer=org.apache.jmeter.visualizers.ComparisonVisualizer 116 | ConfigTestElement=org.apache.jmeter.config.ConfigTestElement 117 | ConstantThroughputTimer=org.apache.jmeter.timers.ConstantThroughputTimer 118 | ConstantTimer=org.apache.jmeter.timers.ConstantTimer 119 | ConstantTimerGui=org.apache.jmeter.timers.gui.ConstantTimerGui 120 | Cookie=org.apache.jmeter.protocol.http.control.Cookie 121 | CookieManager=org.apache.jmeter.protocol.http.control.CookieManager 122 | CookiePanel=org.apache.jmeter.protocol.http.gui.CookiePanel 123 | CounterConfig=org.apache.jmeter.modifiers.CounterConfig 124 | CriticalSectionController=org.apache.jmeter.control.CriticalSectionController 125 | CriticalSectionControllerGui=org.apache.jmeter.control.gui.CriticalSectionControllerGui 126 | CounterConfigGui=org.apache.jmeter.modifiers.gui.CounterConfigGui 127 | CSVDataSet=org.apache.jmeter.config.CSVDataSet 128 | DebugPostProcessor=org.apache.jmeter.extractor.DebugPostProcessor 129 | DebugSampler=org.apache.jmeter.sampler.DebugSampler 130 | # removed in 3.1, class was deleted in r1763837 131 | DistributionGraphVisualizer=org.apache.jmeter.visualizers.DistributionGraphVisualizer 132 | DNSCacheManager=org.apache.jmeter.protocol.http.control.DNSCacheManager 133 | DNSCachePanel=org.apache.jmeter.protocol.http.gui.DNSCachePanel 134 | DurationAssertion=org.apache.jmeter.assertions.DurationAssertion 135 | DurationAssertionGui=org.apache.jmeter.assertions.gui.DurationAssertionGui 136 | PreciseThroughputTimer=org.apache.jmeter.timers.poissonarrivals.PreciseThroughputTimer 137 | # Should really have been defined as floatProp to agree with other properties 138 | # No point changing this now 139 | FloatProperty=org.apache.jmeter.testelement.property.FloatProperty 140 | ForeachController=org.apache.jmeter.control.ForeachController 141 | ForeachControlPanel=org.apache.jmeter.control.gui.ForeachControlPanel 142 | FtpConfigGui=org.apache.jmeter.protocol.ftp.config.gui.FtpConfigGui 143 | FTPSampler=org.apache.jmeter.protocol.ftp.sampler.FTPSampler 144 | FtpTestSamplerGui=org.apache.jmeter.protocol.ftp.control.gui.FtpTestSamplerGui 145 | GaussianRandomTimer=org.apache.jmeter.timers.GaussianRandomTimer 146 | GaussianRandomTimerGui=org.apache.jmeter.timers.gui.GaussianRandomTimerGui 147 | GenericController=org.apache.jmeter.control.GenericController 148 | GraphAccumVisualizer=org.apache.jmeter.visualizers.GraphAccumVisualizer 149 | GraphVisualizer=org.apache.jmeter.visualizers.GraphVisualizer 150 | Header=org.apache.jmeter.protocol.http.control.Header 151 | HeaderManager=org.apache.jmeter.protocol.http.control.HeaderManager 152 | HeaderPanel=org.apache.jmeter.protocol.http.gui.HeaderPanel 153 | HTMLAssertion=org.apache.jmeter.assertions.HTMLAssertion 154 | HTMLAssertionGui=org.apache.jmeter.assertions.gui.HTMLAssertionGui 155 | HTTPArgument=org.apache.jmeter.protocol.http.util.HTTPArgument 156 | HTTPArgumentsPanel=org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel 157 | HTTPFileArg=org.apache.jmeter.protocol.http.util.HTTPFileArg 158 | HTTPFileArgs=org.apache.jmeter.protocol.http.util.HTTPFileArgs 159 | HttpDefaultsGui=org.apache.jmeter.protocol.http.config.gui.HttpDefaultsGui 160 | HtmlExtractor=org.apache.jmeter.extractor.HtmlExtractor 161 | HtmlExtractorGui=org.apache.jmeter.extractor.gui.HtmlExtractorGui 162 | # removed in r1039684, probably not released. Not present in r322831 or since. 163 | #HttpGenericSampler=org.apache.jmeter.protocol.http.sampler.HttpGenericSampler 164 | # removed in r1039684, probably not released. Not present in r322831 or since. 165 | #HttpGenericSamplerGui=org.apache.jmeter.protocol.http.control.gui.HttpGenericSamplerGui 166 | HttpMirrorControl=org.apache.jmeter.protocol.http.control.HttpMirrorControl 167 | HttpMirrorControlGui=org.apache.jmeter.protocol.http.control.gui.HttpMirrorControlGui 168 | # r397955 - removed test class. Keep as commented entry for info only. 169 | #HTTPNullSampler=org.apache.jmeter.protocol.http.sampler.HTTPNullSampler 170 | # Merge previous 2 HTTP samplers into one 171 | HTTPSampler_=org.apache.jmeter.protocol.http.sampler.HTTPSampler 172 | HTTPSampler2_=org.apache.jmeter.protocol.http.sampler.HTTPSampler2 173 | HTTPSamplerProxy,HTTPSampler,HTTPSampler2=org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy 174 | # Merge GUIs 175 | HttpTestSampleGui,HttpTestSampleGui2=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui 176 | #HttpTestSampleGui2=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui2 177 | IfController=org.apache.jmeter.control.IfController 178 | IfControllerPanel=org.apache.jmeter.control.gui.IfControllerPanel 179 | IncludeController=org.apache.jmeter.control.IncludeController 180 | IncludeControllerGui=org.apache.jmeter.control.gui.IncludeControllerGui 181 | InterleaveControl=org.apache.jmeter.control.InterleaveControl 182 | InterleaveControlGui=org.apache.jmeter.control.gui.InterleaveControlGui 183 | JavaConfig=org.apache.jmeter.protocol.java.config.JavaConfig 184 | JavaConfigGui=org.apache.jmeter.protocol.java.config.gui.JavaConfigGui 185 | JavaSampler=org.apache.jmeter.protocol.java.sampler.JavaSampler 186 | JavaTest=org.apache.jmeter.protocol.java.test.JavaTest 187 | JavaTestSamplerGui=org.apache.jmeter.protocol.java.control.gui.JavaTestSamplerGui 188 | JDBCDataSource=org.apache.jmeter.protocol.jdbc.config.DataSourceElement 189 | JDBCPostProcessor=org.apache.jmeter.protocol.jdbc.processor.JDBCPostProcessor 190 | JDBCPreProcessor=org.apache.jmeter.protocol.jdbc.processor.JDBCPreProcessor 191 | JDBCSampler=org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler 192 | # Renamed to JMSSamplerGui; keep original entry for backwards compatibility 193 | JMSConfigGui=org.apache.jmeter.protocol.jms.control.gui.JMSConfigGui 194 | JMSProperties=org.apache.jmeter.protocol.jms.sampler.JMSProperties 195 | JMSProperty=org.apache.jmeter.protocol.jms.sampler.JMSProperty 196 | JMSPublisherGui=org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui 197 | JMSSampler=org.apache.jmeter.protocol.jms.sampler.JMSSampler 198 | JMSSamplerGui=org.apache.jmeter.protocol.jms.control.gui.JMSSamplerGui 199 | JMSSubscriberGui=org.apache.jmeter.protocol.jms.control.gui.JMSSubscriberGui 200 | JSONPathAssertion=org.apache.jmeter.assertions.JSONPathAssertion 201 | JSONPathAssertionGui=org.apache.jmeter.assertions.gui.JSONPathAssertionGui 202 | JSONPostProcessor=org.apache.jmeter.extractor.json.jsonpath.JSONPostProcessor 203 | JSONPostProcessorGui=org.apache.jmeter.extractor.json.jsonpath.gui.JSONPostProcessorGui 204 | # Removed in r545311 as Jndi no longer present; keep for compat. 205 | JndiDefaultsGui=org.apache.jmeter.protocol.jms.control.gui.JndiDefaultsGui 206 | JSR223Assertion=org.apache.jmeter.assertions.JSR223Assertion 207 | JSR223Listener=org.apache.jmeter.visualizers.JSR223Listener 208 | JSR223PostProcessor=org.apache.jmeter.extractor.JSR223PostProcessor 209 | JSR223PreProcessor=org.apache.jmeter.modifiers.JSR223PreProcessor 210 | JSR223Sampler=org.apache.jmeter.protocol.java.sampler.JSR223Sampler 211 | JSR223Timer=org.apache.jmeter.timers.JSR223Timer 212 | JUnitSampler=org.apache.jmeter.protocol.java.sampler.JUnitSampler 213 | JUnitTestSamplerGui=org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui 214 | KeystoreConfig=org.apache.jmeter.config.KeystoreConfig 215 | LDAPArgument=org.apache.jmeter.protocol.ldap.config.gui.LDAPArgument 216 | LDAPArguments=org.apache.jmeter.protocol.ldap.config.gui.LDAPArguments 217 | LDAPArgumentsPanel=org.apache.jmeter.protocol.ldap.config.gui.LDAPArgumentsPanel 218 | LdapConfigGui=org.apache.jmeter.protocol.ldap.config.gui.LdapConfigGui 219 | LdapExtConfigGui=org.apache.jmeter.protocol.ldap.config.gui.LdapExtConfigGui 220 | LDAPExtSampler=org.apache.jmeter.protocol.ldap.sampler.LDAPExtSampler 221 | LdapExtTestSamplerGui=org.apache.jmeter.protocol.ldap.control.gui.LdapExtTestSamplerGui 222 | LDAPSampler=org.apache.jmeter.protocol.ldap.sampler.LDAPSampler 223 | LdapTestSamplerGui=org.apache.jmeter.protocol.ldap.control.gui.LdapTestSamplerGui 224 | LogicControllerGui=org.apache.jmeter.control.gui.LogicControllerGui 225 | LoginConfig=org.apache.jmeter.config.LoginConfig 226 | LoginConfigGui=org.apache.jmeter.config.gui.LoginConfigGui 227 | LoopController=org.apache.jmeter.control.LoopController 228 | LoopControlPanel=org.apache.jmeter.control.gui.LoopControlPanel 229 | MailerModel=org.apache.jmeter.reporters.MailerModel 230 | MailerResultCollector=org.apache.jmeter.reporters.MailerResultCollector 231 | MailerVisualizer=org.apache.jmeter.visualizers.MailerVisualizer 232 | MailReaderSampler=org.apache.jmeter.protocol.mail.sampler.MailReaderSampler 233 | MailReaderSamplerGui=org.apache.jmeter.protocol.mail.sampler.gui.MailReaderSamplerGui 234 | MD5HexAssertion=org.apache.jmeter.assertions.MD5HexAssertion 235 | MD5HexAssertionGUI=org.apache.jmeter.assertions.gui.MD5HexAssertionGUI 236 | ModuleController=org.apache.jmeter.control.ModuleController 237 | ModuleControllerGui=org.apache.jmeter.control.gui.ModuleControllerGui 238 | MongoScriptSampler=org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler 239 | MongoSourceElement=org.apache.jmeter.protocol.mongodb.config.MongoSourceElement 240 | 241 | # removed in 3.2, class was deleted in r 242 | MonitorHealthVisualizer=org.apache.jmeter.visualizers.MonitorHealthVisualizer 243 | 244 | NamePanel=org.apache.jmeter.gui.NamePanel 245 | ObsoleteGui=org.apache.jmeter.config.gui.ObsoleteGui 246 | OnceOnlyController=org.apache.jmeter.control.OnceOnlyController 247 | OnceOnlyControllerGui=org.apache.jmeter.control.gui.OnceOnlyControllerGui 248 | # removed in 3.0, class was deleted in r1722962 249 | ParamMask=org.apache.jmeter.protocol.http.modifier.ParamMask 250 | # removed in 3.0, class was deleted in r1722757 251 | ParamModifier=org.apache.jmeter.protocol.http.modifier.ParamModifier 252 | # removed in 3.0, class was deleted in r1722757 253 | ParamModifierGui=org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui 254 | PoissonRandomTimer=org.apache.jmeter.timers.PoissonRandomTimer 255 | PoissonRandomTimerGui=org.apache.jmeter.timers.gui.PoissonRandomTimerGui 256 | PropertyControlGui=org.apache.jmeter.visualizers.PropertyControlGui 257 | ProxyControl=org.apache.jmeter.protocol.http.proxy.ProxyControl 258 | ProxyControlGui=org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui 259 | PublisherSampler=org.apache.jmeter.protocol.jms.sampler.PublisherSampler 260 | RandomControlGui=org.apache.jmeter.control.gui.RandomControlGui 261 | RandomController=org.apache.jmeter.control.RandomController 262 | RandomOrderController=org.apache.jmeter.control.RandomOrderController 263 | RandomOrderControllerGui=org.apache.jmeter.control.gui.RandomOrderControllerGui 264 | RandomVariableConfig=org.apache.jmeter.config.RandomVariableConfig 265 | RecordController=org.apache.jmeter.protocol.http.control.gui.RecordController 266 | RecordingController=org.apache.jmeter.protocol.http.control.RecordingController 267 | # removed in r1039684, class was deleted in r580452 268 | ReflectionThreadGroup=org.apache.jmeter.threads.ReflectionThreadGroup 269 | RegexExtractor=org.apache.jmeter.extractor.RegexExtractor 270 | RegexExtractorGui=org.apache.jmeter.extractor.gui.RegexExtractorGui 271 | RegExUserParameters=org.apache.jmeter.protocol.http.modifier.RegExUserParameters 272 | RegExUserParametersGui=org.apache.jmeter.protocol.http.modifier.gui.RegExUserParametersGui 273 | RemoteListenerWrapper=org.apache.jmeter.samplers.RemoteListenerWrapper 274 | RemoteSampleListenerWrapper=org.apache.jmeter.samplers.RemoteSampleListenerWrapper 275 | RemoteTestListenerWrapper=org.apache.jmeter.samplers.RemoteTestListenerWrapper 276 | RemoteThreadsListenerWrapper=org.apache.jmeter.threads.RemoteThreadsListenerWrapper 277 | ResponseAssertion=org.apache.jmeter.assertions.ResponseAssertion 278 | RespTimeGraphVisualizer=org.apache.jmeter.visualizers.RespTimeGraphVisualizer 279 | ResultAction=org.apache.jmeter.reporters.ResultAction 280 | ResultActionGui=org.apache.jmeter.reporters.gui.ResultActionGui 281 | ResultCollector=org.apache.jmeter.reporters.ResultCollector 282 | ResultSaver=org.apache.jmeter.reporters.ResultSaver 283 | ResultSaverGui=org.apache.jmeter.reporters.gui.ResultSaverGui 284 | RunTime=org.apache.jmeter.control.RunTime 285 | RunTimeGui=org.apache.jmeter.control.gui.RunTimeGui 286 | SampleSaveConfiguration=org.apache.jmeter.samplers.SampleSaveConfiguration 287 | SampleTimeout=org.apache.jmeter.modifiers.SampleTimeout 288 | SampleTimeoutGui=org.apache.jmeter.modifiers.gui.SampleTimeoutGui 289 | SimpleConfigGui=org.apache.jmeter.config.gui.SimpleConfigGui 290 | SimpleDataWriter=org.apache.jmeter.visualizers.SimpleDataWriter 291 | SizeAssertion=org.apache.jmeter.assertions.SizeAssertion 292 | SizeAssertionGui=org.apache.jmeter.assertions.gui.SizeAssertionGui 293 | SMIMEAssertion=org.apache.jmeter.assertions.SMIMEAssertionTestElement 294 | SMIMEAssertionGui=org.apache.jmeter.assertions.gui.SMIMEAssertionGui 295 | SmtpSampler=org.apache.jmeter.protocol.smtp.sampler.SmtpSampler 296 | SmtpSamplerGui=org.apache.jmeter.protocol.smtp.sampler.gui.SmtpSamplerGui 297 | 298 | # removed in 3.2, class was deleted in r 299 | SoapSampler=org.apache.jmeter.protocol.http.sampler.SoapSampler 300 | # removed in 3.2, class was deleted in r 301 | SoapSamplerGui=org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui 302 | 303 | # removed in 3.1, class was deleted in r1763837 304 | SplineVisualizer=org.apache.jmeter.visualizers.SplineVisualizer 305 | # Originally deleted in r397955 as class is obsolete; needed for compat. 306 | SqlConfigGui=org.apache.jmeter.protocol.jdbc.config.gui.SqlConfigGui 307 | StaticHost=org.apache.jmeter.protocol.http.control.StaticHost 308 | StatGraphVisualizer=org.apache.jmeter.visualizers.StatGraphVisualizer 309 | StatVisualizer=org.apache.jmeter.visualizers.StatVisualizer 310 | SubscriberSampler=org.apache.jmeter.protocol.jms.sampler.SubscriberSampler 311 | SubstitutionElement=org.apache.jmeter.assertions.SubstitutionElement 312 | Summariser=org.apache.jmeter.reporters.Summariser 313 | SummariserGui=org.apache.jmeter.reporters.gui.SummariserGui 314 | SummaryReport=org.apache.jmeter.visualizers.SummaryReport 315 | SwitchController=org.apache.jmeter.control.SwitchController 316 | SwitchControllerGui=org.apache.jmeter.control.gui.SwitchControllerGui 317 | SyncTimer=org.apache.jmeter.timers.SyncTimer 318 | SystemSampler=org.apache.jmeter.protocol.system.SystemSampler 319 | SystemSamplerGui=org.apache.jmeter.protocol.system.gui.SystemSamplerGui 320 | TableVisualizer=org.apache.jmeter.visualizers.TableVisualizer 321 | TCPConfigGui=org.apache.jmeter.protocol.tcp.config.gui.TCPConfigGui 322 | TCPSampler=org.apache.jmeter.protocol.tcp.sampler.TCPSampler 323 | TCPSamplerGui=org.apache.jmeter.protocol.tcp.control.gui.TCPSamplerGui 324 | TestAction=org.apache.jmeter.sampler.TestAction 325 | TestActionGui=org.apache.jmeter.sampler.gui.TestActionGui 326 | TestBeanGUI=org.apache.jmeter.testbeans.gui.TestBeanGUI 327 | TestFragmentController=org.apache.jmeter.control.TestFragmentController 328 | TestFragmentControllerGui=org.apache.jmeter.control.gui.TestFragmentControllerGui 329 | TestPlan=org.apache.jmeter.testelement.TestPlan 330 | TestPlanGui=org.apache.jmeter.control.gui.TestPlanGui 331 | ThreadGroup=org.apache.jmeter.threads.ThreadGroup 332 | ThreadGroupGui=org.apache.jmeter.threads.gui.ThreadGroupGui 333 | PostThreadGroup=org.apache.jmeter.threads.PostThreadGroup 334 | PostThreadGroupGui=org.apache.jmeter.threads.gui.PostThreadGroupGui 335 | SetupThreadGroup=org.apache.jmeter.threads.SetupThreadGroup 336 | SetupThreadGroupGui=org.apache.jmeter.threads.gui.SetupThreadGroupGui 337 | ThroughputController=org.apache.jmeter.control.ThroughputController 338 | ThroughputControllerGui=org.apache.jmeter.control.gui.ThroughputControllerGui 339 | TransactionController=org.apache.jmeter.control.TransactionController 340 | TransactionControllerGui=org.apache.jmeter.control.gui.TransactionControllerGui 341 | TransactionSampler=org.apache.jmeter.control.TransactionSampler 342 | UniformRandomTimer=org.apache.jmeter.timers.UniformRandomTimer 343 | UniformRandomTimerGui=org.apache.jmeter.timers.gui.UniformRandomTimerGui 344 | URLRewritingModifier=org.apache.jmeter.protocol.http.modifier.URLRewritingModifier 345 | URLRewritingModifierGui=org.apache.jmeter.protocol.http.modifier.gui.URLRewritingModifierGui 346 | UserParameterModifier=org.apache.jmeter.protocol.http.modifier.UserParameterModifier 347 | UserParameterModifierGui=org.apache.jmeter.protocol.http.modifier.gui.UserParameterModifierGui 348 | UserParameters=org.apache.jmeter.modifiers.UserParameters 349 | UserParametersGui=org.apache.jmeter.modifiers.gui.UserParametersGui 350 | ViewResultsFullVisualizer=org.apache.jmeter.visualizers.ViewResultsFullVisualizer 351 | # removed in 3.0, class was deleted in r1722757 352 | WebServiceSampler=org.apache.jmeter.protocol.http.sampler.WebServiceSampler 353 | # removed in 3.0, class was deleted in r1722757 354 | WebServiceSamplerGui=org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui 355 | WhileController=org.apache.jmeter.control.WhileController 356 | WhileControllerGui=org.apache.jmeter.control.gui.WhileControllerGui 357 | WorkBench=org.apache.jmeter.testelement.WorkBench 358 | WorkBenchGui=org.apache.jmeter.control.gui.WorkBenchGui 359 | XMLAssertion=org.apache.jmeter.assertions.XMLAssertion 360 | XMLAssertionGui=org.apache.jmeter.assertions.gui.XMLAssertionGui 361 | XMLSchemaAssertion=org.apache.jmeter.assertions.XMLSchemaAssertion 362 | XMLSchemaAssertionGUI=org.apache.jmeter.assertions.gui.XMLSchemaAssertionGUI 363 | XPathAssertion=org.apache.jmeter.assertions.XPathAssertion 364 | XPathAssertionGui=org.apache.jmeter.assertions.gui.XPathAssertionGui 365 | XPathExtractor=org.apache.jmeter.extractor.XPathExtractor 366 | XPathExtractorGui=org.apache.jmeter.extractor.gui.XPathExtractorGui 367 | # 368 | # Properties - all start with lower case letter and end with Prop 369 | # 370 | boolProp=org.apache.jmeter.testelement.property.BooleanProperty 371 | collectionProp=org.apache.jmeter.testelement.property.CollectionProperty 372 | doubleProp=org.apache.jmeter.testelement.property.DoubleProperty 373 | elementProp=org.apache.jmeter.testelement.property.TestElementProperty 374 | # see above - already defined as FloatProperty 375 | #floatProp=org.apache.jmeter.testelement.property.FloatProperty 376 | intProp=org.apache.jmeter.testelement.property.IntegerProperty 377 | longProp=org.apache.jmeter.testelement.property.LongProperty 378 | mapProp=org.apache.jmeter.testelement.property.MapProperty 379 | objProp=org.apache.jmeter.testelement.property.ObjectProperty 380 | stringProp=org.apache.jmeter.testelement.property.StringProperty 381 | # 382 | # Other - must start with a lower case letter (and not end with Prop) 383 | # (otherwise they could clash with the initial set of aliases) 384 | # 385 | hashTree=org.apache.jorphan.collections.ListedHashTree 386 | jmeterTestPlan=org.apache.jmeter.save.ScriptWrapper 387 | sample=org.apache.jmeter.samplers.SampleResult 388 | httpSample=org.apache.jmeter.protocol.http.sampler.HTTPSampleResult 389 | statSample=org.apache.jmeter.samplers.StatisticalSampleResult 390 | testResults=org.apache.jmeter.save.TestResultWrapper 391 | assertionResult=org.apache.jmeter.assertions.AssertionResult 392 | 393 | # removed in 3.2, class was deleted in r 394 | monitorStats=org.apache.jmeter.visualizers.MonitorStats 395 | sampleEvent=org.apache.jmeter.samplers.SampleEvent 396 | # 397 | # Converters to register. Must start line with '_' 398 | # If the converter is a collection of subitems, set equal to "collection" 399 | # If the converter needs to know the class mappings but is not a collection of 400 | # subitems, set it equal to "mapping" 401 | _org.apache.jmeter.protocol.http.sampler.HTTPSamplerBaseConverter=collection 402 | _org.apache.jmeter.protocol.http.util.HTTPResultConverter=collection 403 | _org.apache.jmeter.save.converters.BooleanPropertyConverter= 404 | _org.apache.jmeter.save.converters.IntegerPropertyConverter= 405 | _org.apache.jmeter.save.converters.LongPropertyConverter= 406 | _org.apache.jmeter.save.converters.MultiPropertyConverter=collection 407 | _org.apache.jmeter.save.converters.SampleEventConverter= 408 | _org.apache.jmeter.save.converters.SampleResultConverter=collection 409 | _org.apache.jmeter.save.converters.SampleSaveConfigurationConverter=collection 410 | _org.apache.jmeter.save.converters.StringPropertyConverter= 411 | _org.apache.jmeter.save.converters.HashTreeConverter=collection 412 | _org.apache.jmeter.save.converters.TestElementConverter=collection 413 | _org.apache.jmeter.save.converters.TestElementPropertyConverter=collection 414 | _org.apache.jmeter.save.converters.TestResultWrapperConverter=collection 415 | _org.apache.jmeter.save.ScriptWrapperConverter=mapping 416 | # 417 | # Remember to update the _version entry 418 | # 419 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/exception/InvalidArgumentsException.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.exception; 2 | 3 | public class InvalidArgumentsException extends Exception { 4 | public InvalidArgumentsException() { 5 | super("Needs 2 args -- Postman collection json filepath and Jmx output file path!"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/exception/NoPostmanCollectionItemException.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.exception; 2 | 3 | public class NoPostmanCollectionItemException extends Exception { 4 | public NoPostmanCollectionItemException() { 5 | super("There is no postman collection item! Please ensure that your postman file has been exported as Collection v2 or v2.1"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/exception/NullPostmanCollectionException.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.exception; 2 | 3 | public class NullPostmanCollectionException extends Exception { 4 | public NullPostmanCollectionException() { 5 | super("Postman collection model can not be null! Please ensure that your postman file has been exported as Collection v2 or v2.1"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/exception/UnsupportedJmxFileBuilderException.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.exception; 2 | 3 | public class UnsupportedJmxFileBuilderException extends Exception { 4 | public UnsupportedJmxFileBuilderException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/deserializer/ExecDeserializer.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.deserializer; 2 | 3 | import com.fasterxml.jackson.core.JsonParser; 4 | import com.fasterxml.jackson.core.JsonProcessingException; 5 | import com.fasterxml.jackson.core.JsonToken; 6 | import com.fasterxml.jackson.databind.DeserializationContext; 7 | import com.fasterxml.jackson.databind.JsonDeserializer; 8 | import com.fasterxml.jackson.databind.ObjectMapper; 9 | 10 | import java.io.IOException; 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | public class ExecDeserializer extends JsonDeserializer { 15 | 16 | public ExecDeserializer() {} 17 | 18 | @Override 19 | public ExecDeserializer.ExecData deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { 20 | ExecDeserializer.ExecData execData = new ExecDeserializer.ExecData(); 21 | if (jsonParser.getCurrentToken() == JsonToken.VALUE_STRING) { 22 | execData.addValue(jsonParser.getValueAsString()); 23 | } else if (jsonParser.getCurrentToken() == JsonToken.START_ARRAY) { 24 | ObjectMapper mapper = new ObjectMapper(); 25 | List values = mapper.readValue(jsonParser, List.class); 26 | execData.setValues(values); 27 | 28 | } 29 | return execData; 30 | } 31 | 32 | public class ExecData { 33 | private List values = new ArrayList<>(); 34 | 35 | public void addValue(String value) { 36 | this.values.add(value); 37 | } 38 | 39 | public List getValues() { 40 | return this.values; 41 | } 42 | 43 | public void setValues(List values) { 44 | this.values.addAll(values); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxCookieManager.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import org.apache.jmeter.protocol.http.control.CookieManager; 4 | import org.apache.jmeter.protocol.http.gui.CookiePanel; 5 | import org.apache.jmeter.testelement.TestElement; 6 | 7 | public class JmxCookieManager { 8 | public static CookieManager newInstance() { 9 | CookieManager cookieManager = new CookieManager(); 10 | cookieManager.setProperty(TestElement.GUI_CLASS, CookiePanel.class.getName()); 11 | cookieManager.setProperty(TestElement.TEST_CLASS, CookieManager.class.getName()); 12 | cookieManager.setName("Cookie Manager"); 13 | cookieManager.setEnabled(true); 14 | return cookieManager; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxFile.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import org.apache.jorphan.collections.HashTree; 4 | 5 | public class JmxFile { 6 | byte[] data; 7 | HashTree jmxTree; 8 | 9 | public JmxFile(byte[] data, HashTree jmxTree) { 10 | this.data = data; 11 | this.jmxTree = jmxTree; 12 | } 13 | 14 | public byte[] getData() { 15 | return data; 16 | } 17 | 18 | public void setData(byte[] data) { 19 | this.data = data; 20 | } 21 | 22 | public HashTree getJmxTree() { 23 | return jmxTree; 24 | } 25 | 26 | public void setJmxTree(HashTree jmxTree) { 27 | this.jmxTree = jmxTree; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxHTTPSamplerProxy.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanItem; 4 | import com.loadium.postman2jmx.model.postman.PostmanQuery; 5 | import com.loadium.postman2jmx.utils.UrlUtils; 6 | import org.apache.jmeter.config.Arguments; 7 | import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui; 8 | import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; 9 | import org.apache.jmeter.protocol.http.util.HTTPArgument; 10 | import org.apache.jmeter.testelement.TestElement; 11 | 12 | import java.net.MalformedURLException; 13 | import java.net.URL; 14 | 15 | public class JmxHTTPSamplerProxy { 16 | public static HTTPSamplerProxy newInstance(PostmanItem postmanItem) { 17 | HTTPSamplerProxy httpSamplerProxy = new HTTPSamplerProxy(); 18 | httpSamplerProxy.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName()); 19 | httpSamplerProxy.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName()); 20 | httpSamplerProxy.setName(postmanItem.getName()); 21 | httpSamplerProxy.setEnabled(true); 22 | httpSamplerProxy.setAutoRedirects(false); 23 | httpSamplerProxy.setFollowRedirects(true); 24 | httpSamplerProxy.setUseKeepAlive(true); 25 | httpSamplerProxy.setMonitor(false); 26 | httpSamplerProxy.setDoMultipartPost(false); 27 | httpSamplerProxy.setComment(""); 28 | httpSamplerProxy.setConnectTimeout(""); 29 | httpSamplerProxy.setResponseTimeout(""); 30 | httpSamplerProxy.setEmbeddedUrlRE(""); 31 | httpSamplerProxy.setContentEncoding(""); 32 | httpSamplerProxy.setMethod(postmanItem.getRequest().getMethod()); 33 | 34 | 35 | String rawUrl = postmanItem.getRequest().getUrl().getRaw(); 36 | 37 | if (UrlUtils.isVariableUrl(rawUrl)) { 38 | String url = UrlUtils.getVariableUrl(rawUrl); 39 | String path = UrlUtils.getVariablePath(rawUrl); 40 | String protocol = UrlUtils.getVariableProtocol(rawUrl); 41 | int port = UrlUtils.getVariablePort(rawUrl); 42 | 43 | if (port != -1) { 44 | httpSamplerProxy.setPort(port); 45 | } 46 | if (protocol != null) { 47 | httpSamplerProxy.setProtocol(protocol); 48 | } 49 | httpSamplerProxy.setDomain(url); 50 | httpSamplerProxy.setPath(path); 51 | } else { 52 | URL url = null; 53 | 54 | try { 55 | url = UrlUtils.getUrl(rawUrl); 56 | } catch (MalformedURLException e) { 57 | e.printStackTrace(); 58 | } 59 | 60 | String domain = UrlUtils.getDomain(url); 61 | int port = UrlUtils.getPort(url); 62 | String path = UrlUtils.getPath(url); 63 | String protocol = UrlUtils.getProtocol(url); 64 | 65 | httpSamplerProxy.setDomain(domain); 66 | httpSamplerProxy.setPath(path); 67 | 68 | if (port != -1) { 69 | httpSamplerProxy.setPort(port); 70 | } 71 | httpSamplerProxy.setProtocol(protocol); 72 | } 73 | 74 | 75 | Arguments arguments = new Arguments(); 76 | HTTPArgument argument; 77 | 78 | 79 | for (PostmanQuery query : postmanItem.getRequest().getUrl().getQueries()) { 80 | argument = new HTTPArgument(); 81 | argument.setName(query.getKey()); 82 | argument.setValue(query.getValue()); 83 | argument.setDescription(query.getKey()); 84 | argument.setEnabled(true); 85 | argument.setMetaData("="); 86 | argument.setAlwaysEncoded(false); 87 | argument.setUseEquals(true); 88 | arguments.addArgument(argument); 89 | } 90 | httpSamplerProxy.setArguments(arguments); 91 | 92 | return httpSamplerProxy; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxHeaderManager.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanHeader; 4 | import org.apache.jmeter.protocol.http.control.Header; 5 | import org.apache.jmeter.protocol.http.control.HeaderManager; 6 | import org.apache.jmeter.protocol.http.gui.HeaderPanel; 7 | import org.apache.jmeter.testelement.TestElement; 8 | 9 | import java.util.List; 10 | 11 | public class JmxHeaderManager { 12 | public static HeaderManager newInstance(List headers) { 13 | HeaderManager headerManager = new HeaderManager(); 14 | headerManager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName()); 15 | headerManager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName()); 16 | headerManager.setEnabled(true); 17 | headerManager.setName("HTTP Header Manager"); 18 | 19 | for (PostmanHeader header : headers) { 20 | 21 | headerManager.add(new Header(header.getKey(), header.getValue())); 22 | } 23 | 24 | return headerManager; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxJsonPostProcessor.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanEvent; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import org.apache.jmeter.extractor.json.jsonpath.JSONPostProcessor; 6 | import org.apache.jmeter.extractor.json.jsonpath.gui.JSONPostProcessorGui; 7 | import org.apache.jmeter.testelement.TestElement; 8 | import org.slf4j.Logger; 9 | import org.slf4j.LoggerFactory; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | import java.util.regex.Matcher; 14 | import java.util.regex.Pattern; 15 | 16 | public class JmxJsonPostProcessor { 17 | public static String FULL_RESPONSE_PATTERN = "responseBody"; 18 | public static String CHILD_ELEMENT_PATTERN = "^(\\w+)\\.?(.*)$"; 19 | 20 | private static Logger logger = LoggerFactory.getLogger(JmxJsonPostProcessor.class.getName()); 21 | 22 | public static JSONPostProcessor newInstance(String name, String jsonPathExpression) { 23 | JSONPostProcessor jsonPostProcessor = new JSONPostProcessor(); 24 | jsonPostProcessor.setProperty(TestElement.GUI_CLASS, JSONPostProcessorGui.class.getName()); 25 | jsonPostProcessor.setProperty(TestElement.TEST_CLASS, JSONPostProcessor.class.getName()); 26 | jsonPostProcessor.setEnabled(true); 27 | jsonPostProcessor.setName(name); 28 | jsonPostProcessor.setMatchNumbers("0"); 29 | jsonPostProcessor.setRefNames(name); 30 | jsonPostProcessor.setJsonPathExpressions(jsonPathExpression); 31 | 32 | return jsonPostProcessor; 33 | } 34 | 35 | private static List getInstances(List variables, List varValues) { 36 | List jsonPostProcessors = new ArrayList<>(); 37 | if (variables.size()!=varValues.size()) { 38 | logger.error("List of variables does not match the length of its values!"); 39 | } 40 | for (int i=0; i getJsonPostProcessors(PostmanItem postmanItem) { 54 | List jsonPostProcessors = new ArrayList<>(); 55 | for (PostmanEvent event : postmanItem.getEvents()) { 56 | jsonPostProcessors.addAll(JmxJsonPostProcessor.getInstances(event.getVariables(), event.getVariableValues())); 57 | } 58 | return jsonPostProcessors; 59 | } 60 | 61 | public static String getPathExpression(String postmanExpr) { 62 | Matcher m; 63 | m = Pattern.compile(FULL_RESPONSE_PATTERN).matcher(postmanExpr); 64 | if (m.find()) { 65 | return "$"; 66 | } 67 | m = Pattern.compile(CHILD_ELEMENT_PATTERN).matcher(postmanExpr); 68 | if (m.find()) { 69 | return m.group(2); 70 | } 71 | logger.warn("No pattern for Postman variable assignment found - skip proper translation..."); 72 | return postmanExpr.replace("\"", ""); // TODO: fallback only - should not happen! 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxLoopController.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import org.apache.jmeter.control.LoopController; 4 | import org.apache.jmeter.control.gui.LoopControlPanel; 5 | import org.apache.jmeter.testelement.TestElement; 6 | 7 | public class JmxLoopController { 8 | 9 | public static LoopController newInstance() { 10 | LoopController loopController = new LoopController(); 11 | loopController.setEnabled(true); 12 | loopController.setLoops(1); 13 | loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName()); 14 | loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName()); 15 | 16 | return loopController; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxTestPlan.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import org.apache.jmeter.config.Arguments; 4 | import org.apache.jmeter.control.gui.TestPlanGui; 5 | import org.apache.jmeter.testelement.TestElement; 6 | import org.apache.jmeter.testelement.TestPlan; 7 | 8 | public class JmxTestPlan { 9 | 10 | public static TestPlan newInstance(String name) { 11 | TestPlan testPlan = new TestPlan(); 12 | testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName()); 13 | testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName()); 14 | testPlan.setName(name); 15 | testPlan.setEnabled(true); 16 | testPlan.setFunctionalMode(false); 17 | testPlan.setComment(""); 18 | testPlan.setSerialized(false); 19 | testPlan.setTestPlanClasspath(""); 20 | testPlan.setUserDefinedVariables(new Arguments()); 21 | return testPlan; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/jmx/JmxThreadGroup.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.jmx; 2 | 3 | import org.apache.jmeter.control.LoopController; 4 | import org.apache.jmeter.testelement.TestElement; 5 | import org.apache.jmeter.testelement.property.JMeterProperty; 6 | import org.apache.jmeter.threads.ThreadGroup; 7 | import org.apache.jmeter.threads.gui.ThreadGroupGui; 8 | 9 | public class JmxThreadGroup { 10 | 11 | public static ThreadGroup newInstance(LoopController loopController) { 12 | ThreadGroup threadGroup = new ThreadGroup(); 13 | threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName()); 14 | threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName()); 15 | threadGroup.setName("Http URL/API Test"); 16 | threadGroup.setEnabled(true); 17 | threadGroup.setSamplerController(loopController); 18 | threadGroup.setNumThreads(1); 19 | threadGroup.setRampUp(1); 20 | threadGroup.setScheduler(false); 21 | threadGroup.setDuration(0); 22 | threadGroup.setDelay(0); 23 | threadGroup.setComment(""); 24 | threadGroup.setProperty(ThreadGroup.ON_SAMPLE_ERROR, "continue"); 25 | return threadGroup; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanBody.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.loadium.postman2jmx.utils.ResponseBodyMode; 6 | import com.loadium.postman2jmx.utils.ValueUtils; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | public class PostmanBody { 13 | 14 | @JsonProperty("mode") 15 | private String mode = ResponseBodyMode.EMPTY.getMode(); 16 | 17 | @JsonProperty("file") 18 | private PostmanFileBody file; 19 | 20 | @JsonProperty("urlencoded") 21 | private List urlEncodes = new ArrayList<>(); 22 | 23 | @JsonProperty("raw") 24 | private PostmanRawBody raw; 25 | 26 | @JsonProperty("formdata") 27 | private List formDataList = new ArrayList<>(); 28 | 29 | 30 | public PostmanBody() { 31 | } 32 | 33 | public String getMode() { 34 | return mode; 35 | } 36 | 37 | public void setMode(String mode) { 38 | this.mode = mode; 39 | } 40 | 41 | public PostmanFileBody getFile() { 42 | return file; 43 | } 44 | 45 | public void setFile(PostmanFileBody file) { 46 | this.file = file; 47 | } 48 | 49 | public List getUrlEncodes() { 50 | return urlEncodes; 51 | } 52 | 53 | public void setUrlEncodes(List urlEncodes) { 54 | this.urlEncodes = urlEncodes; 55 | } 56 | 57 | public PostmanRawBody getRaw() { 58 | return raw; 59 | } 60 | 61 | public void setRaw(PostmanRawBody raw) { 62 | this.raw = raw; 63 | this.raw.setValue(ValueUtils.value(raw.getValue())); 64 | } 65 | 66 | public List getFormDataList() { 67 | return formDataList; 68 | } 69 | 70 | public void setFormDataList(List formDataList) { 71 | this.formDataList = formDataList; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanCollection.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class PostmanCollection { 11 | 12 | @JsonProperty("item") 13 | private List items = new ArrayList<>(); 14 | 15 | @JsonProperty("info") 16 | private PostmanInfo info; 17 | 18 | public PostmanCollection() { 19 | } 20 | 21 | public PostmanCollection(List items, PostmanInfo info) { 22 | this.items = items; 23 | this.info = info; 24 | } 25 | 26 | public List getItems() { 27 | return items; 28 | } 29 | 30 | public void setItems(List items) { 31 | this.items = items; 32 | } 33 | 34 | public PostmanInfo getInfo() { 35 | return info; 36 | } 37 | 38 | public void setInfo(PostmanInfo info) { 39 | this.info = info; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanEvent.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 | import com.fasterxml.jackson.annotation.JsonProperty; 6 | import com.loadium.postman2jmx.utils.ValueUtils; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | import java.util.Map; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class PostmanEvent { 14 | 15 | @JsonProperty("listen") 16 | private String listen; 17 | 18 | @JsonProperty("script") 19 | private PostmanScript script; 20 | 21 | @JsonIgnore 22 | private List variables = new ArrayList<>(); 23 | 24 | @JsonIgnore 25 | private List variableValues = new ArrayList<>(); 26 | 27 | public PostmanEvent() { 28 | } 29 | 30 | public PostmanEvent(String listen, PostmanScript script) { 31 | this.listen = listen; 32 | setScript(script); 33 | } 34 | 35 | public String getListen() { 36 | return listen; 37 | } 38 | 39 | public void setListen(String listen) { 40 | this.listen = listen; 41 | } 42 | 43 | public PostmanScript getScript() { 44 | return script; 45 | } 46 | 47 | public void setScript(PostmanScript script) { 48 | this.script = script; 49 | Map varMappings = ValueUtils.extractVariablesWithValues(script.getExec()); 50 | varMappings.forEach((variable, value) -> { 51 | this.variables.add(variable); 52 | this.variableValues.add(value); 53 | }); 54 | 55 | } 56 | 57 | public List getVariables() { 58 | return variables; 59 | } 60 | 61 | public List getVariableValues() { 62 | return variableValues; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanFileBody.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | 6 | @JsonIgnoreProperties(ignoreUnknown = true) 7 | public class PostmanFileBody { 8 | 9 | @JsonProperty("src") 10 | private String src; 11 | 12 | public PostmanFileBody() { 13 | } 14 | 15 | public PostmanFileBody(String src) { 16 | this.src = src; 17 | } 18 | 19 | public String getSrc() { 20 | return src; 21 | } 22 | 23 | public void setSrc(String src) { 24 | this.src = src; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanFormDataBody.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.loadium.postman2jmx.utils.ValueUtils; 6 | 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class PostmanFormDataBody { 9 | 10 | @JsonProperty("key") 11 | private String key; 12 | 13 | @JsonProperty("value") 14 | private String value; 15 | 16 | @JsonProperty("description") 17 | private String description; 18 | 19 | @JsonProperty("type") 20 | private String type; 21 | 22 | public PostmanFormDataBody() { 23 | } 24 | 25 | public PostmanFormDataBody(String key, String value, String description, String type) { 26 | this.key = key; 27 | this.value = value; 28 | this.description = description; 29 | this.type = type; 30 | } 31 | 32 | public String getKey() { 33 | return key; 34 | } 35 | 36 | public void setKey(String key) { 37 | this.key = key; 38 | } 39 | 40 | public String getValue() { 41 | return value; 42 | } 43 | 44 | public void setValue(String value) { 45 | this.value = ValueUtils.value(value); 46 | } 47 | 48 | public String getDescription() { 49 | return description; 50 | } 51 | 52 | public void setDescription(String description) { 53 | this.description = description; 54 | } 55 | 56 | public String getType() { 57 | return type; 58 | } 59 | 60 | public void setType(String type) { 61 | this.type = type; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanHeader.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.loadium.postman2jmx.utils.ValueUtils; 6 | 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class PostmanHeader { 9 | 10 | @JsonProperty("key") 11 | private String key; 12 | 13 | @JsonProperty("value") 14 | private String value; 15 | 16 | public PostmanHeader() { 17 | } 18 | 19 | public PostmanHeader(String key, String value) { 20 | this.key = key; 21 | this.value = value; 22 | } 23 | 24 | public String getKey() { 25 | return key; 26 | } 27 | 28 | public void setKey(String key) { 29 | this.key = ValueUtils.value(key); 30 | } 31 | 32 | public String getValue() { 33 | return value; 34 | } 35 | 36 | public void setValue(String value) { 37 | this.value = ValueUtils.value(value); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanInfo.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 | import com.fasterxml.jackson.annotation.JsonProperty; 6 | 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class PostmanInfo { 9 | 10 | @JsonProperty("name") 11 | private String name; 12 | 13 | @JsonProperty("_postman_id") 14 | private String postmanId; 15 | 16 | @JsonProperty("description") 17 | private String description; 18 | 19 | @JsonProperty("schema") 20 | private String schema; 21 | 22 | public PostmanInfo() { 23 | } 24 | 25 | public PostmanInfo(String name, String postmanId, String description, String schema) { 26 | this.name = name; 27 | this.postmanId = postmanId; 28 | this.description = description; 29 | this.schema = schema; 30 | } 31 | 32 | public String getName() { 33 | return name; 34 | } 35 | 36 | public void setName(String name) { 37 | this.name = name; 38 | } 39 | 40 | public String getPostmanId() { 41 | return postmanId; 42 | } 43 | 44 | public void setPostmanId(String postmanId) { 45 | this.postmanId = postmanId; 46 | } 47 | 48 | public String getDescription() { 49 | return description; 50 | } 51 | 52 | public void setDescription(String description) { 53 | this.description = description; 54 | } 55 | 56 | public String getSchema() { 57 | return schema; 58 | } 59 | 60 | public void setSchema(String schema) { 61 | this.schema = schema; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanItem.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.loadium.postman2jmx.utils.ValueUtils; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | @JsonIgnoreProperties(ignoreUnknown = true) 11 | public class PostmanItem implements Comparable { 12 | 13 | @JsonProperty("item") 14 | List items = new ArrayList<>(); 15 | 16 | @JsonProperty("name") 17 | private String name; 18 | 19 | @JsonProperty("request") 20 | private PostmanRequest request; 21 | 22 | @JsonProperty("event") 23 | private List events = new ArrayList<>(); 24 | 25 | public PostmanItem() { 26 | } 27 | 28 | public PostmanItem(String name, PostmanRequest request, List events) { 29 | this.name = name; 30 | this.request = request; 31 | this.events = events; 32 | } 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setName(String name) { 39 | this.name = ValueUtils.value(name); 40 | } 41 | 42 | public PostmanRequest getRequest() { 43 | return request; 44 | } 45 | 46 | public void setRequest(PostmanRequest request) { 47 | this.request = request; 48 | } 49 | 50 | public List getItems() { 51 | return items; 52 | } 53 | 54 | public void setItems(List items) { 55 | this.items = items; 56 | } 57 | 58 | public List getEvents() { 59 | return events; 60 | } 61 | 62 | public void setEvents(List events) { 63 | this.events = events; 64 | } 65 | 66 | @Override 67 | public int compareTo(PostmanItem o) { 68 | return this.name.compareTo(o.name); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanQuery.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.loadium.postman2jmx.utils.ValueUtils; 5 | 6 | @JsonIgnoreProperties(ignoreUnknown = true) 7 | public class PostmanQuery { 8 | private String key; 9 | private String value; 10 | private String description; 11 | private String disabled; 12 | 13 | 14 | public PostmanQuery() { 15 | } 16 | 17 | public String getKey() { 18 | return key; 19 | } 20 | 21 | public void setKey(String key) { 22 | this.key = ValueUtils.value(key); 23 | } 24 | 25 | public String getValue() { 26 | return value; 27 | } 28 | 29 | public void setValue(String value) { 30 | this.value = ValueUtils.value(value); 31 | } 32 | 33 | public String getDescription() { 34 | return description; 35 | } 36 | 37 | public void setDescription(String description) { 38 | this.description = description; 39 | } 40 | 41 | public String getDisabled() { 42 | return disabled; 43 | } 44 | 45 | public void setDisabled(String disabled) { 46 | this.disabled = disabled; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanRawBody.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.loadium.postman2jmx.utils.ValueUtils; 5 | 6 | @JsonIgnoreProperties(ignoreUnknown = true) 7 | public class PostmanRawBody { 8 | 9 | private String value; 10 | 11 | public PostmanRawBody() { 12 | } 13 | 14 | public PostmanRawBody(String value) { 15 | this.value = value; 16 | } 17 | 18 | public String getValue() { 19 | return value; 20 | } 21 | 22 | public void setValue(String value) { 23 | this.value = ValueUtils.value(value); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanRequest.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class PostmanRequest { 11 | 12 | @JsonProperty("url") 13 | private PostmanUrl url; 14 | 15 | @JsonProperty("method") 16 | private String method; 17 | 18 | @JsonProperty("header") 19 | private List headers = new ArrayList<>(); 20 | 21 | @JsonProperty("body") 22 | private PostmanBody body; 23 | 24 | @JsonProperty("description") 25 | private String description; 26 | 27 | public PostmanRequest() { 28 | } 29 | 30 | public List getHeaders() { 31 | return headers; 32 | } 33 | 34 | public void setHeaders(List headers) { 35 | this.headers = headers; 36 | } 37 | 38 | public PostmanBody getBody() { 39 | return body; 40 | } 41 | 42 | public void setBody(PostmanBody body) { 43 | this.body = body; 44 | } 45 | 46 | public String getDescription() { 47 | return description; 48 | } 49 | 50 | public void setDescription(String description) { 51 | this.description = description; 52 | } 53 | 54 | public PostmanUrl getUrl() { 55 | return url; 56 | } 57 | 58 | public void setUrl(PostmanUrl url) { 59 | this.url = url; 60 | } 61 | 62 | public String getMethod() { 63 | return method; 64 | } 65 | 66 | public void setMethod(String method) { 67 | this.method = method; 68 | } 69 | 70 | 71 | } 72 | 73 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanScript.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.core.JsonParser; 6 | import com.fasterxml.jackson.core.JsonProcessingException; 7 | import com.fasterxml.jackson.core.JsonToken; 8 | import com.fasterxml.jackson.databind.DeserializationContext; 9 | import com.fasterxml.jackson.databind.JsonDeserializer; 10 | import com.fasterxml.jackson.databind.ObjectMapper; 11 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 12 | import com.loadium.postman2jmx.model.deserializer.ExecDeserializer; 13 | 14 | import java.io.IOException; 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | 18 | @JsonIgnoreProperties(ignoreUnknown = true) 19 | public class PostmanScript { 20 | 21 | @JsonProperty("type") 22 | private String type; 23 | 24 | @JsonProperty("exec") 25 | private List execs = new ArrayList<>(); 26 | 27 | public PostmanScript() { 28 | } 29 | 30 | public PostmanScript(String type, List execs) { 31 | this.type = type; 32 | this.execs = execs; 33 | } 34 | 35 | public String getType() { 36 | return type; 37 | } 38 | 39 | public void setType(String type) { 40 | this.type = type; 41 | } 42 | 43 | public List getExec() { 44 | return execs; 45 | } 46 | 47 | public void setExec(List execs) { 48 | this.execs = execs; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanUrl.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.loadium.postman2jmx.utils.ValueUtils; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | @JsonIgnoreProperties(ignoreUnknown = true) 11 | public class PostmanUrl { 12 | 13 | @JsonProperty("raw") 14 | private String raw; 15 | 16 | @JsonProperty("query") 17 | private List queries = new ArrayList<>(); 18 | 19 | public PostmanUrl() { 20 | } 21 | 22 | public PostmanUrl(String raw) { 23 | this.raw = ValueUtils.value(raw); 24 | } 25 | 26 | public String getRaw() { 27 | return raw; 28 | } 29 | 30 | public void setRaw(String raw) { 31 | this.raw = ValueUtils.value(raw); 32 | } 33 | 34 | public List getQueries() { 35 | return queries; 36 | } 37 | 38 | public void setQueries(List queries) { 39 | this.queries = queries; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/model/postman/PostmanUrlEncodedBody.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.model.postman; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.loadium.postman2jmx.utils.ValueUtils; 6 | 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class PostmanUrlEncodedBody { 9 | 10 | @JsonProperty("key") 11 | private String key; 12 | 13 | @JsonProperty("value") 14 | private String value; 15 | 16 | @JsonProperty("description") 17 | private String description; 18 | 19 | @JsonProperty("type") 20 | private String type; 21 | 22 | public PostmanUrlEncodedBody() { 23 | } 24 | 25 | public PostmanUrlEncodedBody(String key, String value, String description, String type) { 26 | this.key = key; 27 | this.value = value; 28 | this.description = description; 29 | this.type = type; 30 | } 31 | 32 | public String getKey() { 33 | return key; 34 | } 35 | 36 | public void setKey(String key) { 37 | this.key = key; 38 | } 39 | 40 | public String getValue() { 41 | return value; 42 | } 43 | 44 | public void setValue(String value) { 45 | this.value = ValueUtils.value(value); 46 | } 47 | 48 | public String getDescription() { 49 | return description; 50 | } 51 | 52 | public void setDescription(String description) { 53 | this.description = description; 54 | } 55 | 56 | public String getType() { 57 | return type; 58 | } 59 | 60 | public void setType(String type) { 61 | this.type = type; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/parser/AbstractParser.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.parser; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 5 | import com.loadium.postman2jmx.model.postman.PostmanItem; 6 | import com.loadium.postman2jmx.utils.PostmanCollectionUtils; 7 | 8 | import java.io.IOException; 9 | import java.io.InputStream; 10 | import java.nio.file.Files; 11 | import java.nio.file.Paths; 12 | import java.util.Collections; 13 | import java.util.List; 14 | 15 | public abstract class AbstractParser implements IParser { 16 | 17 | private ObjectMapper objectMapper; 18 | 19 | public AbstractParser() { 20 | objectMapper = new ObjectMapper(); 21 | } 22 | 23 | protected ObjectMapper getMapper() { 24 | return this.objectMapper; 25 | } 26 | 27 | protected PostmanCollection readValue(String fileName) throws IOException { 28 | byte[] jsonData = Files.readAllBytes(Paths.get(fileName)); 29 | PostmanCollection postmanCollection = getMapper().readValue(jsonData, PostmanCollection.class); 30 | getItems(postmanCollection); 31 | return postmanCollection; 32 | } 33 | 34 | protected PostmanCollection readValue(InputStream is) throws IOException { 35 | PostmanCollection postmanCollection = getMapper().readValue(is, PostmanCollection.class); 36 | getItems(postmanCollection); 37 | return postmanCollection; 38 | } 39 | 40 | protected void getItems(PostmanCollection postmanCollection) { 41 | List items = PostmanCollectionUtils.getItems(postmanCollection); 42 | //Collections.sort(items); 43 | postmanCollection.setItems(items); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/parser/IParser.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.parser; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 4 | 5 | import java.io.IOException; 6 | import java.io.InputStream; 7 | 8 | public interface IParser { 9 | 10 | PostmanCollection parse(String postmanJsonFile) throws IOException; 11 | 12 | PostmanCollection parse(InputStream is) throws IOException; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/parser/ParserFactory.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.parser; 2 | 3 | import com.loadium.postman2jmx.utils.CollectionVersion; 4 | 5 | public class ParserFactory { 6 | 7 | public static IParser getParser(CollectionVersion version) { 8 | if(CollectionVersion.V2 == version) { 9 | return new PostmanParserV2(); 10 | } else { 11 | throw new UnsupportedOperationException(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/parser/PostmanParserV2.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.parser; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import com.loadium.postman2jmx.utils.PostmanCollectionUtils; 6 | 7 | import java.io.IOException; 8 | import java.io.InputStream; 9 | import java.util.List; 10 | 11 | public class PostmanParserV2 extends AbstractParser { 12 | 13 | @Override 14 | public PostmanCollection parse(String postmanJsonFile) throws IOException { 15 | PostmanCollection postmanCollection = readValue(postmanJsonFile); 16 | return postmanCollection; 17 | } 18 | 19 | @Override 20 | public PostmanCollection parse(InputStream is) throws IOException { 21 | PostmanCollection postmanCollection = readValue(is); 22 | return postmanCollection; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/CollectionVersion.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | public enum CollectionVersion { 4 | V2 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/JmxFileAttributesType.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | public enum JmxFileAttributesType { 4 | 5 | HASH_TREE("hashTree"), 6 | HEADER_MANAGER("HeaderManager"), 7 | HTTP_SAMPLER_PROXY("HTTPSamplerProxy"), 8 | HTTP_SAMPLER_DOMAIN("HTTPSampler.domain"), 9 | HTTP_SAMPLER_PORT("HTTPSampler.port"), 10 | HTTP_SAMPLER_PATH("HTTPSampler.path"), 11 | HTTP_SAMPLER_METHOD("HTTPSampler.method"), 12 | HTTP_SAMPLER_ARGUMENTS("HTTPsampler.Arguments"), 13 | ARGUMENT_VALUE("Argument.value"), 14 | NAME("name"), 15 | HTTP_SAMPLER_CONNECT_TIMEOUT("HTTPSampler.connect_timeout"), 16 | HTTP_SAMPLER_RESPONSE_TIMEOUT("HTTPSampler.response_timeout"); 17 | 18 | 19 | String text; 20 | 21 | public String getText() { 22 | return text; 23 | } 24 | 25 | 26 | JmxFileAttributesType(String text) { 27 | this.text = text; 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/PostmanCollectionUtils.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | import com.loadium.postman2jmx.model.postman.PostmanCollection; 4 | import com.loadium.postman2jmx.model.postman.PostmanItem; 5 | import org.apache.commons.lang3.StringUtils; 6 | 7 | import java.util.ArrayList; 8 | import java.util.Calendar; 9 | import java.util.Collections; 10 | import java.util.List; 11 | import java.util.regex.Matcher; 12 | import java.util.regex.Pattern; 13 | 14 | public class PostmanCollectionUtils { 15 | 16 | private static void getItem(PostmanItem item, List itemList) { 17 | if (item.getItems().size() == 0 && item.getRequest() != null) { 18 | itemList.add(item); 19 | } 20 | 21 | for (PostmanItem i : item.getItems()) { 22 | getItem(i, itemList); 23 | } 24 | } 25 | 26 | public static List getItems(PostmanCollection postmanCollection) { 27 | List items = new ArrayList<>(); 28 | 29 | for (PostmanItem item : postmanCollection.getItems()) { 30 | getItem(item, items); 31 | } 32 | return items; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/ResponseBodyMode.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | public enum ResponseBodyMode { 4 | 5 | URL_ENCODED("urlencoded"), 6 | FILE("file"), 7 | RAW("raw"), 8 | FORM_DATA("formdata"), 9 | EMPTY("empty"); 10 | 11 | private String mode; 12 | 13 | ResponseBodyMode(String mode) { 14 | this.mode = mode; 15 | } 16 | 17 | public String getMode(){ 18 | return this.mode; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/TypeUtils.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | import java.util.Collection; 4 | import java.util.Map; 5 | 6 | public class TypeUtils { 7 | 8 | public static boolean isLong(String value) { 9 | if (isEmpty(value)) { 10 | return false; 11 | } 12 | try { 13 | Long.parseLong(value); 14 | } catch (NumberFormatException e) { 15 | return false; 16 | } 17 | return true; 18 | } 19 | 20 | public static boolean isInteger(String value) { 21 | if (isEmpty(value)) { 22 | return false; 23 | } 24 | try { 25 | Integer.parseInt(value); 26 | } catch (NumberFormatException e) { 27 | return false; 28 | } 29 | return true; 30 | } 31 | 32 | public static boolean isEmpty(String value) { 33 | return value == null || "".equals(value); 34 | } 35 | 36 | public static boolean isEmpty(Collection collection) { 37 | return collection == null || collection.size() == 0; 38 | } 39 | 40 | public static boolean isEmpty(Map map) { 41 | return map == null || map.size() == 0; 42 | } 43 | 44 | public static boolean isEmpty(Object[] array) { 45 | return array == null || array.length == 0; 46 | } 47 | 48 | public static boolean isNotEmpty(String value) { 49 | return !isEmpty(value); 50 | } 51 | 52 | public static boolean isNotEmpty(Collection collection) { 53 | return !isEmpty(collection); 54 | } 55 | 56 | public static boolean isNotEmpty(Map map) { 57 | return !isEmpty(map); 58 | } 59 | 60 | public static boolean isNotEmpty(Object[] array) { 61 | return !isEmpty(array); 62 | } 63 | 64 | public static String join(String[] strs, String joinChar) { 65 | if (isNotEmpty(strs) && isNotEmpty(joinChar)) { 66 | String result = ""; 67 | for (String str : strs) { 68 | result += str; 69 | result += joinChar; 70 | } 71 | return result.substring(0, result.length() - joinChar.length()); 72 | } 73 | return ""; 74 | } 75 | 76 | public static String join(Collection strs, String joinChar) { 77 | if (isNotEmpty(strs) && isNotEmpty(joinChar)) { 78 | String result = ""; 79 | for (String str : strs) { 80 | result += str; 81 | result += joinChar; 82 | } 83 | return result.substring(0, result.length() - joinChar.length()); 84 | } 85 | return ""; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/UrlUtils.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | import java.net.MalformedURLException; 4 | import java.net.URL; 5 | import java.util.regex.Matcher; 6 | import java.util.regex.Pattern; 7 | 8 | public class UrlUtils { 9 | private static String URL_VARIABLE_PATTERN = "\\$\\{(.*?)}"; 10 | 11 | private static String URL_PARTITIONS_PATTERN = "^((http[s]?|ftp):\\/)?\\/?([^:\\/\\s]+)(:([^\\/]*))?((\\/?(?:[^\\/\\?#]+\\/+)*)([^\\?#]*))(\\?([^#]*))?(#(.*))?$"; 12 | 13 | private static Pattern pattern = Pattern.compile(URL_VARIABLE_PATTERN); 14 | 15 | private static Pattern urlPartitionPattern = Pattern.compile(URL_PARTITIONS_PATTERN); 16 | 17 | 18 | public static URL getUrl(String httpUrl) throws MalformedURLException { 19 | if (!httpUrl.startsWith("http") && !httpUrl.startsWith("https")) { 20 | httpUrl = "http://" + httpUrl; 21 | } 22 | return new URL(httpUrl); 23 | } 24 | 25 | public static String getDomain(URL url) { 26 | return url.getHost(); 27 | } 28 | 29 | public static String getPath(URL url) { 30 | String path = url.getPath(); 31 | String queryString = url.getQuery(); 32 | 33 | if (TypeUtils.isNotEmpty(queryString)) { 34 | path = path + "?" + queryString; 35 | } 36 | return path; 37 | } 38 | 39 | public static int getPort(URL url) { 40 | return url.getPort(); 41 | } 42 | 43 | public static String getProtocol(URL url) { 44 | return url.getProtocol(); 45 | } 46 | 47 | public static boolean isVariableUrl(String url) { 48 | Matcher matcher = pattern.matcher(url); 49 | return matcher.find(); 50 | } 51 | 52 | public static String getVariableUrl(String url) { 53 | Matcher matcher = urlPartitionPattern.matcher(url); 54 | matcher.matches(); 55 | return matcher.group(3); 56 | } 57 | 58 | public static String getVariablePath(String url) { 59 | Matcher matcher = urlPartitionPattern.matcher(url); 60 | matcher.matches(); 61 | String path = matcher.group(6); 62 | if (matcher.group(9) != null) { 63 | path = path + matcher.group(9); 64 | } 65 | return path; 66 | } 67 | 68 | public static String getVariableProtocol(String url) { 69 | Matcher matcher = urlPartitionPattern.matcher(url); 70 | matcher.matches(); 71 | return matcher.group(2); 72 | } 73 | 74 | public static int getVariablePort(String url) { 75 | Matcher matcher = urlPartitionPattern.matcher(url); 76 | matcher.matches(); 77 | return matcher.group(5) != null ? Integer.valueOf(matcher.group(5)) : -1; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/com/loadium/postman2jmx/utils/ValueUtils.java: -------------------------------------------------------------------------------- 1 | package com.loadium.postman2jmx.utils; 2 | 3 | import java.util.HashMap; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | public class ValueUtils { 8 | // TODO: replace substring(...) solution for matching with (safer) regex matching, using java matcher groups 9 | private static final String[] patterns = {".environment.set", ".setGlobalVariable", ".setEnvironmentVariable", ".globals.set"}; 10 | 11 | public static String value(String value) { 12 | if (value != null && value.contains("{{") && value.contains("}}")) { 13 | value = value.replace("{{", "${"); 14 | value = value.replace("}}", "}"); 15 | } 16 | return value; 17 | } 18 | 19 | public static Map extractVariablesWithValues(List execs) { 20 | Map variableAssignments = new HashMap<>(); // TODO: better use SortedMap to preserve order? any advantages as opposed to HashMap? 21 | for (String exec : execs) { 22 | if (exec.contains(patterns[0]) || exec.contains(patterns[1]) || exec.contains(patterns[2]) || exec.contains(patterns[3])) { 23 | String variable = exec.substring(exec.indexOf("(") + 1, exec.indexOf(",")); 24 | variable = variable.trim().replace("\'", "").replace("\"", ""); 25 | String value = exec.substring(exec.indexOf(",") + 1, exec.indexOf(")")); 26 | value = value.trim(); 27 | variableAssignments.put(variable, value); 28 | } 29 | } 30 | return variableAssignments; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/resources/jmeter/bin/saveservice.properties: -------------------------------------------------------------------------------- 1 | #--------------------------------------------------------- 2 | # SAVESERVICE PROPERTIES - JMETER INTERNAL USE ONLY 3 | #--------------------------------------------------------- 4 | 5 | ## Licensed to the Apache Software Foundation (ASF) under one or more 6 | ## contributor license agreements. See the NOTICE file distributed with 7 | ## this work for additional information regarding copyright ownership. 8 | ## The ASF licenses this file to You under the Apache License, Version 2.0 9 | ## (the "License"); you may not use this file except in compliance with 10 | ## the License. You may obtain a copy of the License at 11 | ## 12 | ## http://www.apache.org/licenses/LICENSE-2.0 13 | ## 14 | ## Unless required by applicable law or agreed to in writing, software 15 | ## distributed under the License is distributed on an "AS IS" BASIS, 16 | ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | ## See the License for the specific language governing permissions and 18 | ## limitations under the License. 19 | 20 | # This file is used to define how XStream (de-)serializes classnames 21 | # in JMX test plan files. 22 | 23 | # FOR JMETER INTERNAL USE ONLY 24 | 25 | #--------------------------------------------------------- 26 | 27 | # N.B. To ensure backward compatibility, please do NOT change or delete any entries 28 | 29 | # New entries can be added as necessary. 30 | # 31 | # Note that keys starting with an underscore are special, 32 | # and are not used as aliases. 33 | # 34 | # Please keep the entries in alphabetical order within the sections 35 | # to reduce the likelihood of duplicates 36 | # 37 | # version number of this file is now computed by a sha1 sum, so no need for 38 | # an explicit _file_version property anymore. 39 | # 40 | # For this sha1 sum we ignore every newline character. It can be computed 41 | # by the following command: 42 | # 43 | # cat bin/saveservice.properties | perl -ne 'chomp; print' | sha1sum 44 | # 45 | # Be aware, that every change in this file will change the sha1 sum! 46 | # 47 | # Conversion version (for JMX output files) 48 | # Must be updated if the file has been changed since the previous release 49 | # Format is: 50 | # Save service version=JMeter version at which change occurred 51 | # 1.7 = 2.1.1 52 | # 1.8 = 2.1.2 53 | # (Some version updates were missed here...) 54 | # 2.0 = 2.3.1 55 | # 2.1 = 2.3.2 56 | # (Some version updates were missed here...) 57 | # 2.2 = 2.6 58 | # 2.3 = 2.7 59 | # 2.4 = 2.9 60 | # 2.5 = 2.10 61 | # 2.6 = 2.11 62 | # 2.7 = 2.12 63 | # 2.8 = 2.13 64 | # 2.9 = 2.14 65 | # 3.1 = 3.1 66 | # 3.2 = 3.2 67 | # 3.4 = 3.4 68 | _version=4.0 69 | # 70 | # 71 | # Character set encoding used to read and write JMeter XML files and CSV results 72 | # 73 | _file_encoding=UTF-8 74 | # 75 | #--------------------------------------------------------- 76 | # 77 | # The following properties are used to create aliases 78 | # [Must all start with capital letter] 79 | # 80 | AccessLogSampler=org.apache.jmeter.protocol.http.sampler.AccessLogSampler 81 | AjpSampler=org.apache.jmeter.protocol.http.sampler.AjpSampler 82 | AjpSamplerGui=org.apache.jmeter.protocol.http.control.gui.AjpSamplerGui 83 | AnchorModifier=org.apache.jmeter.protocol.http.modifier.AnchorModifier 84 | AnchorModifierGui=org.apache.jmeter.protocol.http.modifier.gui.AnchorModifierGui 85 | Argument=org.apache.jmeter.config.Argument 86 | Arguments=org.apache.jmeter.config.Arguments 87 | ArgumentsPanel=org.apache.jmeter.config.gui.ArgumentsPanel 88 | AssertionGui=org.apache.jmeter.assertions.gui.AssertionGui 89 | AssertionVisualizer=org.apache.jmeter.visualizers.AssertionVisualizer 90 | AuthManager=org.apache.jmeter.protocol.http.control.AuthManager 91 | Authorization=org.apache.jmeter.protocol.http.control.Authorization 92 | AuthPanel=org.apache.jmeter.protocol.http.gui.AuthPanel 93 | BackendListener=org.apache.jmeter.visualizers.backend.BackendListener 94 | BackendListenerGui=org.apache.jmeter.visualizers.backend.BackendListenerGui 95 | BeanShellAssertion=org.apache.jmeter.assertions.BeanShellAssertion 96 | BeanShellAssertionGui=org.apache.jmeter.assertions.gui.BeanShellAssertionGui 97 | BeanShellListener=org.apache.jmeter.visualizers.BeanShellListener 98 | BeanShellPostProcessor=org.apache.jmeter.extractor.BeanShellPostProcessor 99 | BeanShellPreProcessor=org.apache.jmeter.modifiers.BeanShellPreProcessor 100 | BeanShellSampler=org.apache.jmeter.protocol.java.sampler.BeanShellSampler 101 | BeanShellSamplerGui=org.apache.jmeter.protocol.java.control.gui.BeanShellSamplerGui 102 | BeanShellTimer=org.apache.jmeter.timers.BeanShellTimer 103 | BoundaryExtractor=org.apache.jmeter.extractor.BoundaryExtractor 104 | BoundaryExtractorGui=org.apache.jmeter.extractor.gui.BoundaryExtractorGui 105 | BSFAssertion=org.apache.jmeter.assertions.BSFAssertion 106 | BSFListener=org.apache.jmeter.visualizers.BSFListener 107 | BSFPreProcessor=org.apache.jmeter.modifiers.BSFPreProcessor 108 | BSFPostProcessor=org.apache.jmeter.extractor.BSFPostProcessor 109 | BSFSampler=org.apache.jmeter.protocol.java.sampler.BSFSampler 110 | BSFSamplerGui=org.apache.jmeter.protocol.java.control.gui.BSFSamplerGui 111 | BSFTimer=org.apache.jmeter.timers.BSFTimer 112 | CacheManager=org.apache.jmeter.protocol.http.control.CacheManager 113 | CacheManagerGui=org.apache.jmeter.protocol.http.gui.CacheManagerGui 114 | CompareAssertion=org.apache.jmeter.assertions.CompareAssertion 115 | ComparisonVisualizer=org.apache.jmeter.visualizers.ComparisonVisualizer 116 | ConfigTestElement=org.apache.jmeter.config.ConfigTestElement 117 | ConstantThroughputTimer=org.apache.jmeter.timers.ConstantThroughputTimer 118 | ConstantTimer=org.apache.jmeter.timers.ConstantTimer 119 | ConstantTimerGui=org.apache.jmeter.timers.gui.ConstantTimerGui 120 | Cookie=org.apache.jmeter.protocol.http.control.Cookie 121 | CookieManager=org.apache.jmeter.protocol.http.control.CookieManager 122 | CookiePanel=org.apache.jmeter.protocol.http.gui.CookiePanel 123 | CounterConfig=org.apache.jmeter.modifiers.CounterConfig 124 | CriticalSectionController=org.apache.jmeter.control.CriticalSectionController 125 | CriticalSectionControllerGui=org.apache.jmeter.control.gui.CriticalSectionControllerGui 126 | CounterConfigGui=org.apache.jmeter.modifiers.gui.CounterConfigGui 127 | CSVDataSet=org.apache.jmeter.config.CSVDataSet 128 | DebugPostProcessor=org.apache.jmeter.extractor.DebugPostProcessor 129 | DebugSampler=org.apache.jmeter.sampler.DebugSampler 130 | # removed in 3.1, class was deleted in r1763837 131 | DistributionGraphVisualizer=org.apache.jmeter.visualizers.DistributionGraphVisualizer 132 | DNSCacheManager=org.apache.jmeter.protocol.http.control.DNSCacheManager 133 | DNSCachePanel=org.apache.jmeter.protocol.http.gui.DNSCachePanel 134 | DurationAssertion=org.apache.jmeter.assertions.DurationAssertion 135 | DurationAssertionGui=org.apache.jmeter.assertions.gui.DurationAssertionGui 136 | PreciseThroughputTimer=org.apache.jmeter.timers.poissonarrivals.PreciseThroughputTimer 137 | # Should really have been defined as floatProp to agree with other properties 138 | # No point changing this now 139 | FloatProperty=org.apache.jmeter.testelement.property.FloatProperty 140 | ForeachController=org.apache.jmeter.control.ForeachController 141 | ForeachControlPanel=org.apache.jmeter.control.gui.ForeachControlPanel 142 | FtpConfigGui=org.apache.jmeter.protocol.ftp.config.gui.FtpConfigGui 143 | FTPSampler=org.apache.jmeter.protocol.ftp.sampler.FTPSampler 144 | FtpTestSamplerGui=org.apache.jmeter.protocol.ftp.control.gui.FtpTestSamplerGui 145 | GaussianRandomTimer=org.apache.jmeter.timers.GaussianRandomTimer 146 | GaussianRandomTimerGui=org.apache.jmeter.timers.gui.GaussianRandomTimerGui 147 | GenericController=org.apache.jmeter.control.GenericController 148 | GraphAccumVisualizer=org.apache.jmeter.visualizers.GraphAccumVisualizer 149 | GraphVisualizer=org.apache.jmeter.visualizers.GraphVisualizer 150 | Header=org.apache.jmeter.protocol.http.control.Header 151 | HeaderManager=org.apache.jmeter.protocol.http.control.HeaderManager 152 | HeaderPanel=org.apache.jmeter.protocol.http.gui.HeaderPanel 153 | HTMLAssertion=org.apache.jmeter.assertions.HTMLAssertion 154 | HTMLAssertionGui=org.apache.jmeter.assertions.gui.HTMLAssertionGui 155 | HTTPArgument=org.apache.jmeter.protocol.http.util.HTTPArgument 156 | HTTPArgumentsPanel=org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel 157 | HTTPFileArg=org.apache.jmeter.protocol.http.util.HTTPFileArg 158 | HTTPFileArgs=org.apache.jmeter.protocol.http.util.HTTPFileArgs 159 | HttpDefaultsGui=org.apache.jmeter.protocol.http.config.gui.HttpDefaultsGui 160 | HtmlExtractor=org.apache.jmeter.extractor.HtmlExtractor 161 | HtmlExtractorGui=org.apache.jmeter.extractor.gui.HtmlExtractorGui 162 | # removed in r1039684, probably not released. Not present in r322831 or since. 163 | #HttpGenericSampler=org.apache.jmeter.protocol.http.sampler.HttpGenericSampler 164 | # removed in r1039684, probably not released. Not present in r322831 or since. 165 | #HttpGenericSamplerGui=org.apache.jmeter.protocol.http.control.gui.HttpGenericSamplerGui 166 | HttpMirrorControl=org.apache.jmeter.protocol.http.control.HttpMirrorControl 167 | HttpMirrorControlGui=org.apache.jmeter.protocol.http.control.gui.HttpMirrorControlGui 168 | # r397955 - removed test class. Keep as commented entry for info only. 169 | #HTTPNullSampler=org.apache.jmeter.protocol.http.sampler.HTTPNullSampler 170 | # Merge previous 2 HTTP samplers into one 171 | HTTPSampler_=org.apache.jmeter.protocol.http.sampler.HTTPSampler 172 | HTTPSampler2_=org.apache.jmeter.protocol.http.sampler.HTTPSampler2 173 | HTTPSamplerProxy,HTTPSampler,HTTPSampler2=org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy 174 | # Merge GUIs 175 | HttpTestSampleGui,HttpTestSampleGui2=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui 176 | #HttpTestSampleGui2=org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui2 177 | IfController=org.apache.jmeter.control.IfController 178 | IfControllerPanel=org.apache.jmeter.control.gui.IfControllerPanel 179 | IncludeController=org.apache.jmeter.control.IncludeController 180 | IncludeControllerGui=org.apache.jmeter.control.gui.IncludeControllerGui 181 | InterleaveControl=org.apache.jmeter.control.InterleaveControl 182 | InterleaveControlGui=org.apache.jmeter.control.gui.InterleaveControlGui 183 | JavaConfig=org.apache.jmeter.protocol.java.config.JavaConfig 184 | JavaConfigGui=org.apache.jmeter.protocol.java.config.gui.JavaConfigGui 185 | JavaSampler=org.apache.jmeter.protocol.java.sampler.JavaSampler 186 | JavaTest=org.apache.jmeter.protocol.java.test.JavaTest 187 | JavaTestSamplerGui=org.apache.jmeter.protocol.java.control.gui.JavaTestSamplerGui 188 | JDBCDataSource=org.apache.jmeter.protocol.jdbc.config.DataSourceElement 189 | JDBCPostProcessor=org.apache.jmeter.protocol.jdbc.processor.JDBCPostProcessor 190 | JDBCPreProcessor=org.apache.jmeter.protocol.jdbc.processor.JDBCPreProcessor 191 | JDBCSampler=org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler 192 | # Renamed to JMSSamplerGui; keep original entry for backwards compatibility 193 | JMSConfigGui=org.apache.jmeter.protocol.jms.control.gui.JMSConfigGui 194 | JMSProperties=org.apache.jmeter.protocol.jms.sampler.JMSProperties 195 | JMSProperty=org.apache.jmeter.protocol.jms.sampler.JMSProperty 196 | JMSPublisherGui=org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui 197 | JMSSampler=org.apache.jmeter.protocol.jms.sampler.JMSSampler 198 | JMSSamplerGui=org.apache.jmeter.protocol.jms.control.gui.JMSSamplerGui 199 | JMSSubscriberGui=org.apache.jmeter.protocol.jms.control.gui.JMSSubscriberGui 200 | JSONPathAssertion=org.apache.jmeter.assertions.JSONPathAssertion 201 | JSONPathAssertionGui=org.apache.jmeter.assertions.gui.JSONPathAssertionGui 202 | JSONPostProcessor=org.apache.jmeter.extractor.json.jsonpath.JSONPostProcessor 203 | JSONPostProcessorGui=org.apache.jmeter.extractor.json.jsonpath.gui.JSONPostProcessorGui 204 | # Removed in r545311 as Jndi no longer present; keep for compat. 205 | JndiDefaultsGui=org.apache.jmeter.protocol.jms.control.gui.JndiDefaultsGui 206 | JSR223Assertion=org.apache.jmeter.assertions.JSR223Assertion 207 | JSR223Listener=org.apache.jmeter.visualizers.JSR223Listener 208 | JSR223PostProcessor=org.apache.jmeter.extractor.JSR223PostProcessor 209 | JSR223PreProcessor=org.apache.jmeter.modifiers.JSR223PreProcessor 210 | JSR223Sampler=org.apache.jmeter.protocol.java.sampler.JSR223Sampler 211 | JSR223Timer=org.apache.jmeter.timers.JSR223Timer 212 | JUnitSampler=org.apache.jmeter.protocol.java.sampler.JUnitSampler 213 | JUnitTestSamplerGui=org.apache.jmeter.protocol.java.control.gui.JUnitTestSamplerGui 214 | KeystoreConfig=org.apache.jmeter.config.KeystoreConfig 215 | LDAPArgument=org.apache.jmeter.protocol.ldap.config.gui.LDAPArgument 216 | LDAPArguments=org.apache.jmeter.protocol.ldap.config.gui.LDAPArguments 217 | LDAPArgumentsPanel=org.apache.jmeter.protocol.ldap.config.gui.LDAPArgumentsPanel 218 | LdapConfigGui=org.apache.jmeter.protocol.ldap.config.gui.LdapConfigGui 219 | LdapExtConfigGui=org.apache.jmeter.protocol.ldap.config.gui.LdapExtConfigGui 220 | LDAPExtSampler=org.apache.jmeter.protocol.ldap.sampler.LDAPExtSampler 221 | LdapExtTestSamplerGui=org.apache.jmeter.protocol.ldap.control.gui.LdapExtTestSamplerGui 222 | LDAPSampler=org.apache.jmeter.protocol.ldap.sampler.LDAPSampler 223 | LdapTestSamplerGui=org.apache.jmeter.protocol.ldap.control.gui.LdapTestSamplerGui 224 | LogicControllerGui=org.apache.jmeter.control.gui.LogicControllerGui 225 | LoginConfig=org.apache.jmeter.config.LoginConfig 226 | LoginConfigGui=org.apache.jmeter.config.gui.LoginConfigGui 227 | LoopController=org.apache.jmeter.control.LoopController 228 | LoopControlPanel=org.apache.jmeter.control.gui.LoopControlPanel 229 | MailerModel=org.apache.jmeter.reporters.MailerModel 230 | MailerResultCollector=org.apache.jmeter.reporters.MailerResultCollector 231 | MailerVisualizer=org.apache.jmeter.visualizers.MailerVisualizer 232 | MailReaderSampler=org.apache.jmeter.protocol.mail.sampler.MailReaderSampler 233 | MailReaderSamplerGui=org.apache.jmeter.protocol.mail.sampler.gui.MailReaderSamplerGui 234 | MD5HexAssertion=org.apache.jmeter.assertions.MD5HexAssertion 235 | MD5HexAssertionGUI=org.apache.jmeter.assertions.gui.MD5HexAssertionGUI 236 | ModuleController=org.apache.jmeter.control.ModuleController 237 | ModuleControllerGui=org.apache.jmeter.control.gui.ModuleControllerGui 238 | MongoScriptSampler=org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler 239 | MongoSourceElement=org.apache.jmeter.protocol.mongodb.config.MongoSourceElement 240 | 241 | # removed in 3.2, class was deleted in r 242 | MonitorHealthVisualizer=org.apache.jmeter.visualizers.MonitorHealthVisualizer 243 | 244 | NamePanel=org.apache.jmeter.gui.NamePanel 245 | ObsoleteGui=org.apache.jmeter.config.gui.ObsoleteGui 246 | OnceOnlyController=org.apache.jmeter.control.OnceOnlyController 247 | OnceOnlyControllerGui=org.apache.jmeter.control.gui.OnceOnlyControllerGui 248 | # removed in 3.0, class was deleted in r1722962 249 | ParamMask=org.apache.jmeter.protocol.http.modifier.ParamMask 250 | # removed in 3.0, class was deleted in r1722757 251 | ParamModifier=org.apache.jmeter.protocol.http.modifier.ParamModifier 252 | # removed in 3.0, class was deleted in r1722757 253 | ParamModifierGui=org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui 254 | PoissonRandomTimer=org.apache.jmeter.timers.PoissonRandomTimer 255 | PoissonRandomTimerGui=org.apache.jmeter.timers.gui.PoissonRandomTimerGui 256 | PropertyControlGui=org.apache.jmeter.visualizers.PropertyControlGui 257 | ProxyControl=org.apache.jmeter.protocol.http.proxy.ProxyControl 258 | ProxyControlGui=org.apache.jmeter.protocol.http.proxy.gui.ProxyControlGui 259 | PublisherSampler=org.apache.jmeter.protocol.jms.sampler.PublisherSampler 260 | RandomControlGui=org.apache.jmeter.control.gui.RandomControlGui 261 | RandomController=org.apache.jmeter.control.RandomController 262 | RandomOrderController=org.apache.jmeter.control.RandomOrderController 263 | RandomOrderControllerGui=org.apache.jmeter.control.gui.RandomOrderControllerGui 264 | RandomVariableConfig=org.apache.jmeter.config.RandomVariableConfig 265 | RecordController=org.apache.jmeter.protocol.http.control.gui.RecordController 266 | RecordingController=org.apache.jmeter.protocol.http.control.RecordingController 267 | # removed in r1039684, class was deleted in r580452 268 | ReflectionThreadGroup=org.apache.jmeter.threads.ReflectionThreadGroup 269 | RegexExtractor=org.apache.jmeter.extractor.RegexExtractor 270 | RegexExtractorGui=org.apache.jmeter.extractor.gui.RegexExtractorGui 271 | RegExUserParameters=org.apache.jmeter.protocol.http.modifier.RegExUserParameters 272 | RegExUserParametersGui=org.apache.jmeter.protocol.http.modifier.gui.RegExUserParametersGui 273 | RemoteListenerWrapper=org.apache.jmeter.samplers.RemoteListenerWrapper 274 | RemoteSampleListenerWrapper=org.apache.jmeter.samplers.RemoteSampleListenerWrapper 275 | RemoteTestListenerWrapper=org.apache.jmeter.samplers.RemoteTestListenerWrapper 276 | RemoteThreadsListenerWrapper=org.apache.jmeter.threads.RemoteThreadsListenerWrapper 277 | ResponseAssertion=org.apache.jmeter.assertions.ResponseAssertion 278 | RespTimeGraphVisualizer=org.apache.jmeter.visualizers.RespTimeGraphVisualizer 279 | ResultAction=org.apache.jmeter.reporters.ResultAction 280 | ResultActionGui=org.apache.jmeter.reporters.gui.ResultActionGui 281 | ResultCollector=org.apache.jmeter.reporters.ResultCollector 282 | ResultSaver=org.apache.jmeter.reporters.ResultSaver 283 | ResultSaverGui=org.apache.jmeter.reporters.gui.ResultSaverGui 284 | RunTime=org.apache.jmeter.control.RunTime 285 | RunTimeGui=org.apache.jmeter.control.gui.RunTimeGui 286 | SampleSaveConfiguration=org.apache.jmeter.samplers.SampleSaveConfiguration 287 | SampleTimeout=org.apache.jmeter.modifiers.SampleTimeout 288 | SampleTimeoutGui=org.apache.jmeter.modifiers.gui.SampleTimeoutGui 289 | SimpleConfigGui=org.apache.jmeter.config.gui.SimpleConfigGui 290 | SimpleDataWriter=org.apache.jmeter.visualizers.SimpleDataWriter 291 | SizeAssertion=org.apache.jmeter.assertions.SizeAssertion 292 | SizeAssertionGui=org.apache.jmeter.assertions.gui.SizeAssertionGui 293 | SMIMEAssertion=org.apache.jmeter.assertions.SMIMEAssertionTestElement 294 | SMIMEAssertionGui=org.apache.jmeter.assertions.gui.SMIMEAssertionGui 295 | SmtpSampler=org.apache.jmeter.protocol.smtp.sampler.SmtpSampler 296 | SmtpSamplerGui=org.apache.jmeter.protocol.smtp.sampler.gui.SmtpSamplerGui 297 | 298 | # removed in 3.2, class was deleted in r 299 | SoapSampler=org.apache.jmeter.protocol.http.sampler.SoapSampler 300 | # removed in 3.2, class was deleted in r 301 | SoapSamplerGui=org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui 302 | 303 | # removed in 3.1, class was deleted in r1763837 304 | SplineVisualizer=org.apache.jmeter.visualizers.SplineVisualizer 305 | # Originally deleted in r397955 as class is obsolete; needed for compat. 306 | SqlConfigGui=org.apache.jmeter.protocol.jdbc.config.gui.SqlConfigGui 307 | StaticHost=org.apache.jmeter.protocol.http.control.StaticHost 308 | StatGraphVisualizer=org.apache.jmeter.visualizers.StatGraphVisualizer 309 | StatVisualizer=org.apache.jmeter.visualizers.StatVisualizer 310 | SubscriberSampler=org.apache.jmeter.protocol.jms.sampler.SubscriberSampler 311 | SubstitutionElement=org.apache.jmeter.assertions.SubstitutionElement 312 | Summariser=org.apache.jmeter.reporters.Summariser 313 | SummariserGui=org.apache.jmeter.reporters.gui.SummariserGui 314 | SummaryReport=org.apache.jmeter.visualizers.SummaryReport 315 | SwitchController=org.apache.jmeter.control.SwitchController 316 | SwitchControllerGui=org.apache.jmeter.control.gui.SwitchControllerGui 317 | SyncTimer=org.apache.jmeter.timers.SyncTimer 318 | SystemSampler=org.apache.jmeter.protocol.system.SystemSampler 319 | SystemSamplerGui=org.apache.jmeter.protocol.system.gui.SystemSamplerGui 320 | TableVisualizer=org.apache.jmeter.visualizers.TableVisualizer 321 | TCPConfigGui=org.apache.jmeter.protocol.tcp.config.gui.TCPConfigGui 322 | TCPSampler=org.apache.jmeter.protocol.tcp.sampler.TCPSampler 323 | TCPSamplerGui=org.apache.jmeter.protocol.tcp.control.gui.TCPSamplerGui 324 | TestAction=org.apache.jmeter.sampler.TestAction 325 | TestActionGui=org.apache.jmeter.sampler.gui.TestActionGui 326 | TestBeanGUI=org.apache.jmeter.testbeans.gui.TestBeanGUI 327 | TestFragmentController=org.apache.jmeter.control.TestFragmentController 328 | TestFragmentControllerGui=org.apache.jmeter.control.gui.TestFragmentControllerGui 329 | TestPlan=org.apache.jmeter.testelement.TestPlan 330 | TestPlanGui=org.apache.jmeter.control.gui.TestPlanGui 331 | ThreadGroup=org.apache.jmeter.threads.ThreadGroup 332 | ThreadGroupGui=org.apache.jmeter.threads.gui.ThreadGroupGui 333 | PostThreadGroup=org.apache.jmeter.threads.PostThreadGroup 334 | PostThreadGroupGui=org.apache.jmeter.threads.gui.PostThreadGroupGui 335 | SetupThreadGroup=org.apache.jmeter.threads.SetupThreadGroup 336 | SetupThreadGroupGui=org.apache.jmeter.threads.gui.SetupThreadGroupGui 337 | ThroughputController=org.apache.jmeter.control.ThroughputController 338 | ThroughputControllerGui=org.apache.jmeter.control.gui.ThroughputControllerGui 339 | TransactionController=org.apache.jmeter.control.TransactionController 340 | TransactionControllerGui=org.apache.jmeter.control.gui.TransactionControllerGui 341 | TransactionSampler=org.apache.jmeter.control.TransactionSampler 342 | UniformRandomTimer=org.apache.jmeter.timers.UniformRandomTimer 343 | UniformRandomTimerGui=org.apache.jmeter.timers.gui.UniformRandomTimerGui 344 | URLRewritingModifier=org.apache.jmeter.protocol.http.modifier.URLRewritingModifier 345 | URLRewritingModifierGui=org.apache.jmeter.protocol.http.modifier.gui.URLRewritingModifierGui 346 | UserParameterModifier=org.apache.jmeter.protocol.http.modifier.UserParameterModifier 347 | UserParameterModifierGui=org.apache.jmeter.protocol.http.modifier.gui.UserParameterModifierGui 348 | UserParameters=org.apache.jmeter.modifiers.UserParameters 349 | UserParametersGui=org.apache.jmeter.modifiers.gui.UserParametersGui 350 | ViewResultsFullVisualizer=org.apache.jmeter.visualizers.ViewResultsFullVisualizer 351 | # removed in 3.0, class was deleted in r1722757 352 | WebServiceSampler=org.apache.jmeter.protocol.http.sampler.WebServiceSampler 353 | # removed in 3.0, class was deleted in r1722757 354 | WebServiceSamplerGui=org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui 355 | WhileController=org.apache.jmeter.control.WhileController 356 | WhileControllerGui=org.apache.jmeter.control.gui.WhileControllerGui 357 | WorkBench=org.apache.jmeter.testelement.WorkBench 358 | WorkBenchGui=org.apache.jmeter.control.gui.WorkBenchGui 359 | XMLAssertion=org.apache.jmeter.assertions.XMLAssertion 360 | XMLAssertionGui=org.apache.jmeter.assertions.gui.XMLAssertionGui 361 | XMLSchemaAssertion=org.apache.jmeter.assertions.XMLSchemaAssertion 362 | XMLSchemaAssertionGUI=org.apache.jmeter.assertions.gui.XMLSchemaAssertionGUI 363 | XPathAssertion=org.apache.jmeter.assertions.XPathAssertion 364 | XPathAssertionGui=org.apache.jmeter.assertions.gui.XPathAssertionGui 365 | XPathExtractor=org.apache.jmeter.extractor.XPathExtractor 366 | XPathExtractorGui=org.apache.jmeter.extractor.gui.XPathExtractorGui 367 | # 368 | # Properties - all start with lower case letter and end with Prop 369 | # 370 | boolProp=org.apache.jmeter.testelement.property.BooleanProperty 371 | collectionProp=org.apache.jmeter.testelement.property.CollectionProperty 372 | doubleProp=org.apache.jmeter.testelement.property.DoubleProperty 373 | elementProp=org.apache.jmeter.testelement.property.TestElementProperty 374 | # see above - already defined as FloatProperty 375 | #floatProp=org.apache.jmeter.testelement.property.FloatProperty 376 | intProp=org.apache.jmeter.testelement.property.IntegerProperty 377 | longProp=org.apache.jmeter.testelement.property.LongProperty 378 | mapProp=org.apache.jmeter.testelement.property.MapProperty 379 | objProp=org.apache.jmeter.testelement.property.ObjectProperty 380 | stringProp=org.apache.jmeter.testelement.property.StringProperty 381 | # 382 | # Other - must start with a lower case letter (and not end with Prop) 383 | # (otherwise they could clash with the initial set of aliases) 384 | # 385 | hashTree=org.apache.jorphan.collections.ListedHashTree 386 | jmeterTestPlan=org.apache.jmeter.save.ScriptWrapper 387 | sample=org.apache.jmeter.samplers.SampleResult 388 | httpSample=org.apache.jmeter.protocol.http.sampler.HTTPSampleResult 389 | statSample=org.apache.jmeter.samplers.StatisticalSampleResult 390 | testResults=org.apache.jmeter.save.TestResultWrapper 391 | assertionResult=org.apache.jmeter.assertions.AssertionResult 392 | 393 | # removed in 3.2, class was deleted in r 394 | monitorStats=org.apache.jmeter.visualizers.MonitorStats 395 | sampleEvent=org.apache.jmeter.samplers.SampleEvent 396 | # 397 | # Converters to register. Must start line with '_' 398 | # If the converter is a collection of subitems, set equal to "collection" 399 | # If the converter needs to know the class mappings but is not a collection of 400 | # subitems, set it equal to "mapping" 401 | _org.apache.jmeter.protocol.http.sampler.HTTPSamplerBaseConverter=collection 402 | _org.apache.jmeter.protocol.http.util.HTTPResultConverter=collection 403 | _org.apache.jmeter.save.converters.BooleanPropertyConverter= 404 | _org.apache.jmeter.save.converters.IntegerPropertyConverter= 405 | _org.apache.jmeter.save.converters.LongPropertyConverter= 406 | _org.apache.jmeter.save.converters.MultiPropertyConverter=collection 407 | _org.apache.jmeter.save.converters.SampleEventConverter= 408 | _org.apache.jmeter.save.converters.SampleResultConverter=collection 409 | _org.apache.jmeter.save.converters.SampleSaveConfigurationConverter=collection 410 | _org.apache.jmeter.save.converters.StringPropertyConverter= 411 | _org.apache.jmeter.save.converters.HashTreeConverter=collection 412 | _org.apache.jmeter.save.converters.TestElementConverter=collection 413 | _org.apache.jmeter.save.converters.TestElementPropertyConverter=collection 414 | _org.apache.jmeter.save.converters.TestResultWrapperConverter=collection 415 | _org.apache.jmeter.save.ScriptWrapperConverter=mapping 416 | # 417 | # Remember to update the _version entry 418 | # 419 | -------------------------------------------------------------------------------- /src/main/resources/jmxFileTemplate.jmx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | false 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | continue 16 | 17 | false 18 | 1 19 | 20 | 1 21 | 1 22 | 1486127134000 23 | 1486127134000 24 | false 25 | 26 | 27 | 28 | 29 | 30 | true 31 | 32 | 33 | 34 | false 35 | 36 | = 37 | 38 | 39 | 40 | "" 41 | 42 | 43 | 44 | 45 | 46 | 47 | GET 48 | true 49 | false 50 | true 51 | false 52 | false 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- 1 | appenders=xyz 2 | 3 | #defining xyz 4 | appender.xyz.type = Console 5 | appender.xyz.name = myOutput 6 | appender.xyz.layout.type = PatternLayout 7 | appender.xyz.layout.pattern = [%d{yy-MMM-dd HH:mm:ss:SSS}] [%p] [%c{1}:%L] - %m%n 8 | 9 | rootLogger.level = info 10 | 11 | #rootLogger.appenderReferences 12 | rootLogger.appenderRefs = abc 13 | 14 | #assigning rootLogger appender to myOutput 15 | rootLogger.appenderRef.abc.ref = myOutput --------------------------------------------------------------------------------