Class: MockServer::LoadStage

Inherits:
Object
  • Object
show all
Defined in:
lib/mockserver/models.rb

Overview

One stage of a LoadProfile, run in sequence. Each stage holds or ramps a setpoint for duration_millis:

  • VU (closed model) - hold vus virtual users, or ramp start_vus to end_vus along curve.
  • RATE (open model) - hold rate iterations/second, or ramp start_rate to end_rate along curve, optionally capping the auto-scaling virtual-user pool at max_vus.
  • PAUSE - drive no load for duration_millis.

Prefer the LoadStage.vu, LoadStage.rate and LoadStage.pause factories, which emit only the fields relevant to the stage type and mode.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type:, duration_millis:, curve: nil, vus: nil, start_vus: nil, end_vus: nil, rate: nil, start_rate: nil, end_rate: nil, max_vus: nil) ⇒ LoadStage

Returns a new instance of LoadStage.



2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
# File 'lib/mockserver/models.rb', line 2813

def initialize(type:, duration_millis:, curve: nil, vus: nil, start_vus: nil,
               end_vus: nil, rate: nil, start_rate: nil, end_rate: nil, max_vus: nil)
  @type = type
  @duration_millis = duration_millis
  @curve = curve
  @vus = vus
  @start_vus = start_vus
  @end_vus = end_vus
  @rate = rate
  @start_rate = start_rate
  @end_rate = end_rate
  @max_vus = max_vus
end

Instance Attribute Details

#curveObject

Returns the value of attribute curve.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def curve
  @curve
end

#duration_millisObject

Returns the value of attribute duration_millis.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def duration_millis
  @duration_millis
end

#end_rateObject

Returns the value of attribute end_rate.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def end_rate
  @end_rate
end

#end_vusObject

Returns the value of attribute end_vus.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def end_vus
  @end_vus
end

#max_vusObject

Returns the value of attribute max_vus.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def max_vus
  @max_vus
end

#rateObject

Returns the value of attribute rate.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def rate
  @rate
end

#start_rateObject

Returns the value of attribute start_rate.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def start_rate
  @start_rate
end

#start_vusObject

Returns the value of attribute start_vus.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def start_vus
  @start_vus
end

#typeObject

Returns the value of attribute type.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def type
  @type
end

#vusObject

Returns the value of attribute vus.



2810
2811
2812
# File 'lib/mockserver/models.rb', line 2810

def vus
  @vus
end

Class Method Details

.from_hash(data) ⇒ Object



2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
# File 'lib/mockserver/models.rb', line 2860

def self.from_hash(data)
  return nil if data.nil?

  new(
    type:            data['type'],
    duration_millis: data['durationMillis'],
    curve:           data['curve'],
    vus:             data['vus'],
    start_vus:       data['startVus'],
    end_vus:         data['endVus'],
    rate:            data['rate'],
    start_rate:      data['startRate'],
    end_rate:        data['endRate'],
    max_vus:         data['maxVus']
  )
end

.pause(duration_millis) ⇒ Object

A PAUSE stage - drive no load for duration_millis.



2841
2842
2843
# File 'lib/mockserver/models.rb', line 2841

def self.pause(duration_millis)
  new(type: 'PAUSE', duration_millis: duration_millis)
end

.rate(duration_millis, rate: nil, start_rate: nil, end_rate: nil, max_vus: nil, curve: nil) ⇒ Object

A RATE (open-model) stage - hold rate or ramp start_rate to end_rate (iterations/second).



2835
2836
2837
2838
# File 'lib/mockserver/models.rb', line 2835

def self.rate(duration_millis, rate: nil, start_rate: nil, end_rate: nil, max_vus: nil, curve: nil)
  new(type: 'RATE', duration_millis: duration_millis, rate: rate,
      start_rate: start_rate, end_rate: end_rate, max_vus: max_vus, curve: curve)
end

.vu(duration_millis, vus: nil, start_vus: nil, end_vus: nil, curve: nil) ⇒ Object

A VU (closed-model) stage - hold vus or ramp start_vus to end_vus.



2828
2829
2830
2831
# File 'lib/mockserver/models.rb', line 2828

def self.vu(duration_millis, vus: nil, start_vus: nil, end_vus: nil, curve: nil)
  new(type: 'VU', duration_millis: duration_millis, vus: vus,
      start_vus: start_vus, end_vus: end_vus, curve: curve)
end

Instance Method Details

#to_hObject



2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
# File 'lib/mockserver/models.rb', line 2845

def to_h
  MockServer.strip_none({
    'type'           => @type,
    'durationMillis' => @duration_millis,
    'curve'          => @curve,
    'vus'            => @vus,
    'startVus'       => @start_vus,
    'endVus'         => @end_vus,
    'rate'           => @rate,
    'startRate'      => @start_rate,
    'endRate'        => @end_rate,
    'maxVus'         => @max_vus
  })
end