class TestKafka::JavaRunner

Constants

JAR_PATTERNS
MAX_HEAP_SIZE

Attributes

java_class[R]
kafka_path[R]
tmp_dir[R]

Public Class Methods

new(id, tmp_dir, java_class, port, kafka_path, properties={}) click to toggle source
# File lib/test_kafka/java_runner.rb, line 15
def initialize(id, tmp_dir, java_class, port, kafka_path, properties={})
  @id = id
  @tmp_dir = tmp_dir
  @java_class = java_class
  @port = port
  @kafka_path = kafka_path
  @properties = properties
end

Public Instance Methods

pid() click to toggle source
# File lib/test_kafka/java_runner.rb, line 44
def pid
  data = File.read(pid_path)

  data.to_i if data
end
start() click to toggle source
# File lib/test_kafka/java_runner.rb, line 26
def start
  write_properties
  run
end
stop() click to toggle source
# File lib/test_kafka/java_runner.rb, line 31
def stop
  daemon_controller.stop
end
with_interruption() { || ... } click to toggle source
# File lib/test_kafka/java_runner.rb, line 35
def with_interruption
  stop
  begin
    yield
  ensure
    start
  end
end

Private Instance Methods

classpath() click to toggle source
# File lib/test_kafka/java_runner.rb, line 52
def classpath
  JAR_PATTERNS.flat_map { |pat| Dir.glob(kafka_path + "/" + pat) }.join(":")
end
config_dir() click to toggle source
# File lib/test_kafka/java_runner.rb, line 106
def config_dir
  "#{tmp_dir}/config"
end
config_path() click to toggle source
# File lib/test_kafka/java_runner.rb, line 102
def config_path
  "#{config_dir}/#{@id}.properties"
end
daemon_controller() click to toggle source
# File lib/test_kafka/java_runner.rb, line 60
def daemon_controller
  @dc ||= DaemonController.new(
    :identifier => @id,
    :start_command => "#{java_command} >>#{log_path} 2>&1 & echo $! > #{pid_path}",
    :ping_command => [:tcp, '127.0.0.1', @port],
    :pid_file => pid_path,
    :log_file => log_path,
    :start_timeout => 25
  )
end
java_command() click to toggle source
# File lib/test_kafka/java_runner.rb, line 56
def java_command
  "exec java -Xmx#{MAX_HEAP_SIZE}M -server -cp #{classpath} #{java_class} #{config_path}"
end
log_dir() click to toggle source
# File lib/test_kafka/java_runner.rb, line 98
def log_dir
  "#{tmp_dir}/log"
end
log_path() click to toggle source
# File lib/test_kafka/java_runner.rb, line 94
def log_path
  "#{log_dir}/#{@id}.log"
end
pid_dir() click to toggle source
# File lib/test_kafka/java_runner.rb, line 90
def pid_dir
  "#{tmp_dir}/pid"
end
pid_path() click to toggle source
# File lib/test_kafka/java_runner.rb, line 86
def pid_path
  "#{pid_dir}/#{@id}.pid"
end
run() click to toggle source
# File lib/test_kafka/java_runner.rb, line 71
def run
  FileUtils.mkdir_p(log_dir)
  FileUtils.mkdir_p(pid_dir)
  daemon_controller.start
end
write_properties() click to toggle source
# File lib/test_kafka/java_runner.rb, line 77
def write_properties
  FileUtils.mkdir_p(config_dir)
  File.open(config_path, "w+") do |f|
    @properties.each do |k,v|
      f.puts "#{k}=#{v}"
    end
  end
end