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 +4 -4
- data/Gemfile.lock +4 -2
- data/exe/optimus_runner_manager +4 -0
- data/lib/optimus-runner/clients/AkiraClient.rb +22 -0
- data/lib/optimus-runner/clients/AppiumServerClient.rb +18 -0
- data/lib/optimus-runner/server/optimus_runner_sm.rb +21 -1
- data/lib/optimus-runner/version.rb +1 -1
- data/optimus-runner.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c4b6ba04e33e15362ce29fb40070e008593f06a4c14f8a8d03f8de1ee89b8573
|
|
4
|
+
data.tar.gz: 35223c55d2337177ffcdf0b0d0dbb43e6d6b0b386503e65c16f72258177483d0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 450f51dfc0942c2073a1a024ecfee8ea4dfe171bde8c87e4bfcc40312d511cec2a2ea211786b2d4dd29b00be1a18a48232a191a65e8e5228105aa6d668871255
|
|
7
|
+
data.tar.gz: 59d675318703f3d3d77c96e26bf27e41b59b35c4b81a820d8fa4c866bbd56ed320f453a4a76421dd684431d20672777fcaaca86104f039e5f5608ee35067744d
|
data/Gemfile.lock
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
optimus-runner (1.1.
|
|
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.
|
|
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)
|
data/exe/optimus_runner_manager
CHANGED
|
@@ -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/
|
|
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}"
|
data/optimus-runner.gemspec
CHANGED
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.
|
|
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-
|
|
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
|