Class: OptimusRunnerSM
- Inherits:
-
Object
- Object
- OptimusRunnerSM
- Includes:
- AASM
- Defined in:
- lib/optimus-runner/server/optimus_runner_sm.rb
Instance Attribute Summary collapse
-
#session_info ⇒ Object
Returns the value of attribute session_info.
Instance Method Summary collapse
- #add_sessions ⇒ Object
- #cloud_session_empty? ⇒ Boolean
- #create_new_session(device_details) ⇒ Object
- #create_sessions ⇒ Object
- #device_removed? ⇒ Boolean
- #devices_available? ⇒ Boolean
- #empty_sessions ⇒ Object
- #gather_devices ⇒ Object
- #gather_initial_device_set ⇒ Object
-
#initialize ⇒ OptimusRunnerSM
constructor
A new instance of OptimusRunnerSM.
- #new_device_added? ⇒ Boolean
- #remove_sessions ⇒ Object
- #restart_sessions ⇒ Object
- #session_added? ⇒ Boolean
- #session_empty? ⇒ Boolean
- #session_removed? ⇒ Boolean
- #session_restarted? ⇒ Boolean
- #session_terminated? ⇒ Boolean
- #set_is_session_added ⇒ Object
- #set_is_session_removed ⇒ Object
- #set_is_session_restarted ⇒ Object
- #set_restart_session ⇒ Object
Constructor Details
#initialize ⇒ OptimusRunnerSM
Returns a new instance of OptimusRunnerSM.
18 19 20 21 22 23 24 25 26 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 18 def initialize @logger = Logger.new(STDOUT) @initial_device_set = [] @device_details = [] set_restart_session set_is_session_added set_is_session_removed set_is_session_restarted end |
Instance Attribute Details
#session_info ⇒ Object
Returns the value of attribute session_info.
16 17 18 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 16 def session_info @session_info end |
Instance Method Details
#add_sessions ⇒ Object
112 113 114 115 116 117 118 119 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 112 def add_sessions return unless devices_available? if new_device_added? create_new_session get_added_devices @initial_device_set = @device_details @session_added = true end end |
#cloud_session_empty? ⇒ Boolean
179 180 181 182 183 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 179 def cloud_session_empty? sessions = AkriaClient.new.get_all_sessions return false if sessions.instance_of? Array return true if sessions.key?("errorCode") end |
#create_new_session(device_details) ⇒ Object
103 104 105 106 107 108 109 110 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 103 def create_new_session(device_details) @logger.info "Found new device added #{device_details}" session_info = AppiumLocalService.new.launch_appium_sessions(device_details) # puts session # session_info = SessionInfo.new(session,device_details).create_session_info AkriaClient.new.save_sessions(session_info) @session_info.push session_info[0] end |
#create_sessions ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 95 def create_sessions return unless devices_available? @logger.info "Device details found are #{@device_details}" sessions = AppiumLocalService.new.launch_appium_sessions(@device_details) @session_info = sessions AkriaClient.new.save_sessions(@session_info) end |
#device_removed? ⇒ Boolean
193 194 195 196 197 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 193 def device_removed? removed_device = get_removed_devices @logger.info "Device #{removed_device} is removed" return removed_device.length>0 end |
#devices_available? ⇒ Boolean
62 63 64 65 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 62 def devices_available? gather_devices @device_details.length > 0 end |
#empty_sessions ⇒ Object
171 172 173 174 175 176 177 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 171 def empty_sessions return unless devices_available? if cloud_session_empty? p "Session Info #{@session_info}" AkriaClient.new.save_sessions(@session_info) end end |
#gather_devices ⇒ Object
89 90 91 92 93 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 89 def gather_devices details = DeviceDetails.new @device_details = details.get_device_details @logger.info "Current devices connected are #{@device_details}" end |
#gather_initial_device_set ⇒ Object
67 68 69 70 71 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 67 def gather_initial_device_set details = DeviceDetails.new @initial_device_set = details.get_device_details @logger.info "Initial Device Set #{@initial_device_set}" end |
#new_device_added? ⇒ Boolean
185 186 187 188 189 190 191 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 185 def new_device_added? added_device = get_added_devices p "Is new devices added #{added_device.length>0}" p "Added devices length #{added_device.length}" p "Added devices #{added_device}" return added_device.length>0 end |
#remove_sessions ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 121 def remove_sessions return unless devices_available? if device_removed? get_removed_devices.each do |removed_device| p removed_device session_info = @session_info.detect {|info| info["sessionCapabilities"]==removed_device} p session_info AkriaClient.new.remove_session session_info["sessionUrl"] session_details = AppiumLocalService.new.get_session_details session_detail = session_details.detect {|session_detail| session_detail["session_id"]==session_info["sessionUrl"]} puts "Removed session details #{session_details}" ShellCommands.new.kill_process session_detail["session_pid"] @session_info.delete_if{ |session_inf| session_inf["sessionUrl"] == session_info["sessionUrl"]} @session_removed= true @initial_device_set = @device_details end end end |
#restart_sessions ⇒ Object
157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 157 def restart_sessions session = AppiumLocalService.new.launch_appium_session @restart_session["sessionCapabilities"] @logger.info "Restarting session #{@restart_session}" @logger.info "Session details are #{@session_info}" @session_info.delete_if{ |session_inf| session_inf["sessionUrl"] == @restart_session["sessionUrl"]} @logger.info "Session details are #{@session_info}" @restart_session["sessionUrl"] = session @session_info.push(@restart_session) @logger.info "Session details are #{@session_info}" AkriaClient.new.save_session @restart_session set_restart_session @session_restarted = true end |
#session_added? ⇒ Boolean
73 74 75 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 73 def session_added? @session_added end |
#session_empty? ⇒ Boolean
85 86 87 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 85 def session_empty? @sessions_empty end |
#session_removed? ⇒ Boolean
77 78 79 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 77 def session_removed? @session_removed end |
#session_restarted? ⇒ Boolean
81 82 83 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 81 def session_restarted? @session_restarted end |
#session_terminated? ⇒ Boolean
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 140 def session_terminated? return false unless devices_available? akira = AkriaClient.new @session_info.each do |session| p "Session #{session}" @logger.info "Checking if the session #{session["sessionUrl"]} is terminated" session_info = akira.get_session_info session["sessionUrl"] session_state = session_info["sessionState"] @is_session_terminated = session_state.eql? "TERMINATED" @logger.info "Is session #{session["sessionUrl"]} terminated? #{@is_session_terminated}" @restart_session = session_info if @is_session_terminated @logger.info "Session Details to restart #{@restart_session}" break unless @restart_session.empty? end return @is_session_terminated end |
#set_is_session_added ⇒ Object
207 208 209 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 207 def set_is_session_added @session_added = false end |
#set_is_session_removed ⇒ Object
203 204 205 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 203 def set_is_session_removed @session_removed = false end |
#set_is_session_restarted ⇒ Object
199 200 201 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 199 def set_is_session_restarted @session_restarted = false end |
#set_restart_session ⇒ Object
211 212 213 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 211 def set_restart_session @restart_session = {} end |