fastlane-plugin-automated_test_emulator_run 1.4.1 → 1.5.0

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: 27443e3467529ba90c77da7b237ca4cbd0f76b7e
4
- data.tar.gz: 75e3d1fd84428b7f3959d4101b533baba22aac56
3
+ metadata.gz: 1f4df821ea05fe8c6aa84588219ece95396c8765
4
+ data.tar.gz: 4b13639cb09291a3cec0b84cb2c5d4c3f4a01775
5
5
  SHA512:
6
- metadata.gz: 1cb1300326fce2ab21604ad41843734503fd7af046093149cb6a42d3c5427b2fc41a84789b77504e5d2f5acb7c2a371b1ddcdcc6ec342b075c60248437a293bd
7
- data.tar.gz: 9dc424a43ea210c9893d6bbdf133e11d8971b64c63d5cf2e5640f39ac3a5910b58b172376d9e73c8660aca0f82e1796d51c2d968111abe6266899031ae48bf02
6
+ metadata.gz: c32d4a26d431e7032d4836acd5eb47d1786a7e93c315e9bcc7cd246202919f7abab1980be2a8370747cdaac04680bddc2e1601e0ec0120c53495c268a3da2565
7
+ data.tar.gz: 10b97e41d75cfda3757222818b60dc06378a407e9aec09b77c26f19a08130850efc80ec5b9cc2325241729b22d1ad570045bbbabb94ae06dc9ea08188884c5a6
@@ -34,13 +34,14 @@ module Fastlane
34
34
  "Output will be delegated to null and lost. Check your save/read permissions."].join(" ").red)
35
35
  end
36
36
  end
37
-
38
37
  end
39
38
 
39
+ # Reseting wait states
40
40
  all_avd_launched = false
41
+ adb_launch_complete = false
42
+ param_launch_complete = false
41
43
 
42
44
  while(!all_avd_launched)
43
-
44
45
  # Preparation
45
46
  UI.message("Configuring environment in order to launch emulators: ".yellow)
46
47
  UI.message("Getting avaliable AVDs".yellow)
@@ -100,34 +101,48 @@ module Fastlane
100
101
 
101
102
  # Wait for AVDs finish booting
102
103
  UI.message("Waiting for AVDs to finish booting.".yellow)
103
- boot_status = []
104
- for i in 0...avd_schemes.length
105
- boot_status << false
106
- end
107
-
108
104
  UI.message("Performig wait for ADB boot".yellow)
109
- all_avd_launched = wait_for_emulator_boot_by_adb(adb_controller, avd_schemes, "#{params[:AVD_adb_launch_timeout]}")
105
+ adb_launch_complete = wait_for_emulator_boot_by_adb(adb_controller, avd_schemes, "#{params[:AVD_adb_launch_timeout]}")
110
106
 
111
- if all_avd_launched
107
+ # Wait for AVD params finish booting
108
+ if adb_launch_complete
112
109
  UI.message("Wait for ADB boot completed with success".yellow)
113
- UI.message("Performing wait for params: dev.bootcomplete, sys.boot_completed, init.svc.bootanim.".yellow)
114
- for i in 0...avd_schemes.length
115
- all_avd_launched = wait_for_emulator_boot_by_params(adb_controller, avd_controllers[i], "#{params[:AVD_param_launch_timeout]}")
116
- unless all_avd_launched
117
- break
118
- end
110
+
111
+ if (params[:AVD_wait_for_bootcomplete] || params[:AVD_wait_for_boot_completed] || params[:AVD_wait_for_bootanim])
112
+ message = "Performing wait for params: "
113
+
114
+ if params[:AVD_wait_for_bootcomplete]
115
+ message += "'dev.bootcomplete', "
116
+ end
117
+
118
+ if params[:AVD_wait_for_boot_completed]
119
+ message += "'sys.boot_completed', "
120
+ end
121
+
122
+ if params[:AVD_wait_for_bootanim]
123
+ message += "'init.svc.bootanim', "
124
+ end
125
+
126
+ message = message[0...-2] + "."
127
+ UI.message(message.yellow)
128
+
129
+ param_launch_complete = wait_for_emulator_boot_by_params(params, adb_controller, avd_controllers, avd_schemes, "#{params[:AVD_param_launch_timeout]}")
130
+ else
131
+ UI.message("Wait for AVD launch params was turned off. Skipping...".yellow)
132
+ param_launch_complete = true
119
133
  end
120
134
  else
121
135
  UI.message("Wait for ADB boot failed".yellow)
122
136
  end
123
137
 
138
+ all_avd_launched = adb_launch_complete && param_launch_complete
139
+
124
140
  # Deciding if AVD launch should be restarted
125
141
  devices = Action.sh(adb_controller.command_get_devices)
126
142
  if all_avd_launched
127
143
  UI.message("AVDs Booted!".green)
128
144
  else
129
145
  for i in 0...avd_schemes.length
130
-
131
146
  if params[:verbose]
132
147
  # Display AVD output
133
148
  if (File.exists?(avd_controllers[i].output_file.path))
@@ -248,29 +263,83 @@ module Fastlane
248
263
  return launch_status
249
264
  end
250
265
 
251
- def self.wait_for_emulator_boot_by_params(adb_controller, avd_controller, timeout)
252
- timeoutInSeconds= timeout.to_i
253
- startTime = Time.now
266
+ def self.wait_for_emulator_boot_by_params(params, adb_controller, avd_controllers, avd_schemes, timeout)
267
+ timeout_in_seconds= timeout.to_i
268
+ interval = 1000 * 10
269
+ all_params_launched = false
270
+ start_time = last_scan_ended = Time.now
271
+ device_boot_statuses = Hash.new
254
272
 
