hive-runner-ios 1.1.11 → 1.1.12
Sign up to get free protection for your applications and to get access to all the features.
- 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
|