optimus-runner 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
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