Files
analyzer-pipeline/lib/pipeline/rpc_server.rb
2019-10-07 20:05:14 +01:00

101 lines
3.0 KiB
Ruby
Executable File

# class Pipeline::Rpc::Server
#
# attr_reader :context, :incoming, :outgoing, :environment
#
# def initialize(env_base)
# @context = ZMQ::Context.new(1)
# @incoming = context.socket(ZMQ::PULL)
# @outgoing = context.socket(ZMQ::PUB)
# @outgoing.connect("tcp://localhost:5555")
# @environment = Pipeline::Runtime::RuntimeEnvironment.new(env_base)
# end
#
# def setup
# @setup = context.socket(ZMQ::REQ)
# @setup.setsockopt(ZMQ::LINGER, 0)
# @setup.connect("tcp://localhost:5566")
# @setup.send_string("describe_analysers")
# msg = ""
# @setup.recv_string(msg)
# analyzer_spec = JSON.parse(msg)
# puts analyzer_spec
#
# environment.prepare
#
# analyzer_spec.each do |language_slug, version|
# if environment.released?(language_slug)
# puts "Already installed #{language_slug}"
# else
# puts "Installed #{language_slug}"
# environment.release_analyzer(language_slug)
# end
# end
# end
#
# def listen
# setup
# incoming.connect("tcp://localhost:5577")
#
# loop do
# msg = []
# incoming.recv_strings(msg)
# puts "Received request. Data: #{msg.inspect}"
# return_address = msg[0].unpack('c*')
# puts return_address
# request = msg[2]
# if request.start_with? "analyze_"
# _, arg = request.split("_", 2)
# track, exercise_slug, solution_slug, location = arg.split("|")
# result = analyze(track, exercise_slug, solution_slug) do |iteration_folder|
# location_uri = URI(location)
# bucket = location_uri.host
# path = location_uri.path[1..]
# s3 = Aws::S3::Client.new(region: 'eu-west-1')
# params = {
# bucket: bucket,
# prefix: "#{path}/",
# }
# resp = s3.list_objects(params)
# resp.contents.each do |item|
# key = item[:key]
# filename = File.basename(key)
# s3.get_object({
# bucket: bucket,
# key: key,
# response_target: "#{iteration_folder}/#{filename}"
# })
# end
# end
# result["return_address"] = return_address
# result['msg_type'] = 'response'
# outgoing.send_string(result.to_json)
# else
# puts "HERE ELSE: #{request}"
# end
# end
# end
#
# def analyze(language_slug, exercise_slug, solution_slug)
# analysis_run = environment.new_analysis(language_slug, exercise_slug, solution_slug)
# analysis_run.prepare_iteration do |iteration_folder|
# yield(iteration_folder)
# end
# begin
# analysis_run.analyze!
# rescue => e
# puts e
# ensure
# # puts "---"
# # puts analysis_run.stdout
# # puts "==="
# # puts analysis_run.stderr
# # puts "---"
# # puts analysis_run.success?
# # puts analysis_run.exit_status
# # puts analysis_run.result
# puts "DONE"
# end
# end
#
# end