hive-runner-ios 1.1.11 → 1.1.12
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/lib/hive/diagnostic/ios/uptime.rb +69 -0
- data/lib/hive/worker/ios.rb +15 -8
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 192ef9b91c7299cb94c0bc6ef8f4ca1fed554f8f
|
4
|
+
data.tar.gz: 49ecbba9e6f81e5914ee4aff82ac8c5c8fe668f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '00600598bd71642cb85488f5518af71b2017e2271d78162894f2dfb8ea24df3d13fceed7d43e5ff6fbf126a5c28570943075e1bbc5f5a75e58357c27e31e4dbd'
|
7
|
+
data.tar.gz: 37c47686c6d9b8ade80a889824d066b8802b3d0a44b4e343f1f797d1e8dfc5ad346612d02da07a5af8a640352562136e1f32fbf680cc26d519ab2537fd6b4678
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'hive/diagnostic'
|
2
|
+
require 'device_api/ios/idevice'
|
3
|
+
|
4
|
+
module Hive
|
5
|
+
class Diagnostic
|
6
|
+
class Ios
|
7
|
+
class Uptime < Diagnostic
|
8
|
+
|
9
|
+
def diagnose(data={})
|
10
|
+
if config.has_key?(:reboot_timeout)
|
11
|
+
if @last_boot_time
|
12
|
+
# DeviceAPI iOS doesn't currently supply uptime.
|
13
|
+
uptime = (Time.now - @last_boot_time).to_i
|
14
|
+
if uptime < config[:reboot_timeout]
|
15
|
+
data[:next_reboot_in] = {:value => "#{config[:reboot_timeout] - uptime}", :unit => "s"}
|
16
|
+
self.pass("Time for next reboot: #{config[:reboot_timeout] - uptime}s", data)
|
17
|
+
else
|
18
|
+
self.fail("Reboot required", data)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
self.fail('No recorded last boot. Rebooting.', data)
|
22
|
+
end
|
23
|
+
else
|
24
|
+
self.pass("Not configured for reboot", data)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def repair(result)
|
29
|
+
data = {}
|
30
|
+
Hive.logger.debug('[iOS]') { "Rebooting #{self.device_api.serial}" }
|
31
|
+
begin
|
32
|
+
data[:last_rebooted] = {:value => Time.now}
|
33
|
+
self.device_api.reboot
|
34
|
+
sleep 10
|
35
|
+
returned = false
|
36
|
+
60.times do |i|
|
37
|
+
sleep 5
|
38
|
+
Hive.logger.debug('[iOS]') { "Wait for #{self.device_api.serial} (#{i})" }
|
39
|
+
break if (returned = DeviceAPI::IOS::IDevice.devices.keys.include? self.device_api.serial)
|
40
|
+
end
|
41
|
+
# If 'trusted?' is tested too quickly it may(?) break the trust
|
42
|
+
# This can probably be reduced or removed completely
|
43
|
+
sleep 60
|
44
|
+
if returned
|
45
|
+
trusted = false
|
46
|
+
60.times do |i|
|
47
|
+
sleep 5
|
48
|
+
Hive.logger.debug('[iOS]') { "Wait for #{self.device_api.serial} to be trusted (#{i})" }
|
49
|
+
break if (trusted = self.device_api.trusted?)
|
50
|
+
end
|
51
|
+
if trusted
|
52
|
+
self.pass("Rebooted", data)
|
53
|
+
else
|
54
|
+
self.fail("Failed to trust after reboot", data)
|
55
|
+
end
|
56
|
+
else
|
57
|
+
self.fail("Failed to reboot", data)
|
58
|
+
end
|
59
|
+
@last_boot_time = Time.now
|
60
|
+
rescue => e
|
61
|
+
Hive.logger.error('[iOS]') { "Caught exception #{e} while rebooting #{self.device_api.serial}" }
|
62
|
+
end
|
63
|
+
diagnose(data)
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/hive/worker/ios.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'hive/worker'
|
2
2
|
require 'hive/messages/ios_job'
|
3
3
|
require 'fruity_builder'
|
4
|
+
require 'device_api/ios'
|
4
5
|
|
5
6
|
module Hive
|
6
7
|
class PortReserver
|
@@ -27,6 +28,8 @@ module Hive
|
|
27
28
|
@device_range = device['device_range'].downcase
|
28
29
|
@os_version = device['os_version']
|
29
30
|
@worker_ports = PortReserver.new
|
31
|
+
@device_api = DeviceAPI::IOS.device(@serial)
|
32
|
+
device["device_api"] = @device_api
|
30
33
|
set_device_status('happy')
|
31
34
|
self.device = device
|
32
35
|
super(device)
|
@@ -73,8 +76,7 @@ module Hive
|
|
73
76
|
def pre_script(job, file_system, script)
|
74
77
|
|
75
78
|
set_device_status('busy')
|
76
|
-
|
77
|
-
@installed_apps = device.list_installed_packages
|
79
|
+
@installed_apps = @device_api.list_installed_packages
|
78
80
|
@log.debug("Apps installed before test:")
|
79
81
|
@installed_apps.each_pair do |app, details|
|
80
82
|
@log.debug(" #{app}")
|
@@ -94,7 +96,7 @@ module Hive
|
|
94
96
|
FruityBuilder::IOS::Signing.sign_app({ cert: @options['signing_identity'], entitlements: entitlements, app: app_path } )
|
95
97
|
app_info = FruityBuilder::IOS::Plistutil.get_bundle_id_from_app(app_path)
|
96
98
|
app_bundle = app_info['CFBundleIdentifier']
|
97
|
-
|
99
|
+
@device_api.install(app_path) if job.install_build
|
98
100
|
script.set_env 'BUNDLE_ID', app_bundle
|
99
101
|
end
|
100
102
|
else
|
@@ -125,9 +127,9 @@ module Hive
|
|
125
127
|
script.set_env 'DEVICE_ENDPOINT', "http://#{ip_address}:37265" unless ip_address.nil?
|
126
128
|
|
127
129
|
# Required for Appium testing
|
128
|
-
script.set_env 'DEVICE_NAME',
|
130
|
+
script.set_env 'DEVICE_NAME', @device_api.name
|
129
131
|
script.set_env 'PLATFORM_NAME', 'iOS'
|
130
|
-
script.set_env 'PLATFORM_VERSION',
|
132
|
+
script.set_env 'PLATFORM_VERSION', @device_api.version
|
131
133
|
|
132
134
|
"#{self.device['serial']} #{@worker_ports.ports['Appium']} #{app_path} #{file_system.results_path}"
|
133
135
|
end
|
@@ -142,8 +144,7 @@ module Hive
|
|
142
144
|
@port_allocator.release_port(port)
|
143
145
|
end
|
144
146
|
|
145
|
-
|
146
|
-
@installed_apps_after = device.list_installed_packages
|
147
|
+
@installed_apps_after = @device_api.list_installed_packages
|
147
148
|
@log.debug("Apps installed after test:")
|
148
149
|
@installed_apps_after.each_pair do |app, details|
|
149
150
|
@log.debug(" #{app}")
|
@@ -153,11 +154,17 @@ module Hive
|
|
153
154
|
end
|
154
155
|
(@installed_apps_after.keys - @installed_apps.keys).each do |app|
|
155
156
|
@log.info("Uninstalling #{app} (#{@installed_apps_after[app][:package_name]})")
|
156
|
-
|
157
|
+
@device_api.uninstall(@installed_apps_after[app][:package_name])
|
157
158
|
end
|
158
159
|
set_device_status('happy')
|
159
160
|
end
|
160
161
|
|
162
|
+
# Take screenshot when there is an error
|
163
|
+
def after_error(job, file_system, script)
|
164
|
+
@log.info('Taking screenshot after error')
|
165
|
+
@device_api.screenshot(filename: File.expand_path('error.tiff', file_system.results_path))
|
166
|
+
end
|
167
|
+
|
161
168
|
#def device_status
|
162
169
|
#
|
163
170
|
#end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hive-runner-ios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hive-runner
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.1.
|
19
|
+
version: 2.1.27
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.1.
|
26
|
+
version: 2.1.27
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: device_api-ios
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.0
|
33
|
+
version: 1.1.0
|
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: 1.0
|
40
|
+
version: 1.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: hive-messages
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- README.md
|
76
76
|
- lib/hive/controller/ios.rb
|
77
77
|
- lib/hive/device/ios.rb
|
78
|
+
- lib/hive/diagnostic/ios/uptime.rb
|
78
79
|
- lib/hive/messages/ios_job.rb
|
79
80
|
- lib/hive/worker/ios.rb
|
80
81
|
homepage: https://github.com/bbc/hive-runner-ios
|