Class: RRRSpec::Client::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/rrrspec/client/cli.rb

Constant Summary collapse

WAIT_POLLING_SEC =
10

Instance Method Summary collapse

Instance Method Details

#activesObject



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

#nodesObject



68
69
70
71
72
# File 'lib/rrrspec/client/cli.rb', line 68

def nodes
  setup(Configuration.new)
  puts "Workers:"
  Worker.list.each { |worker| puts "\t#{worker.key}" }
end

#show(taskset_id) ⇒ Object



99
100
101
102
103
104
105
106
107
108
# File 'lib/rrrspec/client/cli.rb', line 99

def show(taskset_id)
  setup(Configuration.new)
  taskset = Taskset.new(taskset_id)
  exit 1 unless taskset.exist?
  Support.show_result(taskset, options[:verbose])

  if taskset.status != 'succeeded'
    exit options[:'failure-exit-code']
  end
end

#slave(working_dir = nil, taskset_key = nil) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/rrrspec/client/cli.rb', line 111

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

#startObject



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 options[:'worker-type']
    RRRSpec.configuration.worker_type = options[:'worker-type']
  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) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/rrrspec/client/cli.rb', line 76

def waitfor(taskset_id)
  setup(Configuration.new)
  taskset = Taskset.new(taskset_id)
  exit(1) unless taskset.exist?

  rd, wt = IO.pipe
  Signal.trap(:TERM) { wt.write("1") }
  Signal.trap(:INT) { wt.write("1") }

  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
    end
  end
end