class Flatware::CLI

shared flatware cli

Public Class Methods

processors() click to toggle source
# File lib/flatware/cli.rb, line 10
def self.processors
  @processors ||= Etc.nprocessors
end
worker_option() click to toggle source
# File lib/flatware/cli.rb, line 14
def self.worker_option
  method_option(
    :workers,
    aliases: '-w',
    type: :numeric,
    default: processors,
    desc: 'Number of concurrent processes to run'
  )
end

Public Instance Methods

clear() click to toggle source
# File lib/flatware/cli.rb, line 49
def clear
  (Flatware.pids - [Process.pid]).each do |pid|
    Process.kill 6, pid
  end
end
fan(*command) click to toggle source
# File lib/flatware/cli.rb, line 33
def fan(*command)
  Flatware.verbose = options[:log]

  command = command.join(' ')
  puts "Running '#{command}' on #{workers} workers"

  workers.times do |i|
    fork do
      exec({ 'TEST_ENV_NUMBER' => i.to_s }, command)
    end
  end
  success = Process.waitall.all? { |_pid, status| status.success? }
  exit success ? 0 : 1
end

Private Instance Methods

start_sink(jobs:, workers:, formatter:) click to toggle source
# File lib/flatware/cli.rb, line 57
def start_sink(jobs:, workers:, formatter:)
  $0 = 'flatware sink'
  try_setpgrp

  passed = Sink.start_server(
    jobs: jobs,
    formatter: Flatware::Broadcaster.new([formatter]),
    sink: options['sink-endpoint'],
    worker_count: workers
  )
  exit passed ? 0 : 1
end
try_setpgrp() click to toggle source
# File lib/flatware/cli.rb, line 70
def try_setpgrp
  Process.setpgrp
rescue Errno::EPERM => e
  Flatware.log 'continuing after: Process.setpgrp:', e.message
end
workers() click to toggle source
# File lib/flatware/cli.rb, line 76
def workers
  options[:workers]
end