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.
- #is_session_engaged?(session_url) ⇒ Boolean
- #new_device_added? ⇒ Boolean
- #remove_sessions ⇒ Object
- #restart_sessions ⇒ Object
- #session_added? ⇒ Boolean
- #session_empty? ⇒ Boolean
- #session_removed? ⇒ Boolean
- #session_restarted? ⇒ Boolean
- #session_state ⇒ Object
- #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.
19 20 21 22 23 24 25 26 27 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 19 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.
17 18 19 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 17 def session_info @session_info end |
Instance Method Details
#add_sessions ⇒ Object
117 118 119 120 121 122 123 124 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 117 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
184 185 186 187 188 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 184 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
108 109 110 111 112 113 114 115 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 108 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
100 101 102 103 104 105 106 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 100 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
213 214 215 216 217 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 213 def device_removed? removed_device = get_removed_devices @logger.info "Device #{removed_device} is removed" return removed_device.length>0 end |
#devices_available? ⇒ Boolean
67 68 69 70 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 67 def devices_available? gather_devices @device_details.length > 0 end |
#empty_sessions ⇒ Object
176 177 178 179 180 181 182 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 176 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
94 95 96 97 98 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 94 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
72 73 74 75 76 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 72 def gather_initial_device_set details = DeviceDetails.new @initial_device_set = details.get_device_details @logger.info "Initial Device Set #{@initial_device_set}" end |
#is_session_engaged?(session_url) ⇒ Boolean
199 200 201 202 203 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 199 def is_session_engaged?(session_url) session_state = AkriaClient.new.get_session_state session_url p "Session state is #{session_state}" return session_state.casecmp?("ENGAGED") end |
#new_device_added? ⇒ Boolean
205 206 207 208 209 210 211 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 205 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
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 126 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
162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 162 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
78 79 80 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 78 def session_added? @session_added end |
#session_empty? ⇒ Boolean
90 91 92 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 90 def session_empty? @sessions_empty end |
#session_removed? ⇒ Boolean
82 83 84 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 82 def session_removed? @session_removed end |
#session_restarted? ⇒ Boolean
86 87 88 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 86 def session_restarted? @session_restarted end |
#session_state ⇒ Object
190 191 192 193 194 195 196 197 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 190 def session_state return unless devices_available? @session_info.each do |session| if(is_session_engaged?(session["sessionUrl"])) AkriaClient.new.release_session session["sessionUrl"] unless AppiumServerClient.new.isSessionAlive? session["sessionUrl"] end end end |
#session_terminated? ⇒ Boolean
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 145 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
227 228 229 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 227 def set_is_session_added @session_added = false end |
#set_is_session_removed ⇒ Object
223 224 225 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 223 def set_is_session_removed @session_removed = false end |
#set_is_session_restarted ⇒ Object
219 220 221 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 219 def set_is_session_restarted @session_restarted = false end |
#set_restart_session ⇒ Object
231 232 233 |
# File 'lib/optimus-runner/server/optimus_runner_sm.rb', line 231 def set_restart_session @restart_session = {} end |