class Diffity::Uploaders::Concurrent

Constants

MAX_NO_OF_THREADS

Public Class Methods

new(run_id) click to toggle source
# File lib/diffity/uploaders/concurrent.rb, line 8
def initialize(run_id)
  @run_id = run_id
  @pool = ::Concurrent::FixedThreadPool.new(MAX_NO_OF_THREADS)
  @screenshots_taken = 0
end

Public Instance Methods

enqueue(identifier, browser, device, os, browser_version, device_name, os_version) click to toggle source
# File lib/diffity/uploaders/concurrent.rb, line 14
def enqueue(identifier, browser, device, os, browser_version,
            device_name, os_version)
  @screenshots_taken += 1

  @pool.post do
    Diffity::Utils
      .upload_image(@run_id, identifier, browser, device, os,
                    browser_version, device_name, os_version)
  end
end
wrapup() click to toggle source
# File lib/diffity/uploaders/concurrent.rb, line 25
def wrapup
  retries = 180           # 30 mins

  # if all screenshots are not uploaded, wait.
  until @screenshots_taken == @pool.completed_task_count
    retries -= 1
    break if retries.zero?

    sleep 10
  end

  @pool.shutdown
  @pool.wait_for_termination
end