Sha256: 96cc6aab52c84031ccabc9f4d3fc92bc6b899af06d3ab0f2746be32322505510

Contents?: true

Size: 1.58 KB

Versions: 19

Compression:

Stored size: 1.58 KB

Contents

module RubyJmeter
  class ExtendedDSL < DSL
    def http_request(*args, &block)
      params = args.shift || {}
      params = { url: params }.merge(args.shift || {}) if params.class == String

      params[:method] ||= case __callee__.to_s
      when 'visit'
        'GET'
      when 'submit'
        'POST'
      else
        __callee__.to_s.upcase
      end

      params[:name] ||= params[:url]

      parse_http_request(params)

      if params[:sample]
        transaction name: params[:name], parent: true do
          loops count: params[:sample].to_i do
            params.delete(:sample)
            attach_node(http_request_node(params), &block)
          end
        end
      else
        attach_node(http_request_node(params), &block)
      end
    end

    def http_request_node(params)
      RubyJmeter::HttpRequest.new(params).tap do |node|
        node.doc.children.first.add_child (
          Nokogiri::XML(<<-EOS.strip_heredoc).children
            <stringProp name="HTTPSampler.implementation">#{params[:implementation]}</stringProp>
          EOS
        ) if params[:implementation]

        node.doc.children.first.add_child (
          Nokogiri::XML(<<-EOS.strip_heredoc).children
            <stringProp name="TestPlan.comments">#{params[:comments]}</stringProp>
          EOS
        ) if params[:comments]
      end
    end

    alias request http_request
    alias get http_request
    alias visit http_request
    alias post http_request
    alias submit http_request
    alias delete http_request
    alias patch http_request
    alias put http_request
    alias head http_request
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
ruby-jmeter-3.1.08 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.07 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.06 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.05 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.04 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.03 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.02 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.1.01 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.13 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.12 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.11 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.10 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.9 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.8 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.7 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.6 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.5 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.4 lib/ruby-jmeter/extend/samplers/http_request.rb
ruby-jmeter-3.0.3 lib/ruby-jmeter/extend/samplers/http_request.rb