hive-runner-android 1.2.5 → 1.2.6

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