ruby-jmeter 2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. data/.gitattributes +22 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +27 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +333 -0
  7. data/Rakefile +6 -0
  8. data/bin/grid +25 -0
  9. data/examples/basic_assertion.rb +13 -0
  10. data/examples/basic_auth.rb +11 -0
  11. data/examples/basic_cache.rb +11 -0
  12. data/examples/basic_cookies.rb +11 -0
  13. data/examples/basic_extract.rb +10 -0
  14. data/examples/basic_gc_dummy_sampler.rb +10 -0
  15. data/examples/basic_gc_results.rb +23 -0
  16. data/examples/basic_google.rb +8 -0
  17. data/examples/basic_grid.rb +8 -0
  18. data/examples/basic_header.rb +19 -0
  19. data/examples/basic_ldap_ext.rb +16 -0
  20. data/examples/basic_post.rb +15 -0
  21. data/examples/basic_query_params.rb +8 -0
  22. data/examples/basic_think_time.rb +15 -0
  23. data/examples/basic_throughput_controller.rb +14 -0
  24. data/examples/basic_throughput_shaping_timer.rb +21 -0
  25. data/examples/etsy_login_browse.rb +64 -0
  26. data/lib/ruby-jmeter.rb +18 -0
  27. data/lib/ruby-jmeter/DSL.md +237 -0
  28. data/lib/ruby-jmeter/dsl.rb +419 -0
  29. data/lib/ruby-jmeter/dsl/access_log_sampler.rb +32 -0
  30. data/lib/ruby-jmeter/dsl/aggregate_graph.rb +55 -0
  31. data/lib/ruby-jmeter/dsl/aggregate_report.rb +55 -0
  32. data/lib/ruby-jmeter/dsl/ajp13_sampler.rb +41 -0
  33. data/lib/ruby-jmeter/dsl/assertion_results.rb +55 -0
  34. data/lib/ruby-jmeter/dsl/beanshell_assertion.rb +28 -0
  35. data/lib/ruby-jmeter/dsl/beanshell_listener.rb +28 -0
  36. data/lib/ruby-jmeter/dsl/beanshell_postprocessor.rb +28 -0
  37. data/lib/ruby-jmeter/dsl/beanshell_preprocessor.rb +28 -0
  38. data/lib/ruby-jmeter/dsl/beanshell_sampler.rb +28 -0
  39. data/lib/ruby-jmeter/dsl/beanshell_timer.rb +28 -0
  40. data/lib/ruby-jmeter/dsl/bsf_assertion.rb +28 -0
  41. data/lib/ruby-jmeter/dsl/bsf_listener.rb +28 -0
  42. data/lib/ruby-jmeter/dsl/bsf_postprocessor.rb +28 -0
  43. data/lib/ruby-jmeter/dsl/bsf_preprocessor.rb +28 -0
  44. data/lib/ruby-jmeter/dsl/bsf_sampler.rb +28 -0
  45. data/lib/ruby-jmeter/dsl/bsf_timer.rb +28 -0
  46. data/lib/ruby-jmeter/dsl/compare_assertion.rb +27 -0
  47. data/lib/ruby-jmeter/dsl/comparison_assertion_visualizer.rb +55 -0
  48. data/lib/ruby-jmeter/dsl/constant_throughput_timer.rb +30 -0
  49. data/lib/ruby-jmeter/dsl/constant_timer.rb +25 -0
  50. data/lib/ruby-jmeter/dsl/counter.rb +31 -0
  51. data/lib/ruby-jmeter/dsl/cssjquery_extractor.rb +30 -0
  52. data/lib/ruby-jmeter/dsl/csv_data_set_config.rb +32 -0
  53. data/lib/ruby-jmeter/dsl/debug_postprocessor.rb +28 -0
  54. data/lib/ruby-jmeter/dsl/debug_sampler.rb +27 -0
  55. data/lib/ruby-jmeter/dsl/distribution_graphalpha.rb +55 -0
  56. data/lib/ruby-jmeter/dsl/duration_assertion.rb +25 -0
  57. data/lib/ruby-jmeter/dsl/foreach_controller.rb +29 -0
  58. data/lib/ruby-jmeter/dsl/ftp_request.rb +34 -0
  59. data/lib/ruby-jmeter/dsl/ftp_request_defaults.rb +32 -0
  60. data/lib/ruby-jmeter/dsl/gaussian_random_timer.rb +26 -0
  61. data/lib/ruby-jmeter/dsl/generate_summary_results.rb +23 -0
  62. data/lib/ruby-jmeter/dsl/graph_results.rb +55 -0
  63. data/lib/ruby-jmeter/dsl/html_assertion.rb +30 -0
  64. data/lib/ruby-jmeter/dsl/html_link_parser.rb +23 -0
  65. data/lib/ruby-jmeter/dsl/html_parameter_mask.rb +32 -0
  66. data/lib/ruby-jmeter/dsl/http_authorization_manager.rb +33 -0
  67. data/lib/ruby-jmeter/dsl/http_cache_manager.rb +26 -0
  68. data/lib/ruby-jmeter/dsl/http_cookie_manager.rb +27 -0
  69. data/lib/ruby-jmeter/dsl/http_header_manager.rb +30 -0
  70. data/lib/ruby-jmeter/dsl/http_request.rb +41 -0
  71. data/lib/ruby-jmeter/dsl/http_request_defaults.rb +44 -0
  72. data/lib/ruby-jmeter/dsl/http_url_rewriting_modifier.rb +29 -0
  73. data/lib/ruby-jmeter/dsl/if_controller.rb +27 -0
  74. data/lib/ruby-jmeter/dsl/include_controller.rb +25 -0
  75. data/lib/ruby-jmeter/dsl/java_request.rb +69 -0
  76. data/lib/ruby-jmeter/dsl/java_request_defaults.rb +69 -0
  77. data/lib/ruby-jmeter/dsl/jdbc_connection_configuration.rb +37 -0
  78. data/lib/ruby-jmeter/dsl/jdbc_postprocessor.rb +31 -0
  79. data/lib/ruby-jmeter/dsl/jdbc_preprocessor.rb +31 -0
  80. data/lib/ruby-jmeter/dsl/jdbc_request.rb +31 -0
  81. data/lib/ruby-jmeter/dsl/jms_pointtopoint.rb +40 -0
  82. data/lib/ruby-jmeter/dsl/jms_publisher.rb +41 -0
  83. data/lib/ruby-jmeter/dsl/jms_subscriber.rb +35 -0
  84. data/lib/ruby-jmeter/dsl/jsr223_assertion.rb +29 -0
  85. data/lib/ruby-jmeter/dsl/jsr223_listener.rb +29 -0
  86. data/lib/ruby-jmeter/dsl/jsr223_postprocessor.rb +29 -0
  87. data/lib/ruby-jmeter/dsl/jsr223_preprocessor.rb +29 -0
  88. data/lib/ruby-jmeter/dsl/jsr223_sampler.rb +29 -0
  89. data/lib/ruby-jmeter/dsl/jsr223_timer.rb +29 -0
  90. data/lib/ruby-jmeter/dsl/junit_request.rb +37 -0
  91. data/lib/ruby-jmeter/dsl/keystore_configuration.rb +27 -0
  92. data/lib/ruby-jmeter/dsl/ldap_extended_request.rb +42 -0
  93. data/lib/ruby-jmeter/dsl/ldap_extended_request_defaults.rb +42 -0
  94. data/lib/ruby-jmeter/dsl/ldap_request.rb +35 -0
  95. data/lib/ruby-jmeter/dsl/ldap_request_defaults.rb +40 -0
  96. data/lib/ruby-jmeter/dsl/login_config_element.rb +26 -0
  97. data/lib/ruby-jmeter/dsl/loop_controller.rb +26 -0
  98. data/lib/ruby-jmeter/dsl/mail_reader_sampler.rb +37 -0
  99. data/lib/ruby-jmeter/dsl/mailer_visualizer.rb +64 -0
  100. data/lib/ruby-jmeter/dsl/md5hex_assertion.rb +25 -0
  101. data/lib/ruby-jmeter/dsl/module_controller.rb +23 -0
  102. data/lib/ruby-jmeter/dsl/monitor_results.rb +55 -0
  103. data/lib/ruby-jmeter/dsl/once_only_controller.rb +23 -0
  104. data/lib/ruby-jmeter/dsl/os_process_sampler.rb +34 -0
  105. data/lib/ruby-jmeter/dsl/poisson_random_timer.rb +26 -0
  106. data/lib/ruby-jmeter/dsl/random_controller.rb +25 -0
  107. data/lib/ruby-jmeter/dsl/random_order_controller.rb +23 -0
  108. data/lib/ruby-jmeter/dsl/random_variable.rb +30 -0
  109. data/lib/ruby-jmeter/dsl/recording_controller.rb +23 -0
  110. data/lib/ruby-jmeter/dsl/regex_user_parameters.rb +27 -0
  111. data/lib/ruby-jmeter/dsl/regular_expression_extractor.rb +31 -0
  112. data/lib/ruby-jmeter/dsl/response_assertion.rb +31 -0
  113. data/lib/ruby-jmeter/dsl/response_time_graph.rb +55 -0
  114. data/lib/ruby-jmeter/dsl/result_status_action_handler.rb +25 -0
  115. data/lib/ruby-jmeter/dsl/runtime_controller.rb +25 -0
  116. data/lib/ruby-jmeter/dsl/save_responses_to_a_file.rb +29 -0
  117. data/lib/ruby-jmeter/dsl/simple_config_element.rb +23 -0
  118. data/lib/ruby-jmeter/dsl/simple_controller.rb +23 -0
  119. data/lib/ruby-jmeter/dsl/simple_data_writer.rb +55 -0
  120. data/lib/ruby-jmeter/dsl/smime_assertion.rb +35 -0
  121. data/lib/ruby-jmeter/dsl/smtp_sampler.rb +51 -0
  122. data/lib/ruby-jmeter/dsl/soapxmlrpc_request.rb +33 -0
  123. data/lib/ruby-jmeter/dsl/spline_visualizer.rb +55 -0
  124. data/lib/ruby-jmeter/dsl/summary_report.rb +55 -0
  125. data/lib/ruby-jmeter/dsl/switch_controller.rb +25 -0
  126. data/lib/ruby-jmeter/dsl/synchronizing_timer.rb +25 -0
  127. data/lib/ruby-jmeter/dsl/tcp_sampler.rb +33 -0
  128. data/lib/ruby-jmeter/dsl/tcp_sampler_config.rb +31 -0
  129. data/lib/ruby-jmeter/dsl/test_action.rb +27 -0
  130. data/lib/ruby-jmeter/dsl/test_plan.rb +31 -0
  131. data/lib/ruby-jmeter/dsl/thread_group.rb +36 -0
  132. data/lib/ruby-jmeter/dsl/throughput_controller.rb +32 -0
  133. data/lib/ruby-jmeter/dsl/transaction_controller.rb +26 -0
  134. data/lib/ruby-jmeter/dsl/uniform_random_timer.rb +26 -0
  135. data/lib/ruby-jmeter/dsl/user_defined_variables.rb +32 -0
  136. data/lib/ruby-jmeter/dsl/user_parameters.rb +29 -0
  137. data/lib/ruby-jmeter/dsl/view_results_in_table.rb +55 -0
  138. data/lib/ruby-jmeter/dsl/view_results_tree.rb +55 -0
  139. data/lib/ruby-jmeter/dsl/while_controller.rb +25 -0
  140. data/lib/ruby-jmeter/dsl/xml_assertion.rb +23 -0
  141. data/lib/ruby-jmeter/dsl/xml_schema_assertion.rb +25 -0
  142. data/lib/ruby-jmeter/dsl/xpath_assertion.rb +30 -0
  143. data/lib/ruby-jmeter/dsl/xpath_extractor.rb +30 -0
  144. data/lib/ruby-jmeter/helpers/fallback_content_proxy.rb +54 -0
  145. data/lib/ruby-jmeter/helpers/helper.rb +41 -0
  146. data/lib/ruby-jmeter/helpers/jmeter.properties +28 -0
  147. data/lib/ruby-jmeter/helpers/logger-colors.rb +48 -0
  148. data/lib/ruby-jmeter/helpers/parser.rb +106 -0
  149. data/lib/ruby-jmeter/helpers/strip-heredoc.rb +5 -0
  150. data/lib/ruby-jmeter/helpers/user-agents.rb +27 -0
  151. data/lib/ruby-jmeter/idl.rb +70 -0
  152. data/lib/ruby-jmeter/idl.xml +1513 -0
  153. data/lib/ruby-jmeter/plugins/gc_console_status_logger.rb +14 -0
  154. data/lib/ruby-jmeter/plugins/gc_dummy_sampler.rb +23 -0
  155. data/lib/ruby-jmeter/plugins/gc_latencies_over_time.rb +48 -0
  156. data/lib/ruby-jmeter/plugins/gc_response_codes_per_second.rb +48 -0
  157. data/lib/ruby-jmeter/plugins/gc_response_times_distribution.rb +47 -0
  158. data/lib/ruby-jmeter/plugins/gc_response_times_over_time.rb +48 -0
  159. data/lib/ruby-jmeter/plugins/gc_response_times_percentiles.rb +48 -0
  160. data/lib/ruby-jmeter/plugins/gc_transactions_per_second.rb +48 -0
  161. data/lib/ruby-jmeter/plugins/gc_variable_throughput_timer.rb +26 -0
  162. data/lib/ruby-jmeter/version.rb +3 -0
  163. data/ruby-jmeter.gemspec +22 -0
  164. data/spec/dsl_spec.rb +491 -0
  165. data/spec/spec_helper.rb +10 -0
  166. data/spec/stub.rb +31 -0
  167. metadata +244 -0
