Chromium Code Reviews| Index: ct/go/util/util.go |
| diff --git a/ct/go/util/util.go b/ct/go/util/util.go |
| index e69499571e5931fd2e1900fa47f49b38c967c093..4fe5e885e89d7e9bc204289066f7cb69cd1d0944 100644 |
| --- a/ct/go/util/util.go |
| +++ b/ct/go/util/util.go |
| @@ -16,6 +16,7 @@ import ( |
| "time" |
| "go.skia.org/infra/go/exec" |
| + "go.skia.org/infra/go/swarming" |
| "go.skia.org/infra/go/util" |
| "github.com/skia-dev/glog" |
| @@ -390,3 +391,48 @@ func ValidateSKPs(pathToSkps string) error { |
| return nil |
| } |
| + |
| +// GetStartRange returns the range worker should start processing at based on its num and how many |
| +// artifacts it is allowed to process. |
| +func GetStartRange(workerNum, artifactsPerWorker int) int { |
| + return ((workerNum - 1) * artifactsPerWorker) + 1 |
| +} |
| + |
| +// ArchiveTriggerCollectSwarmingTasks is a convenience function for CT scripts to call to |
| +// batch archive isolates, trigger swarming tasks, collect the triggered swarming tasks. |
| +func ArchiveTriggerCollectSwarmingTask(s *swarming.SwarmingClient, taskNames, genJSONs []string, hardTimeout, ioTimeout time.Duration) error { |
|
dogben
2016/05/18 17:38:26
Seems that taskNames is only used to verify tasksT
rmistry
2016/05/19 12:59:50
Keeping the taskNames check because of all the new
dogben
2016/05/19 14:27:22
I don't understand.
rmistry
2016/05/19 14:42:19
Done.
|
| + // Batcharchive the tasks. |
| + tasksToHashes, err := s.BatchArchiveTargets(genJSONs, BATCHARCHIVE_TIMEOUT) |
| + if err != nil { |
| + return fmt.Errorf("Could not batch archive targets: %s", err) |
| + } |
| + if len(taskNames) != len(tasksToHashes) { |
| + return fmt.Errorf("len(taskNames) was %d and len(tasksToHashes) was %d", len(taskNames), len(tasksToHashes)) |
| + } |
| + // Trigger swarming using the isolate hashes. |
| + dimensions := map[string]string{"pool": SWARMING_POOL} |
| + tasks, err := s.TriggerSwarmingTasks(tasksToHashes, dimensions, swarming.RECOMMENDED_PRIORITY, swarming.RECOMMENDED_EXPIRATION, hardTimeout, ioTimeout, false) |
| + if err != nil { |
| + return fmt.Errorf("Could not trigger swarming task: %s", err) |
| + } |
| + // Collect all tasks and log the ones that fail. |
| + for _, task := range tasks { |
| + if _, _, err := task.Collect(s); err != nil { |
| + glog.Errorf("task %s failed: %s", task.Title, err) |
| + continue |
| + } |
| + } |
| + return nil |
| +} |
| + |
| +// GetPathToPyFiles returns the location of CT's python scripts. |
| +func GetPathToPyFiles(runOnSwarming bool) string { |
| + var pathToPyFiles string |
|
dogben
2016/05/18 17:38:26
nit: just return rather than assigning to pathToPy
rmistry
2016/05/19 12:59:50
Done.
|
| + if runOnSwarming { |
| + pathToPyFiles = filepath.Join(filepath.Dir(filepath.Dir(os.Args[0])), "src", "go.skia.org", "infra", "ct", "py") |
| + } else { |
| + _, currentFile, _, _ := runtime.Caller(0) |
| + pathToPyFiles = filepath.Join(filepath.Dir(filepath.Dir(filepath.Dir(currentFile))), "py") |
| + } |
| + return pathToPyFiles |
| +} |