class RRRSpec::Client::CLI

Constants

WAIT_POLLING_SEC

Public Instance Methods

actives() click to toggle source
# File lib/rrrspec/client/cli.rb, line 66
def actives
  setup(Configuration.new)
  ActiveTaskset.list.each { |taskset| puts taskset.key }
end
cancel(taskset_id) click to toggle source
# File lib/rrrspec/client/cli.rb, line 50
def cancel(taskset_id)
  setup(Configuration.new)
  taskset = Taskset.new(taskset_id)
  exit(1) unless taskset.exist?
  taskset.cancel
end
cancelall(rsync_name) click to toggle source
# File lib/rrrspec/client/cli.rb, line 58
def cancelall(rsync_name)
  setup(Configuration.new)
  ActiveTaskset.all_tasksets_of(rsync_name).each do |taskset|
    taskset.cancel
  end
end
log_exception() { || ... } click to toggle source
# File lib/rrrspec/client/cli.rb, line 19
def log_exception
  yield
rescue
  RRRSpec.logger.error($!)
  raise
end
nodes() click to toggle source
# File lib/rrrspec/client/cli.rb, line 72
def nodes
  setup(Configuration.new)
  puts "Workers:"
  workers = Hash.new { |h, k| h[k] = [] }
  Worker.list.each do |worker|
    workers[worker.worker_type] << worker.key
  end
  workers.keys.sort.each do |k|
    puts "  #{k}:"
    workers[k].sort.each do |name|
      puts "    #{name}"
    end
  end
end
setup(conf) click to toggle source
# File lib/rrrspec/client/cli.rb, line 15
def setup(conf)
  RRRSpec.setup(conf, options[:config].split(':'))
end
show(taskset_id) click to toggle source
# File lib/rrrspec/client/cli.rb, line 123
def show(taskset_id)
  setup(Configuration.new)
  taskset = Taskset.new(taskset_id)
  exit 1 unless taskset.exist?
  Support.show_result(taskset, options[:verbose], options[:'show-errors'])

  if taskset.status != 'succeeded'
    exit options[:'failure-exit-code']
  end
end
slave(working_dir=nil, taskset_key=nil) click to toggle source
# File lib/rrrspec/client/cli.rb, line 135
def slave(working_dir=nil, taskset_key=nil)
  $0 = "rrrspec slave[#{ENV['SLAVE_NUMBER']}]"
  working_dir ||= ENV['RRRSPEC_WORKING_DIR']
  taskset_key ||= ENV['RRRSPEC_TASKSET_KEY']
  exit 1 unless taskset_key && working_dir

  setup(Configuration.new)
  log_exception do
    slave = Slave.create
    slave_runner = SlaveRunner.new(slave, working_dir, taskset_key)
    Thread.abort_on_exception = true
    Thread.fork { RRRSpec.pacemaker(slave, 60, 5) }
    Thread.fork { slave_runner.work_loop }
    Kernel.sleep
  end
end
start() click to toggle source
# File lib/rrrspec/client/cli.rb, line 32
def start
  setup(ClientConfiguration.new)
  if options[:'worker-type']
    RRRSpec.configuration.worker_type = options[:'worker-type']
  end
  if options[:max_workers]
    RRRSpec.configuration.max_workers = options[:max_workers]
  end
  taskset = Support.start_taskset(RRRSpec.configuration, options[:'rsync-name'])
  puts taskset.key

  if RRRSpec.configuration.rrrspec_web_base && !options[:'key-only']
    url = "#{RRRSpec.configuration.rrrspec_web_base}/tasksets/#{taskset.key}"
    Launchy.open(url)
  end
end
waitfor(taskset_id) click to toggle source
# File lib/rrrspec/client/cli.rb, line 89
def waitfor(taskset_id)
  setup(Configuration.new)
  taskset = Taskset.new(taskset_id)
  exit(1) unless taskset.exist?

  rd, wt = IO.pipe

  cancelled = false
  do_cancel = proc {
    exit(1) if cancelled

    $stderr.puts "Cancelling taskset... (will force quit on next signal)"
    wt.write '1'
    cancelled = true
  }
  Signal.trap(:TERM, do_cancel)
  Signal.trap(:INT, do_cancel)

  loop do
    rs, ws, = IO.select([rd], [], [], options[:pollsec])
    if rs == nil
      break if taskset.persisted?
    elsif rs.size != 0
      rs[0].getc
      taskset.cancel
      break
    end
  end
end