hive-runner-android 1.1.6 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hive/controller/android.rb +0 -106
- data/lib/hive/device/android.rb +0 -42
- data/lib/hive/worker/android.rb +11 -27
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 386102f5f6c6fca8095d765453cb5bf8dbb356ab
|
4
|
+
data.tar.gz: c0dcd7026a3e84b03ae6ccec86e45a6747170d2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68a40b5c250516ac13a743d63c47ffe6c8ef2c288ad65d56b918a5bd7aadc32703b3278e511f175d9a40bd5e2f30e3cc89c260c6db58bfcdba166ae25c0d331b
|
7
|
+
data.tar.gz: c7be9e055cdab4e07402d0fb6614b8771f04da55d613cbb98e68537589606acda2c9d0b8aadaa00943423ad613e21730dd9306905a7700ac0561ed688cec638e
|
@@ -8,7 +8,6 @@ module Hive
|
|
8
8
|
|
9
9
|
def detect
|
10
10
|
self.detect_hive_mind
|
11
|
-
self.detect_devicedb
|
12
11
|
end
|
13
12
|
|
14
13
|
# Register with Hive Mind (New)
|
@@ -97,111 +96,6 @@ module Hive
|
|
97
96
|
attached_devices
|
98
97
|
end
|
99
98
|
|
100
|
-
# Register with DeviceDB (Old)
|
101
|
-
def detect_devicedb
|
102
|
-
devices = DeviceAPI::Android.devices
|
103
|
-
Hive.logger.debug('No devices attached') if devices.empty?
|
104
|
-
Hive.logger.debug("#{Time.now} Retrieving hive details")
|
105
|
-
hive_details = Hive.devicedb('Hive').find(Hive.id)
|
106
|
-
Hive.logger.debug("#{Time.now} Finished fetching hive details")
|
107
|
-
attached_devices = []
|
108
|
-
|
109
|
-
if hive_details.key?('devices')
|
110
|
-
# Update the 'cached' results from DeviceDB
|
111
|
-
@hive_details = hive_details
|
112
|
-
else
|
113
|
-
# DeviceDB isn't available - use the cached version
|
114
|
-
hive_details = @hive_details
|
115
|
-
end
|
116
|
-
|
117
|
-
if hive_details.is_a? Hash
|
118
|
-
# DeviceDB information is available, use it
|
119
|
-
hive_details['devices'].select {|a| a['os'] == 'android'}.each do |device|
|
120
|
-
registered_device = devices.select { |a| a.serial == device['serial'] && a.status != :unauthorized && a.status != :no_permissions }
|
121
|
-
if registered_device.empty?
|
122
|
-
# A previously registered device isn't attached
|
123
|
-
Hive.logger.debug("HM) A previously registered device has disappeared: #{device}")
|
124
|
-
else
|
125
|
-
# A previously registered device is attached, poll it
|
126
|
-
Hive.logger.debug("#{Time.now} Polling attached device - #{device}")
|
127
|
-
Hive.devicedb('Device').poll(device['id'])
|
128
|
-
Hive.logger.debug("#{Time.now} Finished polling device")
|
129
|
-
|
130
|
-
devices = devices - registered_device
|
131
|
-
begin
|
132
|
-
attached_devices <<
|
133
|
-
self.create_device(device.merge(
|
134
|
-
'os_version' => registered_device[0].version,
|
135
|
-
'model' => device['device_model'],
|
136
|
-
'brand' => device['device_brand'],
|
137
|
-
'queues' => device['device_queues'].map{ |d| d['name'] },
|
138
|
-
'queue_prefix' => @config['queue_prefix']
|
139
|
-
))
|
140
|
-
rescue DeviceAPI::DeviceNotFound
|
141
|
-
Hive.logger.info("Device '#{device['serial']}' disconnected during registration")
|
142
|
-
rescue => e
|
143
|
-
Hive.logger.warn("Error with connected device: #{e.message}")
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
devices.each do |device|
|
149
|
-
register_new_device(device)
|
150
|
-
end
|
151
|
-
|
152
|
-
display_devices(hive_details)
|
153
|
-
else
|
154
|
-
# DeviceDB isn't available, use DeviceAPI instead
|
155
|
-
|
156
|
-
device_info = devices.select { |a| a.status != :unauthorized && a.status != :no_permissions }.map do |device|
|
157
|
-
{
|
158
|
-
'id' => device.serial,
|
159
|
-
'serial' => device.serial,
|
160
|
-
'status' => 'idle',
|
161
|
-
'model' => device.model,
|
162
|
-
'brand' => device.manufacturer,
|
163
|
-
'os_version' => device.version,
|
164
|
-
'queue_prefix' => @config['queue_prefix']
|
165
|
-
}
|
166
|
-
end
|
167
|
-
|
168
|
-
attached_devices = device_info.collect do |physical_device|
|
169
|
-
self.create_device(physical_device)
|
170
|
-
end
|
171
|
-
end
|
172
|
-
attached_devices
|
173
|
-
end
|
174
|
-
|
175
|
-
def register_new_device(device)
|
176
|
-
begin
|
177
|
-
Hive.logger.info("Adding new Android device: #{device.model}")
|
178
|
-
|
179
|
-
attributes = {
|
180
|
-
os: 'android',
|
181
|
-
os_version: device.version,
|
182
|
-
serial: device.serial,
|
183
|
-
device_type: 'mobile',
|
184
|
-
device_model: device.model,
|
185
|
-
device_brand: device.manufacturer,
|
186
|
-
device_range: device.range,
|
187
|
-
hive: Hive.id
|
188
|
-
}
|
189
|
-
rescue DeviceAPI::DeviceNotFound
|
190
|
-
Hive.logger.info("Device '#{device.serial}' disconnected during registration")
|
191
|
-
rescue DeviceAPI::UnauthorizedDevice
|
192
|
-
Hive.logger.info("Device '#{device.serial}' is unauthorized")
|
193
|
-
rescue DeviceAPI::Android::ADBCommandError
|
194
|
-
# If a device has been disconnected while we're trying to add it, the device_api
|
195
|
-
# gem will throw an error
|
196
|
-
Hive.logger.debug('Device disconnected while attempting to add')
|
197
|
-
rescue => e
|
198
|
-
Hive.logger.warn("Error with connected device: #{e.message}")
|
199
|
-
end
|
200
|
-
|
201
|
-
registration = Hive.devicedb('Device').register(attributes)
|
202
|
-
Hive.devicedb('Device').hive_connect(registration['id'], Hive.id)
|
203
|
-
end
|
204
|
-
|
205
99
|
def display_devices(hive_details)
|
206
100
|
rows = []
|
207
101
|
if hive_details.key?('devices')
|
data/lib/hive/device/android.rb
CHANGED
@@ -11,50 +11,8 @@ module Hive
|
|
11
11
|
@model = config['model'].downcase.gsub(/\s/, '_')
|
12
12
|
@brand = config['brand'].downcase.gsub(/\s/, '_')
|
13
13
|
@os_version = config['os_version']
|
14
|
-
|
15
|
-
# TODO The setting of config['queues'] can be removed when DeviceDB
|
16
|
-
# is no longer being used
|
17
|
-
new_queues = calculate_queue_names
|
18
|
-
new_queues = new_queues | config['queues'] if config.has_key?('queues')
|
19
|
-
|
20
|
-
devicedb_ids = new_queues.map { |queue| find_or_create_queue(queue) }
|
21
|
-
Hive.devicedb('Device').edit(@identity, { device_queue_ids: devicedb_ids })
|
22
|
-
config['queues'] = new_queues
|
23
|
-
|
24
14
|
super
|
25
15
|
end
|
26
|
-
|
27
|
-
# Uses either DeviceAPI or DeviceDB to generate queue names for a device
|
28
|
-
# TODO Remove when DeviceDB is not being used any more
|
29
|
-
def calculate_queue_names
|
30
|
-
[
|
31
|
-
"#{@queue_prefix}#{self.model}",
|
32
|
-
"#{@queue_prefix}#{self.brand}",
|
33
|
-
"#{@queue_prefix}android",
|
34
|
-
"#{@queue_prefix}android-#{self.os_version}",
|
35
|
-
"#{@queue_prefix}android-#{self.os_version}-#{self.model}"
|
36
|
-
]
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def find_or_create_queue(name)
|
42
|
-
queue = Hive.devicedb('Queue').find_by_name(name)
|
43
|
-
|
44
|
-
return queue.first['id'] unless queue.empty? || queue.is_a?(Hash)
|
45
|
-
|
46
|
-
queue = create_queue(name, "#{name} queue created by Hive Runner")
|
47
|
-
queue['id'] unless queue.empty?
|
48
|
-
end
|
49
|
-
|
50
|
-
def create_queue(name, description)
|
51
|
-
queue_attributes = {
|
52
|
-
name: name,
|
53
|
-
description: description
|
54
|
-
}
|
55
|
-
|
56
|
-
Hive.devicedb('Queue').register(device_queue: queue_attributes)
|
57
|
-
end
|
58
16
|
end
|
59
17
|
end
|
60
18
|
end
|
data/lib/hive/worker/android.rb
CHANGED
@@ -20,17 +20,18 @@ module Hive
|
|
20
20
|
attr_accessor :device
|
21
21
|
|
22
22
|
def initialize(device)
|
23
|
+
@serial = device['serial']
|
23
24
|
@queue_prefix = device['queue_prefix'].to_s == '' ? '' : "#{device['queue_prefix']}-"
|
24
25
|
@model = device['model'].downcase.gsub(/\s/, '_')
|
25
26
|
@brand = device['brand'].downcase.gsub(/\s/, '_')
|
26
27
|
@os_version = device['os_version']
|
27
28
|
@worker_ports = PortReserver.new
|
28
29
|
begin
|
29
|
-
device.merge!({"device_api" => DeviceAPI::Android.device(
|
30
|
+
device.merge!({"device_api" => DeviceAPI::Android.device(@serial)})
|
30
31
|
rescue DeviceAPI::DeviceNotFound
|
31
|
-
Hive.logger.info("Device '#{
|
32
|
+
Hive.logger.info("Device '#{@serial}' disconnected during initialization")
|
32
33
|
rescue DeviceAPI::UnauthorizedDevice
|
33
|
-
Hive.logger.info("Device '#{
|
34
|
+
Hive.logger.info("Device '#{@serial}' is unauthorized")
|
34
35
|
rescue DeviceAPI::Android::ADBCommandError
|
35
36
|
Hive.logger.info("Device disconnected during worker initialization")
|
36
37
|
rescue => e
|
@@ -85,30 +86,13 @@ module Hive
|
|
85
86
|
set_device_status('idle')
|
86
87
|
end
|
87
88
|
|
88
|
-
def device_status
|
89
|
-
|
90
|
-
|
91
|
-
if details.key?('status')
|
92
|
-
@state = details['status']
|
93
|
-
else
|
94
|
-
@state
|
95
|
-
end
|
96
|
-
end
|
89
|
+
#def device_status
|
90
|
+
# # TODO Get from Hive Mind
|
91
|
+
#end
|
97
92
|
|
98
|
-
def set_device_status(status)
|
99
|
-
|
100
|
-
|
101
|
-
begin
|
102
|
-
details = Hive.devicedb('Device').poll(@options['id'], status)
|
103
|
-
if details.key?('status')
|
104
|
-
details['status']
|
105
|
-
else
|
106
|
-
@state
|
107
|
-
end
|
108
|
-
rescue
|
109
|
-
@state
|
110
|
-
end
|
111
|
-
end
|
93
|
+
#def set_device_status(status)
|
94
|
+
# # TODO Report to Hive Mind
|
95
|
+
#end
|
112
96
|
|
113
97
|
def autogenerated_queues
|
114
98
|
@log.info("Autogenerating queues")
|
@@ -123,7 +107,7 @@ module Hive
|
|
123
107
|
|
124
108
|
def hive_mind_device_identifiers
|
125
109
|
{
|
126
|
-
serial: @
|
110
|
+
serial: @serial,
|
127
111
|
device_type: 'Mobile'
|
128
112
|
}
|
129
113
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hive-runner-android
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: device_api-android
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: '2.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: '2.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: terminal-table
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|