gridinit-jmeter 0.3.2 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. data/Gemfile +2 -1
  2. data/README.md +51 -72
  3. data/examples/basic_assertion.rb +6 -6
  4. data/examples/basic_auth.rb +5 -5
  5. data/examples/basic_cache.rb +5 -5
  6. data/examples/basic_cookies.rb +5 -5
  7. data/examples/basic_extract.rb +4 -10
  8. data/examples/basic_gc_results.rb +12 -9
  9. data/examples/basic_google.rb +3 -3
  10. data/examples/basic_grid.rb +3 -6
  11. data/examples/basic_header.rb +12 -10
  12. data/examples/basic_ldap_ext.rb +11 -12
  13. data/examples/basic_post.rb +5 -6
  14. data/examples/basic_query_params.rb +3 -3
  15. data/examples/basic_think_time.rb +7 -4
  16. data/examples/basic_throughput_shaping_timer.rb +4 -4
  17. data/examples/etsy_login_browse.rb +21 -21
  18. data/lib/gridinit-jmeter/DSL.md +237 -0
  19. data/lib/gridinit-jmeter/{idl → dsl}/access_log_sampler.rb +4 -2
  20. data/lib/gridinit-jmeter/{idl → dsl}/aggregate_graph.rb +4 -2
  21. data/lib/gridinit-jmeter/{idl → dsl}/aggregate_report.rb +4 -2
  22. data/lib/gridinit-jmeter/{idl → dsl}/ajp13_sampler.rb +5 -3
  23. data/lib/gridinit-jmeter/{idl → dsl}/assertion_results.rb +4 -2
  24. data/lib/gridinit-jmeter/{idl → dsl}/beanshell_assertion.rb +4 -2
  25. data/lib/gridinit-jmeter/{idl → dsl}/beanshell_listener.rb +4 -2
  26. data/lib/gridinit-jmeter/{idl → dsl}/beanshell_postprocessor.rb +4 -2
  27. data/lib/gridinit-jmeter/{idl → dsl}/beanshell_preprocessor.rb +4 -2
  28. data/lib/gridinit-jmeter/{idl → dsl}/beanshell_sampler.rb +4 -2
  29. data/lib/gridinit-jmeter/{idl → dsl}/beanshell_timer.rb +4 -2
  30. data/lib/gridinit-jmeter/{idl → dsl}/bsf_assertion.rb +4 -2
  31. data/lib/gridinit-jmeter/{idl → dsl}/bsf_listener.rb +4 -2
  32. data/lib/gridinit-jmeter/{idl → dsl}/bsf_postprocessor.rb +4 -2
  33. data/lib/gridinit-jmeter/{idl → dsl}/bsf_preprocessor.rb +4 -2
  34. data/lib/gridinit-jmeter/{idl → dsl}/bsf_sampler.rb +4 -2
  35. data/lib/gridinit-jmeter/{idl → dsl}/bsf_timer.rb +4 -2
  36. data/lib/gridinit-jmeter/{idl → dsl}/compare_assertion.rb +4 -2
  37. data/lib/gridinit-jmeter/{idl → dsl}/comparison_assertion_visualizer.rb +4 -2
  38. data/lib/gridinit-jmeter/{idl → dsl}/constant_throughput_timer.rb +4 -2
  39. data/lib/gridinit-jmeter/{idl → dsl}/constant_timer.rb +4 -2
  40. data/lib/gridinit-jmeter/{idl → dsl}/counter.rb +4 -2
  41. data/lib/gridinit-jmeter/{idl → dsl}/cssjquery_extractor.rb +4 -2
  42. data/lib/gridinit-jmeter/{idl → dsl}/csv_data_set_config.rb +4 -2
  43. data/lib/gridinit-jmeter/{idl → dsl}/debug_postprocessor.rb +4 -2
  44. data/lib/gridinit-jmeter/{idl → dsl}/debug_sampler.rb +4 -2
  45. data/lib/gridinit-jmeter/{idl → dsl}/distribution_graphalpha.rb +4 -2
  46. data/lib/gridinit-jmeter/{idl → dsl}/duration_assertion.rb +4 -2
  47. data/lib/gridinit-jmeter/{idl → dsl}/foreach_controller.rb +4 -2
  48. data/lib/gridinit-jmeter/{idl → dsl}/ftp_request.rb +4 -2
  49. data/lib/gridinit-jmeter/{idl → dsl}/ftp_request_defaults.rb +4 -2
  50. data/lib/gridinit-jmeter/{idl → dsl}/gaussian_random_timer.rb +4 -2
  51. data/lib/gridinit-jmeter/{idl → dsl}/generate_summary_results.rb +4 -2
  52. data/lib/gridinit-jmeter/{idl → dsl}/graph_results.rb +4 -2
  53. data/lib/gridinit-jmeter/{idl → dsl}/html_assertion.rb +4 -2
  54. data/lib/gridinit-jmeter/{idl → dsl}/html_link_parser.rb +4 -2
  55. data/lib/gridinit-jmeter/{idl → dsl}/html_parameter_mask.rb +4 -2
  56. data/lib/gridinit-jmeter/dsl/http_authorization_manager.rb +36 -0
  57. data/lib/gridinit-jmeter/{idl → dsl}/http_cache_manager.rb +4 -2
  58. data/lib/gridinit-jmeter/{idl → dsl}/http_cookie_manager.rb +5 -2
  59. data/lib/gridinit-jmeter/{idl → dsl}/http_header_manager.rb +10 -3
  60. data/lib/gridinit-jmeter/{idl → dsl}/http_request.rb +5 -3
  61. data/lib/gridinit-jmeter/{idl → dsl}/http_request_defaults.rb +15 -4
  62. data/lib/gridinit-jmeter/{idl → dsl}/http_url_rewriting_modifier.rb +4 -2
  63. data/lib/gridinit-jmeter/{idl → dsl}/if_controller.rb +5 -2
  64. data/lib/gridinit-jmeter/{idl → dsl}/include_controller.rb +4 -2
  65. data/lib/gridinit-jmeter/{idl → dsl}/java_request.rb +4 -2
  66. data/lib/gridinit-jmeter/{idl → dsl}/java_request_defaults.rb +4 -2
  67. data/lib/gridinit-jmeter/{idl → dsl}/jdbc_connection_configuration.rb +4 -2
  68. data/lib/gridinit-jmeter/{idl → dsl}/jdbc_postprocessor.rb +4 -2
  69. data/lib/gridinit-jmeter/{idl → dsl}/jdbc_preprocessor.rb +4 -2
  70. data/lib/gridinit-jmeter/{idl → dsl}/jdbc_request.rb +4 -2
  71. data/lib/gridinit-jmeter/{idl → dsl}/jms_pointtopoint.rb +6 -4
  72. data/lib/gridinit-jmeter/{idl → dsl}/jms_publisher.rb +5 -3
  73. data/lib/gridinit-jmeter/{idl → dsl}/jms_subscriber.rb +4 -2
  74. data/lib/gridinit-jmeter/{idl → dsl}/jsr223_assertion.rb +4 -2
  75. data/lib/gridinit-jmeter/{idl → dsl}/jsr223_listener.rb +4 -2
  76. data/lib/gridinit-jmeter/{idl → dsl}/jsr223_postprocessor.rb +4 -2
  77. data/lib/gridinit-jmeter/{idl → dsl}/jsr223_preprocessor.rb +4 -2
  78. data/lib/gridinit-jmeter/{idl → dsl}/jsr223_sampler.rb +4 -2
  79. data/lib/gridinit-jmeter/{idl → dsl}/jsr223_timer.rb +4 -2
  80. data/lib/gridinit-jmeter/{idl → dsl}/junit_request.rb +4 -2
  81. data/lib/gridinit-jmeter/{idl → dsl}/keystore_configuration.rb +4 -2
  82. data/lib/gridinit-jmeter/{idl → dsl}/ldap_extended_request.rb +4 -2
  83. data/lib/gridinit-jmeter/{idl → dsl}/ldap_extended_request_defaults.rb +4 -2
  84. data/lib/gridinit-jmeter/{idl → dsl}/ldap_request.rb +5 -3
  85. data/lib/gridinit-jmeter/{idl → dsl}/ldap_request_defaults.rb +13 -4
  86. data/lib/gridinit-jmeter/{idl → dsl}/login_config_element.rb +4 -2
  87. data/lib/gridinit-jmeter/{idl → dsl}/loop_controller.rb +4 -2
  88. data/lib/gridinit-jmeter/{idl → dsl}/mail_reader_sampler.rb +4 -2
  89. data/lib/gridinit-jmeter/{idl → dsl}/mailer_visualizer.rb +4 -2
  90. data/lib/gridinit-jmeter/{idl → dsl}/md5hex_assertion.rb +4 -2
  91. data/lib/gridinit-jmeter/{idl → dsl}/module_controller.rb +4 -2
  92. data/lib/gridinit-jmeter/{idl → dsl}/monitor_results.rb +4 -2
  93. data/lib/gridinit-jmeter/{idl → dsl}/once_only_controller.rb +4 -2
  94. data/lib/gridinit-jmeter/{idl → dsl}/os_process_sampler.rb +6 -4
  95. data/lib/gridinit-jmeter/{idl → dsl}/poisson_random_timer.rb +4 -2
  96. data/lib/gridinit-jmeter/{idl → dsl}/random_controller.rb +4 -2
  97. data/lib/gridinit-jmeter/{idl → dsl}/random_order_controller.rb +4 -2
  98. data/lib/gridinit-jmeter/{idl → dsl}/random_variable.rb +4 -2
  99. data/lib/gridinit-jmeter/{idl → dsl}/recording_controller.rb +4 -2
  100. data/lib/gridinit-jmeter/{idl → dsl}/regex_user_parameters.rb +4 -2
  101. data/lib/gridinit-jmeter/{idl → dsl}/regular_expression_extractor.rb +5 -2
  102. data/lib/gridinit-jmeter/{idl → dsl}/response_assertion.rb +8 -3
  103. data/lib/gridinit-jmeter/{idl → dsl}/response_time_graph.rb +4 -2
  104. data/lib/gridinit-jmeter/{idl → dsl}/result_status_action_handler.rb +4 -2
  105. data/lib/gridinit-jmeter/{idl → dsl}/runtime_controller.rb +4 -2
  106. data/lib/gridinit-jmeter/{idl → dsl}/save_responses_to_a_file.rb +4 -2
  107. data/lib/gridinit-jmeter/{idl → dsl}/simple_config_element.rb +4 -2
  108. data/lib/gridinit-jmeter/{idl → dsl}/simple_controller.rb +4 -2
  109. data/lib/gridinit-jmeter/{idl → dsl}/simple_data_writer.rb +4 -2
  110. data/lib/gridinit-jmeter/{idl → dsl}/smime_assertion.rb +4 -2
  111. data/lib/gridinit-jmeter/{idl → dsl}/smtp_sampler.rb +4 -2
  112. data/lib/gridinit-jmeter/{idl → dsl}/soapxmlrpc_request.rb +4 -2
  113. data/lib/gridinit-jmeter/{idl → dsl}/spline_visualizer.rb +4 -2
  114. data/lib/gridinit-jmeter/{idl → dsl}/summary_report.rb +4 -2
  115. data/lib/gridinit-jmeter/{idl → dsl}/switch_controller.rb +4 -2
  116. data/lib/gridinit-jmeter/{idl → dsl}/synchronizing_timer.rb +4 -2
  117. data/lib/gridinit-jmeter/{idl → dsl}/tcp_sampler.rb +4 -2
  118. data/lib/gridinit-jmeter/{idl → dsl}/tcp_sampler_config.rb +4 -2
  119. data/lib/gridinit-jmeter/{idl → dsl}/test_action.rb +4 -2
  120. data/lib/gridinit-jmeter/{idl → dsl}/test_plan.rb +5 -3
  121. data/lib/gridinit-jmeter/{idl → dsl}/thread_group.rb +5 -3
  122. data/lib/gridinit-jmeter/{idl → dsl}/throughput_controller.rb +5 -3
  123. data/lib/gridinit-jmeter/{idl → dsl}/transaction_controller.rb +6 -3
  124. data/lib/gridinit-jmeter/{idl → dsl}/uniform_random_timer.rb +4 -2
  125. data/lib/gridinit-jmeter/dsl/user_defined_variables.rb +35 -0
  126. data/lib/gridinit-jmeter/{idl → dsl}/user_parameters.rb +4 -2
  127. data/lib/gridinit-jmeter/{idl → dsl}/view_results_in_table.rb +4 -2
  128. data/lib/gridinit-jmeter/{idl → dsl}/view_results_tree.rb +4 -2
  129. data/lib/gridinit-jmeter/{idl → dsl}/while_controller.rb +4 -2
  130. data/lib/gridinit-jmeter/{idl → dsl}/xml_assertion.rb +4 -2
  131. data/lib/gridinit-jmeter/{idl → dsl}/xml_schema_assertion.rb +4 -2
  132. data/lib/gridinit-jmeter/{idl → dsl}/xpath_assertion.rb +4 -2
  133. data/lib/gridinit-jmeter/{idl → dsl}/xpath_extractor.rb +4 -2
  134. data/lib/gridinit-jmeter/dsl.rb +170 -187
  135. data/lib/gridinit-jmeter/helpers/helper.rb +43 -0
  136. data/lib/gridinit-jmeter/helpers/parser.rb +109 -0
  137. data/lib/gridinit-jmeter/idl.rb +16 -6
  138. data/lib/gridinit-jmeter/idl.xml +54 -11
  139. data/lib/gridinit-jmeter/{listeners → plugins}/gc_console_status_logger.rb +0 -0
  140. data/lib/gridinit-jmeter/{listeners → plugins}/gc_latencies_over_time.rb +0 -0
  141. data/lib/gridinit-jmeter/{listeners → plugins}/gc_response_codes_per_second.rb +0 -0
  142. data/lib/gridinit-jmeter/{listeners → plugins}/gc_response_times_distribution.rb +0 -0
  143. data/lib/gridinit-jmeter/{listeners → plugins}/gc_response_times_over_time.rb +0 -0
  144. data/lib/gridinit-jmeter/{listeners → plugins}/gc_response_times_percentiles.rb +0 -0
  145. data/lib/gridinit-jmeter/{listeners → plugins}/gc_transactions_per_second.rb +0 -0
  146. data/lib/gridinit-jmeter/{timers/gc_throughput_shaping_timer.rb → plugins/gc_variable_throughput_timer.rb} +1 -1
  147. data/lib/gridinit-jmeter/version.rb +1 -1
  148. data/lib/gridinit-jmeter.rb +6 -105
  149. data/spec/dsl_spec.rb +377 -82
  150. metadata +131 -174
  151. data/examples/basic_proxy.rb +0 -8
  152. data/examples/basic_results.rb +0 -22
  153. data/examples/basic_run.rb +0 -12
  154. data/examples/basic_simple_data_writer.rb +0 -14
  155. data/examples/basic_stdout.rb +0 -8
  156. data/examples/basic_test_data.rb +0 -15
  157. data/examples/basic_testplan.jmx +0 -138
  158. data/examples/basic_testplan.rb +0 -44
  159. data/examples/jbhifi_now_search.rb +0 -94
  160. data/lib/gridinit-jmeter/assertions/response_assertion.rb +0 -55
  161. data/lib/gridinit-jmeter/config/auth_manager.rb +0 -26
  162. data/lib/gridinit-jmeter/config/cache_manager.rb +0 -20
  163. data/lib/gridinit-jmeter/config/cookie_manager.rb +0 -21
  164. data/lib/gridinit-jmeter/config/counter_config.rb +0 -24
  165. data/lib/gridinit-jmeter/config/header_manager.rb +0 -26
  166. data/lib/gridinit-jmeter/config/random_variable.rb +0 -24
  167. data/lib/gridinit-jmeter/config/request_defaults.rb +0 -31
  168. data/lib/gridinit-jmeter/config/user_defined_variable.rb +0 -25
  169. data/lib/gridinit-jmeter/controllers/if_controller.rb +0 -20
  170. data/lib/gridinit-jmeter/controllers/interleave.rb +0 -18
  171. data/lib/gridinit-jmeter/controllers/loop_controller.rb +0 -19
  172. data/lib/gridinit-jmeter/controllers/once_only.rb +0 -17
  173. data/lib/gridinit-jmeter/controllers/random_order.rb +0 -16
  174. data/lib/gridinit-jmeter/controllers/simple.rb +0 -17
  175. data/lib/gridinit-jmeter/controllers/switch.rb +0 -20
  176. data/lib/gridinit-jmeter/controllers/throughput.rb +0 -26
  177. data/lib/gridinit-jmeter/controllers/transaction.rb +0 -19
  178. data/lib/gridinit-jmeter/controllers/while_controller.rb +0 -18
  179. data/lib/gridinit-jmeter/helpers/dsl_helper.rb +0 -21
  180. data/lib/gridinit-jmeter/idl/http_authorization_manager.rb +0 -26
  181. data/lib/gridinit-jmeter/idl/user_defined_variables.rb +0 -26
  182. data/lib/gridinit-jmeter/listeners/aggregate_report.rb +0 -47
  183. data/lib/gridinit-jmeter/listeners/graph_visualizer.rb +0 -46
  184. data/lib/gridinit-jmeter/listeners/response_time_graph_visualizer.rb +0 -47
  185. data/lib/gridinit-jmeter/listeners/simple_data_writer.rb +0 -51
  186. data/lib/gridinit-jmeter/listeners/stat_visualizer.rb +0 -46
  187. data/lib/gridinit-jmeter/listeners/summary_report.rb +0 -46
  188. data/lib/gridinit-jmeter/listeners/table_visualizer.rb +0 -46
  189. data/lib/gridinit-jmeter/listeners/view_results_full_visualizer.rb +0 -57
  190. data/lib/gridinit-jmeter/post_processors/regex_extractor.rb +0 -34
  191. data/lib/gridinit-jmeter/post_processors/xpath_extractor.rb +0 -23
  192. data/lib/gridinit-jmeter/pre_processors/bean_shell_pre_processor.rb +0 -23
  193. data/lib/gridinit-jmeter/samplers/http_sampler.rb +0 -99
  194. data/lib/gridinit-jmeter/samplers/ldap_ext_sampler.rb +0 -36
  195. data/lib/gridinit-jmeter/samplers/soap_sampler.rb +0 -26
  196. data/lib/gridinit-jmeter/test_plan/test_plan.rb +0 -23
  197. data/lib/gridinit-jmeter/threads/thread_group.rb +0 -30
  198. data/lib/gridinit-jmeter/timers/gaussian_random_timer.rb +0 -18
@@ -0,0 +1,43 @@
1
+ module Gridinit
2
+
3
+ def dsl_eval(dsl, &block)
4
+ block_context = eval("self", block.binding)
5
+ proxy_context = Gridinit::Jmeter::FallbackContextProxy.new(dsl, block_context)
6
+ begin
7
+ block_context.instance_variables.each { |ivar| proxy_context.instance_variable_set(ivar, block_context.instance_variable_get(ivar)) }
8
+ proxy_context.instance_eval(&block)
9
+ ensure
10
+ block_context.instance_variables.each { |ivar| block_context.instance_variable_set(ivar, proxy_context.instance_variable_get(ivar)) }
11
+ end
12
+ dsl
13
+ end
14
+
15
+ module_function :dsl_eval
16
+
17
+ module Jmeter
18
+ module Helper
19
+ def update(params)
20
+ params.delete(:name)
21
+ params.each do |name, value|
22
+ node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
23
+ node.first.content = value unless node.empty?
24
+ end
25
+ end
26
+
27
+ def update_at_xpath(params)
28
+ params[:update_at_xpath].each do |fragment|
29
+ @doc.at_xpath(fragment[:xpath]) << fragment[:value]
30
+ end
31
+ end
32
+
33
+ def enabled(params)
34
+ #default to true unless explicitly set to false
35
+ if params.has_key?(:enabled) && params[:enabled] == false
36
+ 'false'
37
+ else
38
+ 'true'
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,109 @@
1
+ module Gridinit
2
+
3
+ module Jmeter
4
+ module Parser
5
+
6
+ def parse_http_request(params)
7
+ parse_url(params) unless params[:url].empty?
8
+
9
+ if params[:raw_path]
10
+ params[:path] = params[:url]
11
+ else
12
+ params[:fill_in] ||= {}
13
+ params[:params] && params[:params].split('&').each do |param|
14
+ name,value = param.split('=')
15
+ params[:fill_in][name] = value
16
+ end
17
+ end
18
+
19
+ fill_in(params) if params.has_key?(:fill_in)
20
+ raw_body(params) if params.has_key?(:raw_body)
21
+ end
22
+
23
+ def parse_url(params)
24
+ if params[:url] =~ /https?:\/\/\$/ || params[:url][0] == '$'
25
+ params[:path] = params[:url] # special case for named expressions
26
+ else
27
+ uri = parse_uri(params[:url])
28
+ params[:port] ||= uri.port unless URI.parse(URI::encode(params[:url])).scheme.nil?
29
+ params[:protocol] ||= uri.scheme unless URI.parse(URI::encode(params[:url])).scheme.nil?
30
+ params[:domain] ||= uri.host
31
+ params[:path] ||= uri.path && URI::decode(uri.path)
32
+ params[:params] ||= uri.query && URI::decode(uri.query)
33
+ end
34
+ params.delete(:url)
35
+ end
36
+
37
+ def parse_uri(uri)
38
+ URI.parse(URI::encode(uri)).scheme.nil? ?
39
+ URI.parse(URI::encode("http://#{uri}")) :
40
+ URI.parse(URI::encode(uri))
41
+ end
42
+
43
+ def fill_in(params)
44
+ params[:update_at_xpath] ||= []
45
+ params[:update_at_xpath] += params[:fill_in].collect do |name, value|
46
+ {
47
+ :xpath => '//collectionProp',
48
+ :value => Nokogiri::XML(<<-EOF.strip_heredoc).children
49
+ <elementProp name="#{name}" elementType="HTTPArgument">
50
+ <boolProp name="HTTPArgument.always_encode">#{params[:always_encode] ? 'true' : false}</boolProp>
51
+ <stringProp name="Argument.value">#{value}</stringProp>
52
+ <stringProp name="Argument.metadata">=</stringProp>
53
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
54
+ <stringProp name="Argument.name">#{name}</stringProp>
55
+ </elementProp>
56
+ EOF
57
+ }
58
+ end
59
+ params.delete(:fill_in)
60
+ end
61
+
62
+ def raw_body(params)
63
+ params[:update_at_xpath] ||= []
64
+ params[:update_at_xpath] << {
65
+ :xpath => '//HTTPSamplerProxy',
66
+ :value => Nokogiri::XML(<<-EOF.strip_heredoc).children
67
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
68
+ EOF
69
+ }
70
+
71
+ params[:update_at_xpath] << {
72
+ :xpath => '//collectionProp',
73
+ :value => Nokogiri::XML(<<-EOF.strip_heredoc).children
74
+ <elementProp name="" elementType="HTTPArgument">
75
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
76
+ <stringProp name="Argument.value">#{params[:raw_body]}</stringProp>
77
+ <stringProp name="Argument.metadata">=</stringProp>
78
+ </elementProp>
79
+ EOF
80
+ }
81
+ params.delete(:raw_body)
82
+ end
83
+
84
+ def parse_test_type(params)
85
+ case params.keys.first
86
+ when 'contains'
87
+ 2
88
+ when 'not-contains'
89
+ 6
90
+ when 'matches'
91
+ 1
92
+ when 'not-matches'
93
+ 5
94
+ when 'equals'
95
+ 8
96
+ when 'not-equals'
97
+ 12
98
+ when 'substring'
99
+ 16
100
+ when 'not-substring'
101
+ 20
102
+ else
103
+ 2
104
+ end
105
+ end
106
+
107
+ end
108
+ end
109
+ end
@@ -1,8 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
+ # This is an IDL script to translate a JMeter testplan into Ruby DSL objects
2
3
  require 'nokogiri'
3
- # require 'pry-debugger'
4
+ require 'pathname'
4
5
 
5
- file = File.open 'idl.xml'
6
+ home = Pathname("..").expand_path(__FILE__)
7
+ dsl = File.join(home, "/dsl")
8
+
9
+ file = File.open File.join(home, "idl.xml")
6
10
  doc = Nokogiri::XML file.read.gsub! /\n\s+/, ''
7
11
  nodes = doc.xpath '//jmeterTestPlan/hashTree'
8
12
 
@@ -29,10 +33,13 @@ doc.traverse do |node|
29
33
  node.name != 'elementProp'
30
34
  end
31
35
 
36
+ methods = []
37
+ methods << "# Gridinit::JMeter::DSL methods"
32
38
  results.each do |element|
33
39
  klass = element.attributes['testname'].to_s.classify
34
-
35
- File.open("idl/#{klass.underscore}.rb", 'w') { |file| file.write(<<EOC)
40
+ methods << "- #{element.attributes['testname'].to_s}\n `#{klass.underscore}`"
41
+ Dir.mkdir(dsl, 0700) unless Dir.exist? dsl
42
+ File.open("#{dsl}/#{klass.underscore}.rb", 'w') { |file| file.write(<<EOC)
36
43
  module Gridinit
37
44
  module Jmeter
38
45
 
@@ -47,11 +54,13 @@ module Gridinit
47
54
  attr_accessor :doc
48
55
  include Helper
49
56
 
50
- def initialize(name, params={})
57
+ def initialize(params={})
58
+ params[:name] ||= '#{klass}'
51
59
  @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
52
- #{element.to_xml.gsub /testname=".+?"/, 'testname="#{name}"'})
60
+ #{element.to_xml.gsub /testname=".+?"/, 'testname="#{params[:name]}"'})
53
61
  EOS
54
62
  update params
63
+ update_at_xpath params if params[:update_at_xpath]
55
64
  end
56
65
  end
57
66
 
@@ -61,3 +70,4 @@ EOC
61
70
  }
62
71
  end
63
72
 
73
+ File.open("#{home}/DSL.md", 'w') { |file| file.write methods.join("\n") }
@@ -43,7 +43,15 @@
43
43
  </ConfigTestElement>
44
44
  <hashTree/>
45
45
  <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
46
- <collectionProp name="AuthManager.auth_list"/>
46
+ <collectionProp name="AuthManager.auth_list">
47
+ <elementProp name="" elementType="Authorization">
48
+ <stringProp name="Authorization.url"></stringProp>
49
+ <stringProp name="Authorization.username"></stringProp>
50
+ <stringProp name="Authorization.password"></stringProp>
51
+ <stringProp name="Authorization.domain"></stringProp>
52
+ <stringProp name="Authorization.realm"></stringProp>
53
+ </elementProp>
54
+ </collectionProp>
47
55
  </AuthManager>
48
56
  <hashTree/>
49
57
  <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
@@ -54,10 +62,16 @@
54
62
  <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
55
63
  <collectionProp name="CookieManager.cookies"/>
56
64
  <boolProp name="CookieManager.clearEachIteration">false</boolProp>
65
+ <stringProp name="CookieManager.policy">default</stringProp>
57
66
  </CookieManager>
58
67
  <hashTree/>
59
68
  <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
60
- <collectionProp name="HeaderManager.headers"/>
69
+ <collectionProp name="HeaderManager.headers">
70
+ <elementProp name="" elementType="Header">
71
+ <stringProp name="Header.name"></stringProp>
72
+ <stringProp name="Header.value"></stringProp>
73
+ </elementProp>
74
+ </collectionProp>
61
75
  </HeaderManager>
62
76
  <hashTree/>
63
77
  <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
@@ -70,7 +84,16 @@
70
84
  <stringProp name="HTTPSampler.response_timeout"></stringProp>
71
85
  <stringProp name="HTTPSampler.protocol"></stringProp>
72
86
  <stringProp name="HTTPSampler.contentEncoding"></stringProp>
73
- <stringProp name="HTTPSampler.path"></stringProp>
87
+ <stringProp name="HTTPSampler.path">/</stringProp>
88
+ <stringProp name="HTTPSampler.method">GET</stringProp>
89
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
90
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
91
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
92
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
93
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
94
+ <boolProp name="HTTPSampler.image_parser">false</boolProp>
95
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
96
+ <boolProp name="HTTPSampler.concurrentDwn">false</boolProp>
74
97
  <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
75
98
  </ConfigTestElement>
76
99
  <hashTree/>
@@ -173,7 +196,14 @@
173
196
  <stringProp name="test">add</stringProp>
174
197
  <stringProp name="base_entry_dn"></stringProp>
175
198
  <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
176
- <collectionProp name="Arguments.arguments"/>
199
+ <collectionProp name="Arguments.arguments">
200
+ <elementProp name="testguid" elementType="Argument">
201
+ <stringProp name="Argument.name"></stringProp>
202
+ <stringProp name="Argument.value"></stringProp>
203
+ <stringProp name="Argument.metadata">=</stringProp>
204
+ </elementProp>
205
+ </collectionProp>
206
+ <stringProp name="TestPlan.comments"></stringProp>
177
207
  </elementProp>
178
208
  </ConfigTestElement>
179
209
  <hashTree/>
@@ -204,7 +234,14 @@
204
234
  </ConfigTestElement>
205
235
  <hashTree/>
206
236
  <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
207
- <collectionProp name="Arguments.arguments"/>
237
+ <collectionProp name="Arguments.arguments">
238
+ <elementProp name="testguid" elementType="Argument">
239
+ <stringProp name="Argument.name"></stringProp>
240
+ <stringProp name="Argument.value"></stringProp>
241
+ <stringProp name="Argument.metadata">=</stringProp>
242
+ </elementProp>
243
+ </collectionProp>
244
+ <stringProp name="TestPlan.comments"></stringProp>
208
245
  </Arguments>
209
246
  <hashTree/>
210
247
  <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
@@ -231,6 +268,7 @@
231
268
  <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
232
269
  <stringProp name="IfController.condition"></stringProp>
233
270
  <boolProp name="IfController.evaluateAll">false</boolProp>
271
+ <boolProp name="IfController.useExpression">false</boolProp>
234
272
  </IfController>
235
273
  <hashTree/>
236
274
  <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
@@ -266,7 +304,7 @@
266
304
  <hashTree/>
267
305
  <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
268
306
  <intProp name="ThroughputController.style">0</intProp>
269
- <boolProp name="ThroughputController.perThread">true</boolProp>
307
+ <boolProp name="ThroughputController.perThread">false</boolProp>
270
308
  <intProp name="ThroughputController.maxThroughput">1</intProp>
271
309
  <FloatProperty>
272
310
  <name>ThroughputController.percentThroughput</name>
@@ -276,7 +314,8 @@
276
314
  </ThroughputController>
277
315
  <hashTree/>
278
316
  <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
279
- <boolProp name="TransactionController.parent">false</boolProp>
317
+ <boolProp name="TransactionController.parent">true</boolProp>
318
+ <boolProp name="TransactionController.includeTimers">false</boolProp>
280
319
  </TransactionController>
281
320
  <hashTree/>
282
321
  <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
@@ -802,6 +841,7 @@
802
841
  <stringProp name="RegexExtractor.template"></stringProp>
803
842
  <stringProp name="RegexExtractor.default"></stringProp>
804
843
  <stringProp name="RegexExtractor.match_number"></stringProp>
844
+ <stringProp name="Sample.scope">all</stringProp>
805
845
  </RegexExtractor>
806
846
  <hashTree/>
807
847
  <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
@@ -875,10 +915,13 @@
875
915
  </MD5HexAssertion>
876
916
  <hashTree/>
877
917
  <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
878
- <collectionProp name="Asserion.test_strings"/>
879
- <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
880
- <boolProp name="Assertion.assume_success">false</boolProp>
881
- <intProp name="Assertion.test_type">2</intProp>
918
+ <collectionProp name="Asserion.test_strings">
919
+ <stringProp name="match"></stringProp>
920
+ </collectionProp>
921
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
922
+ <boolProp name="Assertion.assume_success">false</boolProp>
923
+ <intProp name="Assertion.test_type">2</intProp>
924
+ <stringProp name="Assertion.scope">all</stringProp>
882
925
  </ResponseAssertion>
883
926
  <hashTree/>
884
927
  <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
@@ -1,7 +1,7 @@
1
1
  module Gridinit
2
2
  module Jmeter
3
3
 
4
- class ThroughputShapingTimer
4
+ class GCThroughputShapingTimer
5
5
  attr_accessor :doc
6
6
  include Helper
7
7
  def initialize(name, steps, params={})
@@ -1,5 +1,5 @@
1
1
  module Gridinit
2
2
  module Jmeter
3
- VERSION = "0.3.2"
3
+ VERSION = "1.0.0.pre"
4
4
  end
5
5
  end
@@ -4,114 +4,15 @@ require 'json'
4
4
  require 'cgi'
5
5
  require 'open3'
6
6
 
7
- # DSL
8
- require 'gridinit-jmeter/dsl'
9
7
  require 'gridinit-jmeter/version'
8
+ require 'gridinit-jmeter/helpers/helper'
9
+ require 'gridinit-jmeter/helpers/parser'
10
10
  require 'gridinit-jmeter/helpers/fallback_content_proxy'
11
- require 'gridinit-jmeter/helpers/dsl_helper'
12
11
  require 'gridinit-jmeter/helpers/logger-colors'
13
12
  require 'gridinit-jmeter/helpers/strip-heredoc'
14
13
  require 'gridinit-jmeter/helpers/user-agents'
15
14
 
16
- # TEST PLAN
17
- require 'gridinit-jmeter/test_plan/test_plan'
18
-
19
- # THREADS
20
- require 'gridinit-jmeter/threads/thread_group'
21
- # require 'gridinit-jmeter/threads/gc_stepping_thread_group'
22
- # require 'gridinit-jmeter/threads/gc_ultimate_thread_group'
23
- # require 'gridinit-jmeter/threads/set_up_group'
24
- # require 'gridinit-jmeter/threads/tear_down_group'
25
-
26
- # CONFIG ELEMENT
27
- require 'gridinit-jmeter/config/counter_config'
28
- # require 'gridinit-jmeter/config/csv_data_set_config'
29
- # require 'gridinit-jmeter/config/ftp_request_defaults'
30
- require 'gridinit-jmeter/config/auth_manager'
31
- require 'gridinit-jmeter/config/cache_manager'
32
- require 'gridinit-jmeter/config/cookie_manager'
33
- require 'gridinit-jmeter/config/header_manager'
34
- require 'gridinit-jmeter/config/request_defaults'
35
- # require 'gridinit-jmeter/config/java_request_defaults'
36
- # require 'gridinit-jmeter/config/jdbc_connection_configuration'
37
- # require 'gridinit-jmeter/config/gc_lock_file_config'
38
- # require 'gridinit-jmeter/config/gc_variables_from_csv_file'
39
- # require 'gridinit-jmeter/config/keystore_configuration'
40
- # require 'gridinit-jmeter/config/ldap_extended_request_defaults'
41
- # require 'gridinit-jmeter/config/ldap_request_defaults'
42
- # require 'gridinit-jmeter/config/login_config_element'
43
- require 'gridinit-jmeter/config/random_variable'
44
- # require 'gridinit-jmeter/config/simple_config_element'
45
- # require 'gridinit-jmeter/config/tcp_sampler_config'
46
- require 'gridinit-jmeter/config/user_defined_variable'
47
-
48
- # TIMERS
49
- # require 'gridinit-jmeter/timers/beanshell_timer'
50
- # require 'gridinit-jmeter/timers/bsf_timer'
51
- # require 'gridinit-jmeter/timers/constant_throughput_timer'
52
- # require 'gridinit-jmeter/timers/constant_timer'
53
- require 'gridinit-jmeter/timers/gaussian_random_timer'
54
- require 'gridinit-jmeter/timers/gc_throughput_shaping_timer'
55
- # require 'gridinit-jmeter/timers/jsr223_timer'
56
- # require 'gridinit-jmeter/timers/poisson_random_timer'
57
- # require 'gridinit-jmeter/timers/synchronizing_timer'
58
- # require 'gridinit-jmeter/timers/uniform_random_timer'
59
-
60
- # PRE PROCESSORS
61
- require 'gridinit-jmeter/pre_processors/bean_shell_pre_processor'
62
- # require 'gridinit-jmeter/pre_processors/bsf_pre_processor'
63
- # require 'gridinit-jmeter/pre_processors/html_link_parser'
64
- # require 'gridinit-jmeter/pre_processors/http_url_rewriter'
65
- # require 'gridinit-jmeter/pre_processors/jdbc_pre_processor'
66
- # require 'gridinit-jmeter/pre_processors/gc_inter_thread_pre_processor'
67
- # require 'gridinit-jmeter/pre_processors/gc_raw_data_source_pre_processor'
68
- # require 'gridinit-jmeter/pre_processors/jsr223_pre_processor'
69
- # require 'gridinit-jmeter/pre_processors/user_parameters'
70
-
71
- # POST PROCESSORS
72
- # require 'gridinit-jmeter/post_processors/bean_shell_post_processor'
73
- # require 'gridinit-jmeter/post_processors/bsf_post_processor'
74
- # require 'gridinit-jmeter/post_processors/debug_post_processor'
75
- # require 'gridinit-jmeter/post_processors/jdbc_post_processor'
76
- # require 'gridinit-jmeter/post_processors/gc_inter_thread_communication_post_processor'
77
- # require 'gridinit-jmeter/post_processors/jsr223_post_processor'
78
- require 'gridinit-jmeter/post_processors/regex_extractor'
79
- # require 'gridinit-jmeter/post_processors/result_status_action_handler'
80
- require 'gridinit-jmeter/post_processors/xpath_extractor'
81
-
82
- # ASSERTIONS
83
- require 'gridinit-jmeter/assertions/response_assertion'
84
-
85
- # LISTENERS
86
- require 'gridinit-jmeter/listeners/view_results_full_visualizer'
87
- require 'gridinit-jmeter/listeners/table_visualizer'
88
- require 'gridinit-jmeter/listeners/graph_visualizer'
89
- require 'gridinit-jmeter/listeners/response_time_graph_visualizer'
90
- require 'gridinit-jmeter/listeners/stat_visualizer'
91
- require 'gridinit-jmeter/listeners/simple_data_writer'
92
- require 'gridinit-jmeter/listeners/summary_report'
93
- require 'gridinit-jmeter/listeners/aggregate_report'
94
- require 'gridinit-jmeter/listeners/gc_latencies_over_time'
95
- require 'gridinit-jmeter/listeners/gc_response_codes_per_second'
96
- require 'gridinit-jmeter/listeners/gc_response_times_distribution'
97
- require 'gridinit-jmeter/listeners/gc_response_times_over_time'
98
- require 'gridinit-jmeter/listeners/gc_response_times_percentiles'
99
- require 'gridinit-jmeter/listeners/gc_transactions_per_second'
100
- require 'gridinit-jmeter/listeners/gc_console_status_logger'
101
-
102
- # LOGIC CONTROLLERS
103
- require 'gridinit-jmeter/controllers/transaction'
104
- require 'gridinit-jmeter/controllers/once_only'
105
- require 'gridinit-jmeter/controllers/if_controller'
106
- require 'gridinit-jmeter/controllers/loop_controller'
107
- require 'gridinit-jmeter/controllers/throughput'
108
- require 'gridinit-jmeter/controllers/while_controller'
109
- require 'gridinit-jmeter/controllers/switch'
110
- require 'gridinit-jmeter/controllers/random_order'
111
- require 'gridinit-jmeter/controllers/simple'
112
- require 'gridinit-jmeter/controllers/interleave'
113
-
114
- # SAMPLERS
115
- require 'gridinit-jmeter/samplers/http_sampler'
116
- require 'gridinit-jmeter/samplers/ldap_ext_sampler'
117
- require 'gridinit-jmeter/samplers/soap_sampler'
15
+ lib = File.dirname(File.absolute_path(__FILE__))
16
+ Dir.glob(lib + '/gridinit-jmeter/dsl/*', &method(:require))
17
+ Dir.glob(lib + '/gridinit-jmeter/plugins/*', &method(:require))
18
+ require 'gridinit-jmeter/dsl'