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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9e19a8402c5a02c35d70ec36a84137ffceceb6e8
4
- data.tar.gz: dede2f8bf1a5f183ad032ab1afd4e37761e42225
3
+ metadata.gz: 192ef9b91c7299cb94c0bc6ef8f4ca1fed554f8f
4
+ data.tar.gz: 49ecbba9e6f81e5914ee4aff82ac8c5c8fe668f5
5
5
  SHA512:
6
- metadata.gz: da80b81082e07195e070163cbd0b8e470957c5f570f51cac66e73e3d0f30ea5e9976e5b7fc999d89ee867d5fb4147425138429cabcea47ff7365b07560c53a3e
7
- data.tar.gz: a3cf25ee622a2feb3401002c5b989ee13e24aeddd9c0cee7ca3713caaa099caccaa1442d93e38ba1c68b820b5a00b8cb41e925448282172c2ee59b5c065e06e5
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
@@ -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
- device = DeviceAPI::IOS.device(self.device['serial'])
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
- device.install(app_path) if job.install_build
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', 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', device.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
- device = DeviceAPI::IOS.device(self.device['serial'])
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
- device.uninstall(@installed_apps_after[app][:package_name])
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.11
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-03-27 00:00:00.000000000 Z
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.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.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.7
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.7
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