hive-runner-android 1.2.5 → 1.2.6

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hive/controller/android.rb +102 -71
  3. metadata +37 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f937cc28a9f2c82ee91f8008f280ce8bf912d71
4
- data.tar.gz: 3b989c09d1259807abca79fd290f8ef9a071dff9
3
+ metadata.gz: c76ad1905fc8732822f8f584e3e739fc4c497af3
4
+ data.tar.gz: d9f72a7a6dc976620dcc4c0f3c99812792aabaeb
5
5
  SHA512:
6
- metadata.gz: 125bf2400c4936d437bd0a1f1a62b41e571142c70a714ced04530a52d4d0bc05562300f78a579e8d9847b0a7fdb5301b961f6d697cbffd37138cead0a2bb0def
7
- data.tar.gz: dea8cdbe791295b7bf5a0f58e957456a45d0d2fcb7a94fe587b4a264dd2d9effd97b4fe2f3c446cf8c287c58ee03b51354cc3f5cf63d29220f48d7080a71cbbc
6
+ metadata.gz: 924dc210d17e323cdc3f13f72a665854c3146cb7d85d17e1314eac352bb3ae73c9d59a8ef6f98898993d25dd4c05da160d60314855826d272e7674f305f4d06c
7
+ data.tar.gz: 383d25e84c5cd1ef7443f401cce28c6c9bda931f24b50970eec6768d15585c3f3695196c869f5e2e9920b7d35e585244507dab81916f6684fd9f73c7b2b64f44
@@ -6,90 +6,78 @@ module Hive
6
6
  class Controller
7
7
  class Android < Controller
8
8
 
9
+ def initialize(options)
10
+ @device_type ||= 'Mobile'
11
+ @remote = false if @remote.nil?
12
+ super(options)
13
+ end
14
+
9
15
  # Register and poll connected devices
10
16
  def detect
11
- devices = DeviceAPI::Android.devices
12
- Hive.logger.debug('No devices attached') if devices.empty?
17
+ if Hive.hive_mind.device_details.has_key? :error
18
+ detect_without_hivemind
19
+ else
20
+ detect_with_hivemind
21
+ end
22
+ end
13
23
 
14
- if not Hive.hive_mind.device_details.has_key? :error
15
- # Selecting only android mobiles
16
- begin
17
- connected_devices = Hive.hive_mind.device_details['connected_devices'].select{ |d| d['device_type'] == 'Mobile' && d['operating_system_name'] == 'android' }
18
- rescue NoMethodError
19
- # Failed to find connected devices
20
- raise Hive::Controller::DeviceDetectionFailed
21
- end
24
+ def detect_with_hivemind
25
+ connected_devices = get_connected_devices
26
+ Hive.logger.debug('No devices attached') if connected_devices.empty?
22
27
 
23
- to_poll = []
24
- attached_devices = []
25
- connected_devices.each do |device|
26
- Hive.logger.debug("Device details: #{device.inspect}")
27
- registered_device = devices.select { |a| a.serial == device['serial'] && a.status != :unauthorized && a.status != :no_permissions}
28
- if registered_device.empty?
29
- # A previously registered device isn't attached
30
- Hive.logger.debug("A previously registered device has disappeared: #{device}")
31
- else
32
- # A previously registered device is attached, poll it
33
- Hive.logger.debug("Setting #{device} to be polled")
34
- Hive.logger.debug("Device: #{registered_device.inspect}")
35
- begin
36
- attached_devices << self.create_device(device.merge('os_version' => registered_device[0].version))
37
- to_poll << device['id']
38
- rescue DeviceAPI::DeviceNotFound => e
39
- Hive.logger.warn("Device disconnected before registration (serial: #{device['serial']})")
40
- rescue => e
41
- Hive.logger.warn("Error with connected device: #{e.message}")
42
- end
43
-
44
- devices = devices - registered_device
45
- end
46
- end
47
-
48
- # Poll already registered devices
49
- Hive.logger.debug("Polling: #{to_poll}")
50
- Hive.hive_mind.poll(*to_poll)
28
+ # Selecting only android mobiles
29
+ hivemind_devices = get_hivemind_devices
51
30
 
52
- # Register new devices
53
- devices.select{|a| a.status != :unauthorized && a.status != :no_permissions}.each do |device|
31
+ to_poll = []
32
+ attached_devices = []
33
+ hivemind_devices.each do |device|
34
+ Hive.logger.debug("Device details: #{device.inspect}")
35
+ registered_device = connected_devices.select { |a| a.serial == device['serial'] }
36
+ if registered_device.empty?
37
+ # A previously registered device isn't attached
38
+ Hive.logger.debug("A previously registered device has disappeared: #{device}")
39
+ else
40
+ # A previously registered device is attached, poll it
41
+ Hive.logger.debug("Setting #{device} to be polled")
42
+ Hive.logger.debug("Device: #{registered_device.inspect}")
54
43
  begin
55
- dev = Hive.hive_mind.register(
56
- hostname: device.model,
57
- serial: device.serial,
58
- macs: [device.wifi_mac_address],
59
- ips: [device.ip_address],
60
- brand: device.manufacturer.capitalize,
61
- model: device.model,
62
- device_type: 'Mobile',
63
- imei: device.imei,
64
- operating_system_name: 'android',
65
- operating_system_version: device.version
66
- )
67
- Hive.hive_mind.connect(dev['id'])
68
- Hive.logger.info("Device registered: #{dev}")
44
+ attached_devices << self.create_device(device.merge('os_version' => registered_device[0].version))
45
+ to_poll << device['id']
69
46
  rescue DeviceAPI::DeviceNotFound => e
