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 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