@@ -0,0 +1,51 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def smtp_sampler(params={}, &block)
4
+ node = RubyJmeter::SmtpSampler.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SmtpSampler
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'SmtpSampler'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="#{params[:name]}" enabled="true">
17
+ <stringProp name="SMTPSampler.server"/>
18
+ <stringProp name="SMTPSampler.serverPort"/>
19
+ <stringProp name="SMTPSampler.mailFrom"/>
20
+ <stringProp name="SMTPSampler.replyTo"/>
21
+ <stringProp name="SMTPSampler.receiverTo"/>
22
+ <stringProp name="SMTPSampler.receiverCC"/>
23
+ <stringProp name="SMTPSampler.receiverBCC"/>
24
+ <stringProp name="SMTPSampler.subject"/>
25
+ <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
26
+ <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
27
+ <stringProp name="SMTPSampler.message"/>
28
+ <stringProp name="SMTPSampler.plainBody">false</stringProp>
29
+ <stringProp name="SMTPSampler.attachFile"/>
30
+ <stringProp name="SMTPSampler.useSSL">false</stringProp>
31
+ <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
32
+ <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
33
+ <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
34
+ <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
35
+ <stringProp name="SMTPSampler.trustStoreToUse"/>
36
+ <boolProp name="SMTPSampler.use_eml">false</boolProp>
37
+ <stringProp name="SMTPSampler.emlMessageToSend"/>
38
+ <stringProp name="SMTPSampler.useAuth">false</stringProp>
39
+ <stringProp name="SMTPSampler.password"/>
40
+ <stringProp name="SMTPSampler.username"/>
41
+ <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
42
+ <stringProp name="SMTPSampler.enableDebug">false</stringProp>
43
+ <collectionProp name="SMTPSampler.headerFields"/>
44
+ </SmtpSampler>)
45
+ EOS
46
+ update params
47
+ update_at_xpath params if params[:update_at_xpath]
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,33 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def soapxmlrpc_request(params={}, &block)
4
+ node = RubyJmeter::SoapxmlrpcRequest.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SoapxmlrpcRequest
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'SoapxmlrpcRequest'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler" testname="#{params[:name]}" enabled="true">
17
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
18
+ <collectionProp name="Arguments.arguments"/>
19
+ </elementProp>
20
+ <stringProp name="SoapSampler.URL_DATA"/>
21
+ <stringProp name="HTTPSamper.xml_data"/>
22
+ <stringProp name="SoapSampler.xml_data_file"/>
23
+ <stringProp name="SoapSampler.SOAP_ACTION"/>
24
+ <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
25
+ <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
26
+ </SoapSampler>)
27
+ EOS
28
+ update params
29
+ update_at_xpath params if params[:update_at_xpath]
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,55 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def spline_visualizer(params={}, &block)
4
+ node = RubyJmeter::SplineVisualizer.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SplineVisualizer
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'SplineVisualizer'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ResultCollector guiclass="SplineVisualizer" testclass="ResultCollector" testname="#{params[:name]}" enabled="true">
17
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
18
+ <objProp>
19
+ <name>saveConfig</name>
20
+ <value class="SampleSaveConfiguration">
21
+ <time>true</time>
22
+ <latency>true</latency>
23
+ <timestamp>true</timestamp>
24
+ <success>true</success>
25
+ <label>true</label>
26
+ <code>true</code>
27
+ <message>false</message>
28
+ <threadName>true</threadName>
29
+ <dataType>false</dataType>
30
+ <encoding>false</encoding>
31
+ <assertions>false</assertions>
32
+ <subresults>false</subresults>
33
+ <responseData>false</responseData>
34
+ <samplerData>false</samplerData>
35
+ <xml>false</xml>
36
+ <fieldNames>false</fieldNames>
37
+ <responseHeaders>false</responseHeaders>
38
+ <requestHeaders>false</requestHeaders>
39
+ <responseDataOnError>false</responseDataOnError>
40
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
41
+ <assertionsResultsToSave>0</assertionsResultsToSave>
42
+ <bytes>true</bytes>
43
+ <threadCounts>true</threadCounts>
44
+ <sampleCount>true</sampleCount>
45
+ </value>
46
+ </objProp>
47
+ <stringProp name="filename"/>
48
+ </ResultCollector>)
49
+ EOS
50
+ update params
51
+ update_at_xpath params if params[:update_at_xpath]
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,55 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def summary_report(params={}, &block)
4
+ node = RubyJmeter::SummaryReport.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SummaryReport
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'SummaryReport'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="#{params[:name]}" enabled="true">
17
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
18
+ <objProp>
19
+ <name>saveConfig</name>
20
+ <value class="SampleSaveConfiguration">
21
+ <time>true</time>
22
+ <latency>true</latency>
23
+ <timestamp>true</timestamp>
24
+ <success>true</success>
25
+ <label>true</label>
26
+ <code>true</code>
27
+ <message>false</message>
28
+ <threadName>true</threadName>
29
+ <dataType>false</dataType>
30
+ <encoding>false</encoding>
31
+ <assertions>false</assertions>
32
+ <subresults>false</subresults>
33
+ <responseData>false</responseData>
34
+ <samplerData>false</samplerData>
35
+ <xml>false</xml>
36
+ <fieldNames>false</fieldNames>
37
+ <responseHeaders>false</responseHeaders>
38
+ <requestHeaders>false</requestHeaders>
39
+ <responseDataOnError>false</responseDataOnError>
40
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
41
+ <assertionsResultsToSave>0</assertionsResultsToSave>
42
+ <bytes>true</bytes>
43
+ <threadCounts>true</threadCounts>
44
+ <sampleCount>true</sampleCount>
45
+ </value>
46
+ </objProp>
47
+ <stringProp name="filename"/>
48
+ </ResultCollector>)
49
+ EOS
50
+ update params
51
+ update_at_xpath params if params[:update_at_xpath]
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,25 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def switch_controller(params={}, &block)
4
+ node = RubyJmeter::SwitchController.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SwitchController
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'SwitchController'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="#{params[:name]}" enabled="true">
17
+ <stringProp name="SwitchController.value"/>
18
+ </SwitchController>)
19
+ EOS
20
+ update params
21
+ update_at_xpath params if params[:update_at_xpath]
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def synchronizing_timer(params={}, &block)
4
+ node = RubyJmeter::SynchronizingTimer.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SynchronizingTimer
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'SynchronizingTimer'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="#{params[:name]}" enabled="true">
17
+ <intProp name="groupSize">0</intProp>
18
+ </SyncTimer>)
19
+ EOS
20
+ update params
21
+ update_at_xpath params if params[:update_at_xpath]
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,33 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def tcp_sampler(params={}, &block)
4
+ node = RubyJmeter::TcpSampler.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TcpSampler
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'TcpSampler'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="#{params[:name]}" enabled="true">
17
+ <stringProp name="TCPSampler.server"/>
18
+ <boolProp name="TCPSampler.reUseConnection">true</boolProp>
19
+ <stringProp name="TCPSampler.port"/>
20
+ <boolProp name="TCPSampler.nodelay">false</boolProp>
21
+ <stringProp name="TCPSampler.timeout"/>
22
+ <stringProp name="TCPSampler.request"/>
23
+ <boolProp name="TCPSampler.closeConnection">false</boolProp>
24
+ <stringProp name="ConfigTestElement.username"/>
25
+ <stringProp name="ConfigTestElement.password"/>
26
+ </TCPSampler>)
27
+ EOS
28
+ update params
29
+ update_at_xpath params if params[:update_at_xpath]
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,31 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def tcp_sampler_config(params={}, &block)
4
+ node = RubyJmeter::TcpSamplerConfig.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TcpSamplerConfig
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'TcpSamplerConfig'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="#{params[:name]}" enabled="true">
17
+ <stringProp name="TCPSampler.server"/>
18
+ <boolProp name="TCPSampler.reUseConnection">true</boolProp>
19
+ <stringProp name="TCPSampler.port"/>
20
+ <boolProp name="TCPSampler.nodelay">false</boolProp>
21
+ <stringProp name="TCPSampler.timeout"/>
22
+ <stringProp name="TCPSampler.request"/>
23
+ <boolProp name="TCPSampler.closeConnection">false</boolProp>
24
+ </ConfigTestElement>)
25
+ EOS
26
+ update params
27
+ update_at_xpath params if params[:update_at_xpath]
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,27 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def test_action(params={}, &block)
4
+ node = RubyJmeter::TestAction.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TestAction
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'TestAction'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TestAction guiclass="TestActionGui" testclass="TestAction" testname="#{params[:name]}" enabled="true">
17
+ <intProp name="ActionProcessor.action">1</intProp>
18
+ <intProp name="ActionProcessor.target">0</intProp>
19
+ <stringProp name="ActionProcessor.duration"/>
20
+ </TestAction>)
21
+ EOS
22
+ update params
23
+ update_at_xpath params if params[:update_at_xpath]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,31 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def test_plan(params={}, &block)
4
+ node = RubyJmeter::TestPlan.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TestPlan
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'TestPlan'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="#{params[:name]}" enabled="true">
17
+ <stringProp name="TestPlan.comments"/>
18
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
19
+ <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
20
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="#{params[:name]}" enabled="true">
21
+ <collectionProp name="Arguments.arguments"/>
22
+ </elementProp>
23
+ <stringProp name="TestPlan.user_define_classpath"/>
24
+ </TestPlan>)
25
+ EOS
26
+ update params
27
+ update_at_xpath params if params[:update_at_xpath]
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,36 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def thread_group(params={}, &block)
4
+ node = RubyJmeter::ThreadGroup.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class ThreadGroup
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'ThreadGroup'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="#{params[:name]}" enabled="true">
17
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
18
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="#{params[:name]}" enabled="true">
19
+ <boolProp name="LoopController.continue_forever">false</boolProp>
20
+ <stringProp name="LoopController.loops">1</stringProp>
21
+ </elementProp>
22
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
23
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
24
+ <longProp name="ThreadGroup.start_time">1366415241000</longProp>
25
+ <longProp name="ThreadGroup.end_time">1366415241000</longProp>
26
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
27
+ <stringProp name="ThreadGroup.duration"/>
28
+ <stringProp name="ThreadGroup.delay"/>
29
+ </ThreadGroup>)
30
+ EOS
31
+ update params
32
+ update_at_xpath params if params[:update_at_xpath]
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,32 @@
1
+ module RubyJmeter
2
+ class DSL
3
+ def throughput_controller(params={}, &block)
4
+ node = RubyJmeter::ThroughputController.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class ThroughputController
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ params[:name] ||= 'ThroughputController'
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="#{params[:name]}" enabled="true">
17
+ <intProp name="ThroughputController.style">0</intProp>
18
+ <boolProp name="ThroughputController.perThread">false</boolProp>
19
+ <intProp name="ThroughputController.maxThroughput">1</intProp>
20
+ <FloatProperty>
21
+ <name>ThroughputController.percentThroughput</name>
22
+ <value>100.0</value>
23
+ <savedValue>0.0</savedValue>
24
+ </FloatProperty>
25
+ </ThroughputController>)
26
+ EOS
27
+ update params
28
+ update_at_xpath params if params[:update_at_xpath]
29
+ end
30
+ end
31
+
32
+ end