Class: RRRSpec::Client::CLI
- Inherits:
-
Thor
- Object
- Thor
- RRRSpec::Client::CLI
- Defined in:
- lib/rrrspec/client/cli.rb
Constant Summary collapse
- WAIT_POLLING_SEC =
10
Instance Method Summary collapse
- #actives ⇒ Object
- #cancel(taskset_id) ⇒ Object
- #cancelall(rsync_name) ⇒ Object
- #nodes ⇒ Object
- #show(taskset_id) ⇒ Object
- #slave(working_dir = nil, taskset_key = nil) ⇒ Object
- #start ⇒ Object
- #waitfor(taskset_id) ⇒ Object
Instance Method Details
#actives ⇒ Object
62 63 64 65 |
# File 'lib/rrrspec/client/cli.rb', line 62 def actives setup(Configuration.new) ActiveTaskset.list.each { |taskset| puts taskset.key } end |
#cancel(taskset_id) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/rrrspec/client/cli.rb', line 46 def cancel(taskset_id) setup(Configuration.new) taskset = Taskset.new(taskset_id) exit(1) unless taskset.exist? taskset.cancel end |
#cancelall(rsync_name) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/rrrspec/client/cli.rb', line 54 def cancelall(rsync_name) setup(Configuration.new) ActiveTaskset.all_tasksets_of(rsync_name).each do |taskset| taskset.cancel end end |
#nodes ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/rrrspec/client/cli.rb', line 68 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 |
#show(taskset_id) ⇒ Object
118 119 120 121 122 123 124 125 126 127 |
# File 'lib/rrrspec/client/cli.rb', line 118 def show(taskset_id) setup(Configuration.new) taskset = Taskset.new(taskset_id) exit 1 unless taskset.exist? Support.show_result(taskset, [:verbose]) if taskset.status != 'succeeded' exit [:'failure-exit-code'] end end |
#slave(working_dir = nil, taskset_key = nil) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/rrrspec/client/cli.rb', line 130 def slave(working_dir=nil, taskset_key=nil) $0 = 'rrrspec slave' 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 ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rrrspec/client/cli.rb', line 31 def start setup(ClientConfiguration.new) if [:'worker-type'] RRRSpec.configuration.worker_type = [:'worker-type'] end taskset = Support.start_taskset(RRRSpec.configuration, [:'rsync-name']) puts taskset.key if RRRSpec.configuration.rrrspec_web_base && ![:'key-only'] url = "#{RRRSpec.configuration.rrrspec_web_base}/tasksets/#{taskset.key}" Launchy.open(url) end end |
#waitfor(taskset_id) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/rrrspec/client/cli.rb', line 85 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], [], [], [:pollsec]) if rs == nil break if taskset.persisted? elsif rs.size != 0 rs[0].getc taskset.cancel break end end end |