Files
analyzer-pipeline/bin/client.rb

62 lines
1.3 KiB
Ruby

require 'ffi-rzmq'
require 'json'
require 'yaml'
require 'securerandom'
class PipelineClient
attr_reader :context, :socket
def initialize
@context = ZMQ::Context.new(1)
open_socket
at_exit do
close_socket
end
end
def open_socket
@socket = context.socket(ZMQ::REQ)
@socket.setsockopt(ZMQ::LINGER, 0)
@socket.connect("tcp://localhost:5566")
end
def close_socket
@socket.close
end
def send_msg(msg, timeout)
socket.setsockopt(ZMQ::RCVTIMEO, timeout*1000)
send_result = socket.send_string(msg)
response = ""
recv_result = socket.recv_string(response)
puts recv_result
puts response
raise("RCV timeout") if recv_result < 0
parsed = JSON.parse(response)
return parsed
end
def build_analyzer(track_slug)
send_msg("build-analyzer_#{track_slug}", 300)
end
def build_test_runner(track_slug)
send_msg("build-test-runner_#{track_slug}", 300)
end
def analyze(track_slug, exercise_slug, solution_slug, iteration_folder)
params = {
action: "analyze_iteration",
track_slug: track_slug,
container_version: "v0.0.5",
exercise_slug: exercise_slug,
solution_slug: solution_slug,
iteration_folder: iteration_folder
}
msg = params.to_json
send_msg(msg, 10000)
end
end