Class: Blade::SauceLabsPlugin::Job

Inherits:
EventMachine::Completion
  • Object
show all
Defined in:
lib/blade/sauce_labs_plugin/job.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, retries = 0) ⇒ Job

Returns a new instance of Job.



6
7
8
9
10
11
# File 'lib/blade/sauce_labs_plugin/job.rb', line 6

def initialize(config, retries = 0)
  super()
  @config = config.symbolize_keys
  @retries = retries
  @web_driver = Blade::SauceLabsPlugin::WebDriver.new(config)
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



4
5
6
# File 'lib/blade/sauce_labs_plugin/job.rb', line 4

def config
  @config
end

#retriesObject (readonly)

Returns the value of attribute retries.



4
5
6
# File 'lib/blade/sauce_labs_plugin/job.rb', line 4

def retries
  @retries
end

#session_idObject (readonly)

Returns the value of attribute session_id.



4
5
6
# File 'lib/blade/sauce_labs_plugin/job.rb', line 4

def session_id
  @session_id
end

#web_driverObject (readonly)

Returns the value of attribute web_driver.



4
5
6
# File 'lib/blade/sauce_labs_plugin/job.rb', line 4

def web_driver
  @web_driver
end

Instance Method Details

#idObject



74
75
76
77
78
79
80
# File 'lib/blade/sauce_labs_plugin/job.rb', line 74

def id
  if @id.present?
    @id
  else
    @found_id ||= find_id
  end
end

#startObject



13
14
15
16
17
18
# File 'lib/blade/sauce_labs_plugin/job.rb', line 13

def start
  change_state :pending
  web_driver.callback { start_tests }
  web_driver.errback { fail }
  web_driver.start
end

#start_testsObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/blade/sauce_labs_plugin/job.rb', line 20

def start_tests
  web_driver.navigate_to(Blade.url) do |success|
    if success
      @id = web_driver.session_id
      @session_id = web_driver.get_cookie(:blade_session)

      if @id.present? && @session_id.present?
        succeed
      else
        fail
      end
    else
      fail
    end
  end
end

#stopObject



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/blade/sauce_labs_plugin/job.rb', line 37

def stop
  return unless completed?

  web_driver.stop do |success|
    if success
      change_state :stopped
    else
      if client.stop_job(id).success?
        change_state :stopped
      end
    end
  end
end

#stop_and_deleteObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/blade/sauce_labs_plugin/job.rb', line 55

def stop_and_delete
  job_id = id
  stop

  tries = 0
  timer = EM.add_periodic_timer(8) do
    if client.delete_job(job_id).success?
      timer.cancel
      yield true
    else
      tries += 1
      if tries == 10
        timer.cancel
        yield false
      end
    end
  end
end

#update(params) ⇒ Object



51
52
53
# File 'lib/blade/sauce_labs_plugin/job.rb', line 51

def update(params)
  client.update_job(id, params)
end