optimus-runner 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e51bfb8c453718bc033a4bf204817e11b899383af5dd15ec0fb1fb63ba012b03
4
- data.tar.gz: 2f4af29f668f059192b797d1ef7324fef2af7e9c2124d6aaf9cbd50ebd77543f
3
+ metadata.gz: c4b6ba04e33e15362ce29fb40070e008593f06a4c14f8a8d03f8de1ee89b8573
4
+ data.tar.gz: 35223c55d2337177ffcdf0b0d0dbb43e6d6b0b386503e65c16f72258177483d0
5
5
  SHA512:
6
- metadata.gz: 58769b289508f5f0477d40daab8e8c92e09c32775e69241f712ea114416feefb5e97764e523358bc884ddd853aa5637321a5cd366bd5b192330712c446cea366
7
- data.tar.gz: 35c0db5d5470a2887e5b8f1159e8b53f9a9d8ab1953262bb91d7698d389964c6789a847b5f84910d3838abff040f7738481aa26a8a1a1c4766224792fcabfc66
6
+ metadata.gz: 450f51dfc0942c2073a1a024ecfee8ea4dfe171bde8c87e4bfcc40312d511cec2a2ea211786b2d4dd29b00be1a18a48232a191a65e8e5228105aa6d668871255
7
+ data.tar.gz: 59d675318703f3d3d77c96e26bf27e41b59b35c4b81a820d8fa4c866bbd56ed320f453a4a76421dd684431d20672777fcaaca86104f039e5f5608ee35067744d
@@ -1,10 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- optimus-runner (1.1.2)
4
+ optimus-runner (1.1.3)
5
5
  aasm (~> 5.0)
6
6
  daemons (~> 1.3)
7
7
  dotenv (~> 2.1, >= 2.1.1)
8
+ exponential-backoff (~> 0.0.4)
8
9
  httparty (~> 0.16.3)
9
10
  nenv (~> 0.3.0)
10
11
  open4 (~> 1.3)
@@ -21,8 +22,9 @@ GEM
21
22
  daemons (1.3.1)
22
23
  diff-lcs (1.3)
23
24
  dotenv (2.7.5)
24
- et-orbi (1.2.3)
25
+ et-orbi (1.2.4)
25
26
  tzinfo
27
+ exponential-backoff (0.0.4)
26
28
  fugit (1.3.3)
27
29
  et-orbi (~> 1.1, >= 1.1.8)
28
30
  raabro (~> 1.1)
@@ -20,4 +20,8 @@ scheduler.interval '5s', :first_in => 0.1 do
20
20
  optimus_runner_sm.restart if optimus_runner_sm.session_terminated?
21
21
  optimus_runner_sm.empty if optimus_runner_sm.cloud_session_empty? # You have done FLUSHALL in akira
22
22
  end
23
+
24
+ scheduler.every '1m', :first_in => 60 do
25
+ optimus_runner_sm.session_state
26
+ end
23
27
  scheduler.join
@@ -28,6 +28,14 @@ class AkriaClient
28
28
  HTTParty.put(uri, query: query_params, headers: get_default_headers)
29
29
  end
30
30
 
31
+ def release_session(session_url)
32
+ uri = "#{@base_uri}/sessionState/release"
33
+ query_params = {
34
+ 'sessionUrl':session_url
35
+ }
36
+ HTTParty.put(uri, query: query_params, headers: get_default_headers)
37
+ end
38
+
31
39
  def get_session_info(session_url)
32
40
  uri = "#{@base_uri}/sessionInfo"
33
41
  puts uri
@@ -39,6 +47,17 @@ class AkriaClient
39
47
  return session_info
40
48
  end
41
49
 
50
+ def get_session_state(session_url)
51
+ uri = "#{@base_uri}/sessionState"
52
+ query_params = {
53
+ 'sessionUrl':session_url
54
+ }
55
+ response = HTTParty.get(uri, query: query_params, headers: get_default_headers)
56
+ p response
57
+ session_state = response
58
+ return session_state
59
+ end
60
+
42
61
  def get_all_sessions
43
62
  uri = "#{@base_uri}/sessionsList"
44
63
  puts uri
@@ -56,4 +75,7 @@ class AkriaClient
56
75
  end
57
76
 
58
77
 
78
+
79
+
80
+
59
81
  end
