/* List all unique problems */ func listUniqueProblems(svc *devicefarm.DeviceFarm, runArn string) { listReq := &devicefarm.ListUniqueProblemsInput{ Arn: aws.String(runArn), } resp, err := svc.ListUniqueProblems(listReq) failOnErr(err, "error listing problems") fmt.Println(awsutil.Prettify(resp)) }
/* Get Run Report */ func runReport(svc *devicefarm.DeviceFarm, runArn string) { infoReq := &devicefarm.GetRunInput{ Arn: aws.String(runArn), } resp, err := svc.GetRun(infoReq) failOnErr(err, "error getting run info") fmt.Printf("Reporting on run %s\n", *resp.Run.Name) fmt.Printf("Run arn %s\n", runArn) //fmt.Println(awsutil.Prettify(resp)) jobReq := &devicefarm.ListJobsInput{ Arn: aws.String(runArn), } // Find all artifacts artifactReq := &devicefarm.ListArtifactsInput{ Arn: aws.String(runArn), } types := []string{"LOG", "SCREENSHOT", "FILE"} artifacts := map[string][]devicefarm.ListArtifactsOutput{} for _, artifactType := range types { artifactReq.Type = aws.String(artifactType) artifactResp, err := svc.ListArtifacts(artifactReq) failOnErr(err, "error getting run info") // Store type artifacts artifacts[artifactType] = append(artifacts[artifactType], *artifactResp) } respJob, err := svc.ListJobs(jobReq) failOnErr(err, "error getting jobs") // Find all jobs within this run for _, job := range respJob.Jobs { fmt.Println("==========================================") time.Sleep(2 * time.Second) jobFriendlyName := fmt.Sprintf("%s - %s - %s", *job.Name, *job.Device.Model, *job.Device.Os) fmt.Println(awsutil.Prettify(job)) suiteReq := &devicefarm.ListSuitesInput{ Arn: aws.String(*job.Arn), } suiteResp, err := svc.ListSuites(suiteReq) failOnErr(err, "error getting run info") for _, suite := range suiteResp.Suites { message := "" if suite.Message != nil { message = *suite.Message } debug := true if debug { fmt.Printf("%s -> %s : %s \n----> %s\n", jobFriendlyName, *suite.Name, message, *suite.Arn) } dirPrefix := fmt.Sprintf("report/%s/%s", jobFriendlyName, *suite.Name) downloadArtifactsForSuite(dirPrefix, artifacts, *suite) } fmt.Println(awsutil.Prettify(suiteResp)) } params := &devicefarm.ListUniqueProblemsInput{ Arn: aws.String(runArn), // Required } problems, err := svc.ListUniqueProblems(params) if err != nil { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) return } // Pretty-print the response data. fmt.Println(awsutil.Prettify(problems)) problemsJson, _ := jsonutil.BuildJSON(problems) writeFile(problemsJson, "./report/unique_problems.json") }