255
- launch_status = false
256
- loop do
257
- dev_bootcomplete, _stdeerr, _status = Open3.capture3([avd_controller.command_get_property, "dev.bootcomplete"].join(" "))
258
- sys_boot_completed, _stdeerr, _status = Open3.capture3([avd_controller.command_get_property, "sys.boot_completed"].join(" "))
259
- bootanim, _stdeerr, _status = Open3.capture3([avd_controller.command_get_property, "init.svc.bootanim"].join(" "))
260
- currentTime = Time.now
273
+ loop do
274
+ current_time = Time.now
261
275
 
262
- if (currentTime - startTime) >= timeoutInSeconds
263
- UI.message(["AVD param loading took more than ", timeout, ". Attempting to re-launch."].join("").red)
264
- launch_status = false
265
- break
276
+ # Performing single scan over each device
277
+ if (((current_time - last_scan_ended) * 1000) >= interval || start_time == last_scan_ended)
278
+ for i in 0...avd_schemes.length
279
+ avd_schema = avd_schemes[i]
280
+ avd_controller = avd_controllers[i]
281
+ avd_param_boot_hash = Hash.new
282
+ avd_param_status_hash = Hash.new
283
+ avd_booted = false
284
+
285
+ # Retreiving device parameters according to config
286
+ if params[:AVD_wait_for_bootcomplete]
287
+ dev_bootcomplete, _stdeerr, _status = Open3.capture3([avd_controller.command_get_property, "dev.bootcomplete"].join(" "))
288
+ avd_param_boot_hash.store("dev.bootcomplete", dev_bootcomplete.strip.eql?("1"))
289
+ avd_param_status_hash.store("dev.bootcomplete", dev_bootcomplete)
290
+ end
291
+
292
+ if params[:AVD_wait_for_boot_completed]
293
+ sys_boot_completed, _stdeerr, _status = Open3.capture3([avd_controller.command_get_property, "sys.boot_completed"].join(" "))
294
+ avd_param_boot_hash.store("sys.boot_completed", sys_boot_completed.strip.eql?("1"))
295
+ avd_param_status_hash.store("sys.boot_completed", sys_boot_completed)
296
+ end
297
+
298
+ if params[:AVD_wait_for_bootanim]
299
+ bootanim, _stdeerr, _status = Open3.capture3([avd_controller.command_get_property, "init.svc.bootanim"].join(" "))
300
+ avd_param_boot_hash.store("init.svc.bootanim", bootanim.strip.eql?("stopped"))
301
+ avd_param_status_hash.store("init.svc.bootanim", bootanim)
302
+ end
303
+
304
+ # Checking for param statuses
305
+ avd_param_boot_hash.each do |name, is_booted|
306
+ if !is_booted
307
+ break
308
+ end
309
+ avd_booted = true
310
+ end
311
+ device_boot_statuses.store(avd_schema.avd_name, avd_booted)
312
+
313
+ # Plotting current wait results
314
+ device_log = "Device 'emulator-" + avd_schemes[i].launch_avd_port.to_s + "' launch status:"
315
+ UI.message(device_log.magenta)
316
+ avd_param_boot_hash.each do |name, is_booted|
317
+ device_log = "'" + name + "' - '" + avd_param_status_hash[name].strip + "' (launched: " + is_booted.to_s + ")"
318
+ UI.message(device_log.magenta)
319
+ end
266
320
  end
321
+ last_scan_ended = Time.now
322
+ end
323
+
324
+ # Checking if wait doesn't last too long
325
+ if (current_time - start_time) >= timeout_in_seconds
326
+ UI.message(["AVD param loading took more than ", timeout, ". Attempting to re-launch."].join("").red)
327
+ all_params_launched = false
328
+ break
329
+ end
267
330
 
268
- if (dev_bootcomplete.strip == "1" && sys_boot_completed.strip == "1" && bootanim.strip == "stopped")
269
- launch_status = true
331
+ # Finishing wait with success if all params are loaded for every device
332
+ device_boot_statuses.each do |name, is_booted|
333
+ if !is_booted
270
334
  break
271
335
  end
336
+ all_params_launched = true
337
+ end
338
+ if all_params_launched
339
+ break
272
340
  end
273
- return launch_status
341
+ end
342
+ return all_params_launched
274
343
  end
275
344
 
276
345
  def self.available_options
@@ -326,6 +395,24 @@ module Fastlane
326
395
  default_value: true,
327
396
  is_string: false,
328
397
  optional: true),
398
+ FastlaneCore::ConfigItem.new(key: :AVD_wait_for_bootcomplete,
399
+ env_name: "AVD_BOOTCOMPLETE_WAIT",
400
+ description: "Allows to switch wait for 'dev.bootcomplete' AVD launch param on/off",
401
+ default_value: true,
402
+ is_string: false,
403
+ optional: true),
404
+ FastlaneCore::ConfigItem.new(key: :AVD_wait_for_boot_completed,
405
+ env_name: "AVD_BOOT_COMPLETED_WAIT",
406
+ description: "Allows to switch wait for 'sys.boot_completed' AVD launch param on/off",
407
+ default_value: true,
408
+ is_string: false,
409
+ optional: true),
410
+ FastlaneCore::ConfigItem.new(key: :AVD_wait_for_bootanim,
411
+ env_name: "ABD_BOOTANIM_WAIT",
412
+ description: "Allows to switch wait for 'init.svc.bootanim' AVD launch param on/off",
413
+ default_value: true,
414
+ is_string: false,
415
+ optional: true),
329
416
 
330
417
  #launch commands
331
418
  FastlaneCore::ConfigItem.new(key: :shell_task,
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module AutomatedTestEmulatorRun
3
- VERSION = "1.4.1"
3
+ VERSION = "1.5.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-automated_test_emulator_run
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kamil Krzyk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry