Class: DeviceFarm::DeviceFarmApi

Inherits:
Object
  • Object
show all
Defined in:
lib/devicefarm/devicefarmapi.rb

Instance Method Summary collapse

Constructor Details

#initializeDeviceFarmApi

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_testObject



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