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.



2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
# File 'lib/mockserver/models.rb', line 2306

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.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def curve
  @curve
end

#duration_millisObject

Returns the value of attribute duration_millis.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def duration_millis
  @duration_millis
end

#end_rateObject

Returns the value of attribute end_rate.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def end_rate
  @end_rate
end

#end_vusObject

Returns the value of attribute end_vus.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def end_vus
  @end_vus
end

#max_vusObject

Returns the value of attribute max_vus.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def max_vus
  @max_vus
end

#rateObject

Returns the value of attribute rate.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def rate
  @rate
end

#start_rateObject

Returns the value of attribute start_rate.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def start_rate
  @start_rate
end

#start_vusObject

Returns the value of attribute start_vus.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def start_vus
  @start_vus
end

#typeObject

Returns the value of attribute type.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def type
  @type
end

#vusObject

Returns the value of attribute vus.



2303
2304
2305
# File 'lib/mockserver/models.rb', line 2303

def vus
  @vus
end

Class Method Details

.from_hash(data) ⇒ Object



2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
# File 'lib/mockserver/models.rb', line 2353

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.



2334
2335
2336
# File 'lib/mockserver/models.rb', line 2334

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).



2328
2329
2330
2331
# File 'lib/mockserver/models.rb', line 2328

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.



2321
2322
2323
2324
# File 'lib/mockserver/models.rb', line 2321

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



2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
# File 'lib/mockserver/models.rb', line 2338

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