class LoadManager

Attributes

configuration[R]
run_id[R]

Public Class Methods

new(configuration, target_code) click to toggle source
# File lib/load/load_manager.rb, line 10
def initialize(configuration, target_code)
  @configuration = configuration
end

Public Instance Methods

kill_pids(pids) click to toggle source
# File lib/load/load_manager.rb, line 65
def kill_pids(pids)
  puts "Killing child processes"
  pids.each do |pid|
    Process.kill("INT", pid)
  end
end
ramp_up() click to toggle source
# File lib/load/load_manager.rb, line 14
def ramp_up
  puts "Load Manager - ramp_up"
  puts "Load Manager: #{Process.pid}"
  pids = []

  definition_code = configuration['code']
  @server_address = ENV["SERVER"] || "localhost:2233"
  puts "Server address: #{@server_address}"

  if (ENV['SERVER'] == nil)
    puts "No 'SERVER' env specified, creating local/minimal server to store results"
    pids << fork {
      @reporter = LoadReporter.new({server: @server_address})
      while (@reporter.started == false)
        puts "Cannot find Load server"
        sleep 1
      end
    }
  else
    puts "Using existent 'SERVER': #{@server_address}"
  end

  @run_id = create_run({definition_code: definition_code})
  ramp_up = LoadRampUp.new(@run_id, @target_code, @configuration)

  pids << fork {
    ramp_up.run
  }

  quit = false
  while !quit
    begin
      system("stty raw -echo")
      str = STDIN.getc
    ensure
      system("stty -raw echo")
    end
    input = str.chr
    puts "You pressed: #{input}  ##{str.to_i}"
    if (input == "q")
      quit = true
      puts "=================================================================================="
      puts "DONE WITH RAMP UP"
      puts "  PID's:  #{pids}"
      puts "=================================================================================="
    end
  end
  kill_pids(pids)
end