@@ -0,0 +1,18 @@
1
+ require 'HTTParty'
2
+
3
+ class AppiumServerClient
4
+ def isSessionAlive?(session_url)
5
+ uri = "#{session_url}/sessions"
6
+ response = HTTParty.get(uri, headers: get_default_headers)
7
+ sessions = JSON.parse(response.to_s)
8
+ session_state = sessions["value"].empty?
9
+ return !session_state
10
+ end
11
+
12
+ def get_default_headers
13
+ headers = {
14
+ 'Content-Type': "Application/json"
15
+ }
16
+ return headers
17
+ end
18
+ end
@@ -7,9 +7,10 @@ require 'json'
7
7
  require 'optimus-runner/AppiumLocalService'
8
8
  require 'optimus-runner/SessionInfoBuilder'
9
9
  require 'optimus-runner/clients/AkiraClient'
10
- require 'optimus-runner/clients/AkiraClient'
10
+ require 'optimus-runner/clients/AppiumServerClient'
11
11
  require 'logger'
12
12
  require 'optimus-runner/commands/ShellCommands'
13
+ require 'exponential_backoff'
13
14
 
14
15
  class OptimusRunnerSM
15
16
  include AASM
@@ -57,6 +58,10 @@ class OptimusRunnerSM
57
58
  transitions :from => [:created, :added, :removed, :restarted], :to => :created, :guard => :devices_available?
58
59
  transitions :from => [:created, :added, :removed, :restarted], :to => :idle
59
60
  end
61
+
62
+ event :session_state, :before => :is_session_alive? do
63
+ transitions :from => [:created, :added, :removed, :restarted], :to => :created, :guard => :devices_available?
64
+ end
60
65
  end
61
66
 
62
67
  def devices_available?
@@ -182,6 +187,21 @@ class OptimusRunnerSM
182
187
  return true if sessions.key?("errorCode")
183
188
  end
184
189
 
190
+ def session_state
191
+ return unless devices_available?
192
+ @session_info.each do |session|
193
+ if(is_session_engaged?(session["sessionUrl"]))
194
+ AkriaClient.new.release_session session["sessionUrl"] unless AppiumServerClient.new.isSessionAlive? session["sessionUrl"]
195
+ end
196
+ end
197
+ end
198
+
199
+ def is_session_engaged?(session_url)
200
+ session_state = AkriaClient.new.get_session_state session_url
201
+ p "Session state is #{session_state}"
202
+ return session_state.casecmp?("ENGAGED")
203
+ end
204
+
185
205
  def new_device_added?
186
206
  added_device = get_added_devices
187
207
  p "Is new devices added #{added_device.length>0}"
@@ -1,3 +1,3 @@
1
1
  module Gandalf
2
- VERSION = "1.1.3"
2
+ VERSION = "1.1.4"
3
3
  end
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency 'rufus-scheduler', '~> 3.2'
33
33
  spec.add_dependency 'os', '~> 1.0', '>= 1.0.1'
34
34
  spec.add_dependency 'nenv', '~> 0.3.0'
35
+ spec.add_dependency 'exponential-backoff', '~> 0.0.4'
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimus-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - KrishnanandB
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-10 00:00:00.000000000 Z
11
+ date: 2020-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -196,6 +196,20 @@ dependencies:
196
196
  - - "~>"
197
197
  - !ruby/object:Gem::Version
198
198
  version: 0.3.0
199
+ - !ruby/object:Gem::Dependency
200
+ name: exponential-backoff
201
+ requirement: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - "~>"
204
+ - !ruby/object:Gem::Version
205
+ version: 0.0.4
206
+ type: :runtime
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - "~>"
211
+ - !ruby/object:Gem::Version
212
+ version: 0.0.4
199
213
  description: ''
200
214
  email:
201
215
  - krisnanandb@gmail.com
@@ -229,6 +243,7 @@ files:
229
243
  - lib/optimus-runner/DeviceDetails.rb
230
244
  - lib/optimus-runner/SessionInfoBuilder.rb
231
245
  - lib/optimus-runner/clients/AkiraClient.rb
246
+ - lib/optimus-runner/clients/AppiumServerClient.rb
232
247
  - lib/optimus-runner/clients/mdb_client.rb
233
248
  - lib/optimus-runner/commands/ShellCommands.rb
234
249
  - lib/optimus-runner/server/appium_server_manager.rb