Class: DeviceFarm::DeviceFarmApi
- Inherits:
-
Object
- Object
- DeviceFarm::DeviceFarmApi
- Defined in:
- lib/devicefarm/devicefarmapi.rb
Instance Method Summary collapse
- #get_device_pool_by_name(pool_name:, project:) ⇒ Object
- #get_project_by_name(project_name:) ⇒ Object
- #get_upload_result(upload) ⇒ Object
-
#initialize ⇒ DeviceFarmApi
constructor
A new instance of DeviceFarmApi.
- #random_name_for_test ⇒ Object
- #run(project:, device_pool:, upload_app:, upload_artifact_test:, type:) ⇒ Object
- #upload_artifact(file_path:, type:, project:) ⇒ Object
- #upload_file(url, path) ⇒ Object
- #wait_for_upload_finish(upload) ⇒ Object
Constructor Details
#initialize ⇒ DeviceFarmApi
Returns a new instance of DeviceFarmApi.
7 8 9 |
# File 'lib/devicefarm/devicefarmapi.rb', line 7 def initialize @client = Aws::DeviceFarm::Client.new end |
Instance Method Details
#get_device_pool_by_name(pool_name:, project:) ⇒ Object
15 16 17 18 19 |
# File 'lib/devicefarm/devicefarmapi.rb', line 15 def get_device_pool_by_name(pool_name:,project:) device_pool_response = @client.list_device_pools(type: "PRIVATE", arn: project.arn) device_pool = device_pool_response.device_pools.select{ |device_pool| device_pool.name == pool_name}[0] device_pool end |
#get_project_by_name(project_name:) ⇒ Object
11 12 13 |
# File 'lib/devicefarm/devicefarmapi.rb', line 11 def get_project_by_name(project_name:) project = @client.list_projects().projects.select{ |project| project.name == project_name}[0] end |
#get_upload_result(upload) ⇒ Object
30 31 32 33 34 |
# File 'lib/devicefarm/devicefarmapi.rb', line 30 def get_upload_result(upload) uploadResult = @client.get_upload({ arn: "#{upload.arn}", }).upload end |
#random_name_for_test ⇒ Object
58 59 60 |
# File 'lib/devicefarm/devicefarmapi.rb', line 58 def random_name_for_test (0...8).map { (65 + rand(26)).chr }.join end |
#run(project:, device_pool:, upload_app:, upload_artifact_test:, type:) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/devicefarm/devicefarmapi.rb', line 62 def run(project:,device_pool:,upload_app:,upload_artifact_test:,type:) @client.schedule_run({ project_arn: project.arn, app_arn: upload_app.arn, device_pool_arn: device_pool.arn, name: random_name_for_test, test: { type: type, test_package_arn: upload_artifact_test.arn } }) end |
#upload_artifact(file_path:, type:, project:) ⇒ Object
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/devicefarm/devicefarmapi.rb', line 47 def upload_artifact(file_path:,type:,project:) file = File.new(file_path) upload = @client.create_upload({ project_arn: project.arn, name: File.basename(file), type: type}).upload upload_file(upload.url,file_path) wait_for_upload_finish(upload) upload end |
#upload_file(url, path) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/devicefarm/devicefarmapi.rb', line 22 def upload_file(url, path) url = URI.parse(url) contents = File.open(path, 'rb').read Net::HTTP.new(url.host).start do |http| http.send_request("PUT", url.request_uri, contents, { 'content-type' => 'application/octet-stream' }) end end |
#wait_for_upload_finish(upload) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/devicefarm/devicefarmapi.rb', line 36 def wait_for_upload_finish(upload) upload_result = get_upload_result(upload) while(upload_result.status != "SUCCEEDED") upload_result = get_upload_result(upload) if upload_result.status.to_s == "FAILED" break end sleep(POLLING_INTERVAL) end end |