Class: Fastlane::Provider::AvdSchemeProvider
- Inherits:
-
Object
- Object
- Fastlane::Provider::AvdSchemeProvider
- Defined in:
- lib/fastlane/plugin/automated_test_emulator_run_mik/provider/avd_setup_provider.rb
Class Method Summary collapse
- .check_avd_fields(avd_scheme) ⇒ Object
- .get_avd_schemes(params) ⇒ Object
- .get_unused_even_tcp_ports(min_port, max_port, avd_scheme_list) ⇒ Object
- .read_avd_setup(params) ⇒ Object
- .throw_error(message) ⇒ Object
Class Method Details
.check_avd_fields(avd_scheme) ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/fastlane/plugin/automated_test_emulator_run_mik/provider/avd_setup_provider.rb', line 130 def self.check_avd_fields(avd_scheme) errors = [] if avd_scheme.avd_name.nil? errors.push("avd_name not found") end if avd_scheme.create_avd_package.nil? errors.push("create_avd_package not found") end if avd_scheme.create_avd_device.nil? errors.push("create_avd_device not found") end if avd_scheme.create_avd_tag.nil? errors.push("create_avd_tag not found") end if avd_scheme.create_avd_abi.nil? errors.push("create_avd_abi not found") end if avd_scheme.create_avd_hardware_config_filepath.nil? errors.push("create_avd_hardware_config_filepath not found") end if avd_scheme.launch_avd_snapshot_filepath.nil? errors.push("launch_avd_snapshot_filepath not found") end if avd_scheme.launch_avd_launch_binary_name.nil? errors.push("launch_avd_launch_binary_name not found") end if avd_scheme.launch_avd_port.nil? errors.push("launch_avd_port not found") end if avd_scheme..nil? errors.push("launch_avd_additional_options not found") end return errors end |
.get_avd_schemes(params) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/fastlane/plugin/automated_test_emulator_run_mik/provider/avd_setup_provider.rb', line 11 def self.get_avd_schemes(params) # Read JSON into string variable avd_setup_json = read_avd_setup(params) if avd_setup_json.nil? throw_error("Unable to read AVD_setup.json. Check JSON file structure or file path.") end # Read JSON into Hash avd_setup = JSON.parse(avd_setup_json) avd_hash_list = avd_setup['avd_list'] # Create AVD_scheme objects and fill them with data avd_scheme_list = [] for i in 0...avd_hash_list.length avd_hash = avd_hash_list[i] avd_scheme = AVD_scheme.new avd_scheme.avd_name = avd_hash['avd_name'] avd_scheme.create_avd_package = avd_hash['create_avd_package'] avd_scheme.create_avd_device = avd_hash['create_avd_device'] avd_scheme.create_avd_tag = avd_hash['create_avd_tag'] avd_scheme.create_avd_abi = avd_hash['create_avd_abi'] avd_scheme.create_avd_hardware_config_filepath = avd_hash['create_avd_hardware_config_filepath'] avd_scheme.launch_avd_port = avd_hash['launch_avd_port'] avd_scheme.launch_avd_launch_binary_name = avd_hash['launch_avd_launch_binary_name'] avd_scheme. = avd_hash['launch_avd_additional_options'] avd_scheme.launch_avd_snapshot_filepath = avd_hash['launch_avd_snapshot_filepath'] errors = check_avd_fields(avd_scheme) unless errors.empty? error_log = "Error! Fields not found in JSON: \n" errors.each { |error| error_log += error + "\n" } throw_error(error_log) end avd_scheme_list << avd_scheme end # Prepare list of open ports for AVD_schemes without ports set in JSON avaliable_ports = get_unused_even_tcp_ports(5556, 5586, avd_scheme_list) # Fill empty AVD_schemes with open ports for i in 0...avd_scheme_list.length avd_scheme = avd_scheme_list[i] if avd_scheme.launch_avd_port.eql? "" avd_scheme.launch_avd_port = avaliable_ports[0] avaliable_ports.delete(avaliable_ports[0]) end end return avd_scheme_list end |
.get_unused_even_tcp_ports(min_port, max_port, avd_scheme_list) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/fastlane/plugin/automated_test_emulator_run_mik/provider/avd_setup_provider.rb', line 67 def self.get_unused_even_tcp_ports(min_port, max_port, avd_scheme_list) if min_port % 2 != 0 min_port += 1 end if max_port % 2 != 0 max_port += 1 end avaliable_ports = [] reserved_ports = [] # Gather ports requested in JSON config for i in 0...avd_scheme_list.length avd_scheme = avd_scheme_list[i] unless avd_scheme.launch_avd_port.eql? "" reserved_ports << avd_scheme.launch_avd_port end end # Find next open port which wasn't reserved in JSON config port = min_port for i in 0...avd_scheme_list.length while port < max_port do if !system("lsof -i:#{port}", out: '/dev/null') is_port_reserved = false for j in 0...reserved_ports.length if reserved_ports[j].eql?(port.to_s) is_port_reserved = true break end end if is_port_reserved port = port + 2 break end avaliable_ports << port port = port + 2 break else port = port + 2 end end end return avaliable_ports end |
.read_avd_setup(params) ⇒ Object
119 120 121 122 123 124 125 126 127 128 |
# File 'lib/fastlane/plugin/automated_test_emulator_run_mik/provider/avd_setup_provider.rb', line 119 def self.read_avd_setup(params) if File.exists?(File.("#{params[:AVD_setup_path]}")) file = File.open(File.("#{params[:AVD_setup_path]}"), "rb") json = file.read file.close return json else return nil end end |
.throw_error(message) ⇒ Object
166 167 168 169 |
# File 'lib/fastlane/plugin/automated_test_emulator_run_mik/provider/avd_setup_provider.rb', line 166 def self.throw_error() UI.("Error: ".red + .red) raise Exception, "Lane was stopped by plugin" end |