ruby-jmeter 2.11.10 → 2.11.11
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.
- checksums.yaml +4 -4
- data/examples/basic_test_fragment.rb +14 -0
- data/lib/ruby-jmeter/DSL.md +2 -0
- data/lib/ruby-jmeter/dsl.rb +8 -2
- data/lib/ruby-jmeter/dsl/test_fragment.rb +23 -0
- data/lib/ruby-jmeter/helpers/helper.rb +6 -0
- data/lib/ruby-jmeter/idl.xml +2 -0
- data/lib/ruby-jmeter/version.rb +1 -1
- data/spec/dsl_spec.rb +48 -1
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: eca901af7971565233871283172ae07dc5cd15bf
         | 
| 4 | 
            +
              data.tar.gz: 13db5eeaf05cae1a9a0ec13daf508ed1422171f7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 74c809f63d71cb7273ce15cdf20d5adb1ac8c0e0a1e466b1e99f99ebf3f8e399a851b219cc2f50b59ca69560f3d2c443f75c16d3ff2ec250b8f9f9368e679478
         | 
| 7 | 
            +
              data.tar.gz: 06e5aa4a6e85a3842df98d22e17647e628c0c9a37effdf0c855875c07bc5da036db520d452ae44e3949cc32de4fa7803526b00725d8c9919c4b3a693820f97d3
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         | 
| 2 | 
            +
            require 'ruby-jmeter'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            test do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              test_fragment name: 'anonymous_user', enabled: false do
         | 
| 7 | 
            +
                get name: 'Home Page', url: 'http://google.com'
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              threads count: 1 do
         | 
| 11 | 
            +
                module_controller test_fragment: 'WorkBench/TestPlan/anonymous_user'
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            end.run(path: '/usr/share/jmeter-2.11/bin/', gui: true)
         | 
    
        data/lib/ruby-jmeter/DSL.md
    CHANGED
    
    
    
        data/lib/ruby-jmeter/dsl.rb
    CHANGED
    
    | @@ -262,8 +262,14 @@ module RubyJmeter | |
| 262 262 | 
             
                def module_controller(params, &block)
         | 
| 263 263 | 
             
                  node = RubyJmeter::ModuleController.new(params)
         | 
| 264 264 |  | 
| 265 | 
            -
                   | 
| 266 | 
            -
             | 
| 265 | 
            +
                  if params[:test_fragment]
         | 
| 266 | 
            +
                    params[:test_fragment].kind_of?(String) &&
         | 
| 267 | 
            +
                    params[:test_fragment].split('/')
         | 
| 268 | 
            +
                  elsif params[:node_path]
         | 
| 269 | 
            +
                    params[:node_path]
         | 
| 270 | 
            +
                  else
         | 
| 271 | 
            +
                    []
         | 
| 272 | 
            +
                  end.each_with_index do |node_name, index|
         | 
| 267 273 | 
             
                    node.doc.at_xpath('//collectionProp') <<
         | 
| 268 274 | 
             
                      Nokogiri::XML(<<-EOS.strip_heredoc).children
         | 
| 269 275 | 
             
                        <stringProp name="node_#{index}">#{node_name}</stringProp>
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            module RubyJmeter
         | 
| 2 | 
            +
              class DSL
         | 
| 3 | 
            +
                def test_fragment(params={}, &block)
         | 
| 4 | 
            +
                  node = RubyJmeter::TestFragment.new(params)
         | 
| 5 | 
            +
                  attach_node(node, &block)
         | 
| 6 | 
            +
                end
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              class TestFragment
         | 
| 10 | 
            +
                attr_accessor :doc
         | 
| 11 | 
            +
                include Helper
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def initialize(params={})
         | 
| 14 | 
            +
                  testname = params.kind_of?(Array) ? 'TestFragment' : (params[:name] || 'TestFragment')
         | 
| 15 | 
            +
                  @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
         | 
| 16 | 
            +
            <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="#{testname}" enabled="false"/>)
         | 
| 17 | 
            +
                  EOS
         | 
| 18 | 
            +
                  update params
         | 
| 19 | 
            +
                  update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            end
         | 
| @@ -17,6 +17,7 @@ module RubyJmeter | |
| 17 17 | 
             
              module Helper
         | 
| 18 18 | 
             
                def update(params)
         | 
| 19 19 | 
             
                  params.delete(:name)
         | 
| 20 | 
            +
                  enabled_disabled(params)
         | 
| 20 21 | 
             
                  if params.class == Array
         | 
| 21 22 | 
             
                    update_collection params
         | 
| 22 23 | 
             
                  else
         | 
| @@ -32,6 +33,11 @@ module RubyJmeter | |
| 32 33 | 
             
                  end
         | 
| 33 34 | 
             
                end
         | 
| 34 35 |  | 
| 36 | 
            +
                def enabled_disabled(params)
         | 
| 37 | 
            +
                  return unless params.is_a?(Hash)
         | 
| 38 | 
            +
                  @doc.children.first.attributes['enabled'].value = params[:enabled].to_s.empty? ? 'true' : 'false'
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 35 41 | 
             
                def update_at_xpath(params)
         | 
| 36 42 | 
             
                  params[:update_at_xpath].each do |fragment|
         | 
| 37 43 | 
             
                    @doc.at_xpath(fragment[:xpath]) << fragment[:value]
         | 
    
        data/lib/ruby-jmeter/idl.xml
    CHANGED
    
    | @@ -241,6 +241,8 @@ | |
| 241 241 | 
             
                    <stringProp name="TestPlan.comments"> </stringProp>
         | 
| 242 242 | 
             
                  </Arguments>
         | 
| 243 243 | 
             
                  <hashTree/>
         | 
| 244 | 
            +
                  <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="Test Fragment" enabled="true"/>
         | 
| 245 | 
            +
                  <hashTree/>
         | 
| 244 246 | 
             
                  <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
         | 
| 245 247 | 
             
                    <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
         | 
| 246 248 | 
             
                    <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
         | 
    
        data/lib/ruby-jmeter/version.rb
    CHANGED
    
    
    
        data/spec/dsl_spec.rb
    CHANGED
    
    | @@ -84,6 +84,21 @@ describe "DSL" do | |
| 84 84 | 
             
              end
         | 
| 85 85 |  | 
| 86 86 |  | 
| 87 | 
            +
              describe 'disabled elements' do
         | 
| 88 | 
            +
                let(:doc) do
         | 
| 89 | 
            +
                  test do
         | 
| 90 | 
            +
                    header name: 'Accept', value: '*', enabled: false
         | 
| 91 | 
            +
                  end.to_doc
         | 
| 92 | 
            +
                end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                let(:fragment) {  doc.search("//HeaderManager") }
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                it 'should be disabled' do
         | 
| 97 | 
            +
                  fragment.first.attributes['enabled'].value.should == 'false'
         | 
| 98 | 
            +
                end
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
             | 
| 87 102 | 
             
              describe 'header manager' do
         | 
| 88 103 | 
             
                let(:doc) do
         | 
| 89 104 | 
             
                  test do
         | 
| @@ -121,6 +136,7 @@ describe "DSL" do | |
| 121 136 | 
             
                end
         | 
| 122 137 | 
             
              end
         | 
| 123 138 |  | 
| 139 | 
            +
             | 
| 124 140 | 
             
              describe 'the clear_each_iteration option should be respected' do
         | 
| 125 141 | 
             
                let(:doc) do
         | 
| 126 142 | 
             
                  test do
         | 
| @@ -138,6 +154,7 @@ describe "DSL" do | |
| 138 154 | 
             
                end
         | 
| 139 155 | 
             
              end
         | 
| 140 156 |  | 
| 157 | 
            +
             | 
| 141 158 | 
             
              describe 'test plan' do
         | 
| 142 159 | 
             
                it 'should allow to take params' do
         | 
| 143 160 | 
             
                  test_plan = test({"TestPlan.serialize_threadgroups" => "false"}) {}
         | 
| @@ -301,6 +318,7 @@ describe "DSL" do | |
| 301 318 | 
             
                end
         | 
| 302 319 | 
             
              end
         | 
| 303 320 |  | 
| 321 | 
            +
             | 
| 304 322 | 
             
              describe 'visit raw_path' do
         | 
| 305 323 | 
             
                let(:doc) do
         | 
| 306 324 | 
             
                  test do
         | 
| @@ -606,6 +624,7 @@ describe "DSL" do | |
| 606 624 | 
             
                end
         | 
| 607 625 | 
             
              end
         | 
| 608 626 |  | 
| 627 | 
            +
             | 
| 609 628 | 
             
              describe 'regex extract' do
         | 
| 610 629 | 
             
                let(:doc) do
         | 
| 611 630 | 
             
                  test do
         | 
| @@ -754,6 +773,7 @@ describe "DSL" do | |
| 754 773 |  | 
| 755 774 | 
             
              end
         | 
| 756 775 |  | 
| 776 | 
            +
             | 
| 757 777 | 
             
              describe 'raw body containing xml entities' do
         | 
| 758 778 | 
             
                let(:doc) do
         | 
| 759 779 | 
             
                  test do
         | 
| @@ -770,6 +790,7 @@ describe "DSL" do | |
| 770 790 | 
             
                end
         | 
| 771 791 | 
             
              end
         | 
| 772 792 |  | 
| 793 | 
            +
             | 
| 773 794 | 
             
              describe 'constant_throughput_timer' do
         | 
| 774 795 | 
             
                let(:doc) do
         | 
| 775 796 | 
             
                  test do
         | 
| @@ -791,6 +812,7 @@ describe "DSL" do | |
| 791 812 | 
             
                end
         | 
| 792 813 | 
             
              end
         | 
| 793 814 |  | 
| 815 | 
            +
             | 
| 794 816 | 
             
              describe 'run' do
         | 
| 795 817 | 
             
                let(:deflate_properties) {
         | 
| 796 818 | 
             
                  File.expand_path('../../lib/ruby-jmeter/helpers/jmeter.properties', __FILE__)
         | 
| @@ -838,6 +860,7 @@ describe "DSL" do | |
| 838 860 |  | 
| 839 861 | 
             
              end
         | 
| 840 862 |  | 
| 863 | 
            +
             | 
| 841 864 | 
             
              describe 'module controllers' do
         | 
| 842 865 | 
             
                let(:doc) do
         | 
| 843 866 | 
             
                  test name: 'tests' do
         | 
| @@ -859,7 +882,6 @@ describe "DSL" do | |
| 859 882 | 
             
                let(:test_module) { doc.search("//ModuleController").first }
         | 
| 860 883 | 
             
                let(:nodes) { test_module.search(".//stringProp") }
         | 
| 861 884 |  | 
| 862 | 
            -
             | 
| 863 885 | 
             
                it 'should have a node path' do
         | 
| 864 886 | 
             
                  nodes.length.should == 4
         | 
| 865 887 | 
             
                  nodes[0].text.should == 'WorkBench'
         | 
| @@ -869,4 +891,29 @@ describe "DSL" do | |
| 869 891 | 
             
                end
         | 
| 870 892 | 
             
              end
         | 
| 871 893 |  | 
| 894 | 
            +
             | 
| 895 | 
            +
              describe 'module controllers with test fragment' do
         | 
| 896 | 
            +
                let(:doc) do
         | 
| 897 | 
            +
                  test do
         | 
| 898 | 
            +
                    test_fragment name: 'some_test_fragment', enabled: 'false' do
         | 
| 899 | 
            +
                      get name: 'Home Page', url: 'http://google.com'
         | 
| 900 | 
            +
                    end
         | 
| 901 | 
            +
             | 
| 902 | 
            +
                    threads count: 1 do
         | 
| 903 | 
            +
                      module_controller test_fragment: 'WorkBench/TestPlan/some_test_fragment'
         | 
| 904 | 
            +
                    end
         | 
| 905 | 
            +
                  end.to_doc
         | 
| 906 | 
            +
                end
         | 
| 907 | 
            +
             | 
| 908 | 
            +
                let(:simple_controller) { doc.search("//GenericController").first }
         | 
| 909 | 
            +
                let(:test_module) { doc.search("//ModuleController").first }
         | 
| 910 | 
            +
                let(:nodes) { test_module.search(".//stringProp") }
         | 
| 911 | 
            +
             | 
| 912 | 
            +
                it 'should have a node path specified by test fragment' do
         | 
| 913 | 
            +
                  nodes.length.should == 3
         | 
| 914 | 
            +
                  nodes[0].text.should == 'WorkBench'
         | 
| 915 | 
            +
                  nodes[1].text.should == 'TestPlan'
         | 
| 916 | 
            +
                  nodes[2].text.should == 'some_test_fragment'
         | 
| 917 | 
            +
                end
         | 
| 918 | 
            +
              end
         | 
| 872 919 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ruby-jmeter
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.11. | 
| 4 | 
            +
              version: 2.11.11
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tim Koopmans
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-06-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rest-client
         | 
| @@ -80,6 +80,7 @@ files: | |
| 80 80 | 
             
            - examples/basic_query_params.rb
         | 
| 81 81 | 
             
            - examples/basic_run.rb
         | 
| 82 82 | 
             
            - examples/basic_simple_data_writer.rb
         | 
| 83 | 
            +
            - examples/basic_test_fragment.rb
         | 
| 83 84 | 
             
            - examples/basic_testdata.rb
         | 
| 84 85 | 
             
            - examples/basic_think_time.rb
         | 
| 85 86 | 
             
            - examples/basic_throughput_controller.rb
         | 
| @@ -194,6 +195,7 @@ files: | |
| 194 195 | 
             
            - lib/ruby-jmeter/dsl/tcp_sampler.rb
         | 
| 195 196 | 
             
            - lib/ruby-jmeter/dsl/tcp_sampler_config.rb
         | 
| 196 197 | 
             
            - lib/ruby-jmeter/dsl/test_action.rb
         | 
| 198 | 
            +
            - lib/ruby-jmeter/dsl/test_fragment.rb
         | 
| 197 199 | 
             
            - lib/ruby-jmeter/dsl/test_plan.rb
         | 
| 198 200 | 
             
            - lib/ruby-jmeter/dsl/thread_group.rb
         | 
| 199 201 | 
             
            - lib/ruby-jmeter/dsl/throughput_controller.rb
         |