70
- Hive.logger.warn("Device disconnected before registration (serial: #{device.serial})")
47
+ Hive.logger.warn("Device disconnected before registration (serial: #{device['serial']})")
71
48
  rescue => e
72
49
  Hive.logger.warn("Error with connected device: #{e.message}")
73
50
  end
74
- end
75
51
 
76
- else
77
- Hive.logger.info('No Hive Mind connection')
78
- Hive.logger.debug("Error: #{Hive.hive_mind.device_details[:error]}")
79
- # Hive Mind isn't available, use DeviceAPI instead
80
- device_info = devices.select { |a| a.status != :unauthorized && a.status != :no_permissions }.map do |device|
81
- {
82
- 'id' => device.serial,
83
- 'serial' => device.serial,
84
- 'status' => 'idle',
85
- 'model' => device.model,
86
- 'brand' => device.manufacturer,
87
- 'os_version' => device.version
88
- }
52
+ connected_devices = connected_devices - registered_device
89
53
  end
54
+ end
55
+
56
+ # Poll already registered devices
57
+ Hive.logger.debug("Polling: #{to_poll}")
58
+ Hive.hive_mind.poll(*to_poll)
90
59
 
91
- attached_devices = device_info.collect do |physical_device|
92
- self.create_device(physical_device)
60
+ # Register new devices
61
+ connected_devices.select{|a| a.status != :unauthorized && a.status != :no_permissions}.each do |device|
62
+ begin
63
+ dev = Hive.hive_mind.register(
64
+ hostname: device.model,
65
+ serial: device.serial,
66
+ macs: [device.wifi_mac_address],
67
+ ips: [device.ip_address],
68
+ brand: device.manufacturer.capitalize,
69
+ model: device.model,
70
+ device_type: @device_type,
71
+ imei: device.imei,
72
+ operating_system_name: 'android',
73
+ operating_system_version: device.version
74
+ )
75
+ Hive.hive_mind.connect(dev['id'])
76
+ Hive.logger.info("Device registered: #{dev}")
77
+ rescue DeviceAPI::DeviceNotFound => e
78
+ Hive.logger.warn("Device disconnected before registration (serial: #{device.serial})")
79
+ rescue => e
80
+ Hive.logger.warn("Error with connected device: #{e.message}")
93
81
  end
94
82
  end
95
83
 
@@ -97,6 +85,49 @@ module Hive
97
85
  attached_devices
98
86
  end
99
87
 
88
+ def detect_without_hivemind
89
+ connected_devices = get_connected_devices
90
+ Hive.logger.debug('No devices attached') if connected_devices.empty?
91
+
92
+ Hive.logger.info('No Hive Mind connection')
93
+ Hive.logger.debug("Error: #{Hive.hive_mind.device_details[:error]}")
94
+ # Hive Mind isn't available, use DeviceAPI instead
95
+ device_info = connected_devices.map do |device|
96
+ {
97
+ 'id' => device.serial,
98
+ 'serial' => device.serial,
99
+ 'status' => 'idle',
100
+ 'model' => device.model,
101
+ 'brand' => device.manufacturer,
102
+ 'os_version' => device.version
103
+ }
104
+ end
105
+
106
+ attached_devices = device_info.collect do |physical_device|
107
+ self.create_device(physical_device)
108
+ end
109
+
110
+ Hive.logger.info(attached_devices)
111
+ attached_devices
112
+ end
113
+
114
+ def get_connected_devices
115
+ DeviceAPI::Android.devices.select do |a|
116
+ a.status != :unauthorized &&
117
+ a.status != :no_permissions &&
118
+ a.is_remote? == @remote
119
+ end
120
+ end
121
+
122
+ def get_hivemind_devices
123
+ begin
124
+ Hive.hive_mind.device_details['connected_devices'].select{ |d| d['device_type'] == @device_type && d['operating_system_name'] == 'android' }
125
+ rescue NoMethodError
126
+ # Failed to find connected devices
127
+ raise Hive::Controller::DeviceDetectionFailed
128
+ end
129
+ end
130
+
100
131
  def display_devices(hive_details)
101
132
  rows = []
102
133
  if hive_details.key?('devices')
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.2.5
4
+ version: 1.2.6
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-06-28 00:00:00.000000000 Z
11
+ date: 2016-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: device_api-android
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.9
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.9
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: hive-runner
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +58,34 @@ dependencies:
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: '1.4'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.5'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.5'
75
+ - !ruby/object:Gem::Dependency
76
+ name: webmock
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.22'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.22'
55
89
  description: The Android controller module for Hive Runner
56
90
  email: jon.wilson01@bbc.co.uk
57
91
  executables: []
@@ -88,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
122
  version: '0'
89
123
  requirements: []
90
124
  rubyforge_project:
91
- rubygems_version: 2.5.0
125
+ rubygems_version: 2.5.1
92
126
  signing_key:
93
127
  specification_version: 4
94
128
  summary: Hive Runner Android