class Optimal::CI::Queue

Public Class Methods

new(provider, command_arguments_string = "") click to toggle source
# File lib/optimal/ci/queue.rb, line 4
def initialize(provider, command_arguments_string = "")
  @provider = provider
  @command_arguments_string = command_arguments_string
  @http_calls_count = 0
  @http_calls_time = 0.0

  raise "OPTIMAL_CI_URL is not valid ENV" if ENV['OPTIMAL_CI_URL'].nil?
  raise "OPTIMAL_CI_TOKEN is not valid ENV" if ENV['OPTIMAL_CI_TOKEN'].nil?
end

Public Instance Methods

pop() click to toggle source
# File lib/optimal/ci/queue.rb, line 30
def pop
  start = Time.now
  response = ::RestClient.get(ENV['OPTIMAL_CI_URL'] + "/builds/#{@provider.build_number}/get_one_file", { Authorization: ENV['OPTIMAL_CI_TOKEN'] })

  @http_calls_count += 1
  @http_calls_time += (Time.now - start).to_f

  return if response.code != 200

  JSON.parse(response.body)

rescue RestClient::NotFound
  return nil
end
push(files) click to toggle source
# File lib/optimal/ci/queue.rb, line 14
def push(files)
  params = {
    build_number: @provider.build_number,
    total_files: files,
    ci: @provider.name,
    command_arguments_string: @command_arguments_string,
    total_nodes: @provider.total_nodes
  }

  response = ::RestClient.post(ENV['OPTIMAL_CI_URL'] + '/builds', params, { Authorization: ENV['OPTIMAL_CI_TOKEN'] })

  response.code == 204
rescue RestClient::Conflict
  true
end
report_duration(duration) click to toggle source
# File lib/optimal/ci/queue.rb, line 45
def report_duration(duration)
  params = {
    duration: duration,
    node_index: @provider.node_index
  }

  ::RestClient.patch(ENV['OPTIMAL_CI_URL'] + "/builds/#{@provider.build_number}/report_duration", params, { Authorization: ENV['OPTIMAL_CI_TOKEN'] })
end
report_http_calls() click to toggle source
# File lib/optimal/ci/queue.rb, line 54
def report_http_calls
  params = {
    http_calls_count: @http_calls_count,
    http_calls_time: @http_calls_time,
    node_index: @provider.node_index
  }

  ::RestClient.patch(ENV['OPTIMAL_CI_URL'] + "/builds/#{@provider.build_number}/report_http_calls", params, { Authorization: ENV['OPTIMAL_CI_TOKEN'] })
end