Class: Blade::SauceLabsPlugin::Job
- Inherits:
-
EventMachine::Completion
- Object
- EventMachine::Completion
- Blade::SauceLabsPlugin::Job
- Defined in:
- lib/blade/sauce_labs_plugin/job.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#retries ⇒ Object
readonly
Returns the value of attribute retries.
-
#session_id ⇒ Object
readonly
Returns the value of attribute session_id.
-
#web_driver ⇒ Object
readonly
Returns the value of attribute web_driver.
Instance Method Summary collapse
- #id ⇒ Object
-
#initialize(config, retries = 0) ⇒ Job
constructor
A new instance of Job.
- #start ⇒ Object
- #start_tests ⇒ Object
- #stop ⇒ Object
- #stop_and_delete ⇒ Object
- #update(params) ⇒ Object
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
#config ⇒ Object (readonly)
Returns the value of attribute config.
4 5 6 |
# File 'lib/blade/sauce_labs_plugin/job.rb', line 4 def config @config end |
#retries ⇒ Object (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_id ⇒ Object (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_driver ⇒ Object (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
#id ⇒ Object
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 |
#start ⇒ Object
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_tests ⇒ Object
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.(:blade_session) if @id.present? && @session_id.present? succeed else fail end else fail end end end |
#stop ⇒ Object
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_delete ⇒ Object
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 |