Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2881)

Unified Diff: build_scheduler/go/task_scheduler/task_candidate.go

Issue 2296763008: [task scheduler] Move files from build_scheduler/ to task_scheduler/ (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: build_scheduler/go/task_scheduler/task_candidate.go
diff --git a/build_scheduler/go/task_scheduler/task_candidate.go b/build_scheduler/go/task_scheduler/task_candidate.go
deleted file mode 100644
index 1c6ae0998c9d3ccaa1a72908c08f37fd17cb716d..0000000000000000000000000000000000000000
--- a/build_scheduler/go/task_scheduler/task_candidate.go
+++ /dev/null
@@ -1,167 +0,0 @@
-package task_scheduler
-
-import (
- "fmt"
- "path"
- "strings"
-
- swarming_api "github.com/luci/luci-go/common/api/swarming/swarming/v1"
- "go.skia.org/infra/build_scheduler/go/db"
- "go.skia.org/infra/go/isolate"
- "go.skia.org/infra/go/swarming"
-)
-
-// taskCandidate is a struct used for determining which tasks to schedule.
-type taskCandidate struct {
- Commits []string
- IsolatedInput string
- IsolatedHashes []string
- Name string
- Repo string
- Revision string
- Score float64
- StealingFromId string
- TaskSpec *TaskSpec
-}
-
-// Copy returns a copy of the taskCandidate.
-func (c *taskCandidate) Copy() *taskCandidate {
- commits := make([]string, len(c.Commits))
- copy(commits, c.Commits)
- isolatedHashes := make([]string, len(c.IsolatedHashes))
- copy(isolatedHashes, c.IsolatedHashes)
- return &taskCandidate{
- Commits: commits,
- IsolatedInput: c.IsolatedInput,
- IsolatedHashes: isolatedHashes,
- Name: c.Name,
- Repo: c.Repo,
- Revision: c.Revision,
- Score: c.Score,
- StealingFromId: c.StealingFromId,
- TaskSpec: c.TaskSpec.Copy(),
- }
-}
-
-// MakeId generates a string ID for the taskCandidate.
-func (c *taskCandidate) MakeId() string {
- return fmt.Sprintf("taskCandidate|%s|%s|%s", c.Repo, c.Name, c.Revision)
-}
-
-// ParseId generates taskCandidate information from the ID.
-func parseId(id string) (string, string, string, error) {
- split := strings.Split(id, "|")
- if len(split) != 4 {
- return "", "", "", fmt.Errorf("Invalid ID: %q", id)
- }
- if split[0] != "taskCandidate" {
- return "", "", "", fmt.Errorf("Invalid ID: %q", id)
- }
- for _, s := range split[1:] {
- if s == "" {
- return "", "", "", fmt.Errorf("Invalid ID: %q", id)
- }
- }
- return split[1], split[2], split[3], nil
-}
-
-// MakeTask instantiates a db.Task from the taskCandidate.
-func (c *taskCandidate) MakeTask() *db.Task {
- commits := make([]string, len(c.Commits))
- copy(commits, c.Commits)
- return &db.Task{
- Commits: commits,
- Id: "", // Filled in when the task is inserted into the DB.
- Name: c.Name,
- Repo: c.Repo,
- Revision: c.Revision,
- }
-}
-
-// MakeIsolateTask creates an isolate.Task from this taskCandidate.
-func (c *taskCandidate) MakeIsolateTask(infraBotsDir, baseDir string) *isolate.Task {
- return &isolate.Task{
- BaseDir: baseDir,
- Blacklist: isolate.DEFAULT_BLACKLIST,
- Deps: c.IsolatedHashes,
- IsolateFile: path.Join(infraBotsDir, c.TaskSpec.Isolate),
- OsType: "linux", // TODO(borenet)
- }
-}
-
-// MakeTaskRequest creates a SwarmingRpcsNewTaskRequest object from the taskCandidate.
-func (c *taskCandidate) MakeTaskRequest(id string) *swarming_api.SwarmingRpcsNewTaskRequest {
- cipdPackages := make([]*swarming_api.SwarmingRpcsCipdPackage, 0, len(c.TaskSpec.CipdPackages))
- for _, p := range c.TaskSpec.CipdPackages {
- cipdPackages = append(cipdPackages, &swarming_api.SwarmingRpcsCipdPackage{
- PackageName: p.Name,
- Path: p.Path,
- Version: fmt.Sprintf("%d", p.Version),
- })
- }
-
- dims := make([]*swarming_api.SwarmingRpcsStringPair, 0, len(c.TaskSpec.Dimensions))
- dimsMap := make(map[string]string, len(c.TaskSpec.Dimensions))
- for _, d := range c.TaskSpec.Dimensions {
- split := strings.SplitN(d, ":", 2)
- key := split[0]
- val := split[1]
- dims = append(dims, &swarming_api.SwarmingRpcsStringPair{
- Key: key,
- Value: val,
- })
- dimsMap[key] = val
- }
-
- return &swarming_api.SwarmingRpcsNewTaskRequest{
- ExpirationSecs: int64(swarming.RECOMMENDED_EXPIRATION.Seconds()),
- Name: c.Name,
- Priority: int64(100.0 * c.TaskSpec.Priority),
- Properties: &swarming_api.SwarmingRpcsTaskProperties{
- CipdInput: &swarming_api.SwarmingRpcsCipdInput{
- Packages: cipdPackages,
- },
- Dimensions: dims,
- ExecutionTimeoutSecs: int64(swarming.RECOMMENDED_HARD_TIMEOUT.Seconds()),
- InputsRef: &swarming_api.SwarmingRpcsFilesRef{
- Isolated: c.IsolatedInput,
- Isolatedserver: isolate.ISOLATE_SERVER_URL,
- Namespace: isolate.DEFAULT_NAMESPACE,
- },
- IoTimeoutSecs: int64(swarming.RECOMMENDED_IO_TIMEOUT.Seconds()),
- },
- Tags: db.TagsForTask(c.Name, id, c.TaskSpec.Priority, c.Repo, c.Revision, dimsMap),
- User: "skia-build-scheduler",
- }
-}
-
-// allDepsMet determines whether all dependencies for the given task candidate
-// have been satisfied, and if so, returns their isolated outputs.
-func (c *taskCandidate) allDepsMet(cache db.TaskCache) (bool, []string, error) {
- isolatedHashes := make([]string, 0, len(c.TaskSpec.Dependencies))
- for _, depName := range c.TaskSpec.Dependencies {
- d, err := cache.GetTaskForCommit(c.Repo, c.Revision, depName)
- if err != nil {
- return false, nil, err
- }
- if d == nil {
- return false, nil, nil
- }
- if !d.Done() || !d.Success() || d.IsolatedOutput == "" {
- return false, nil, nil
- }
- isolatedHashes = append(isolatedHashes, d.IsolatedOutput)
- }
- return true, isolatedHashes, nil
-}
-
-// taskCandidateSlice is an alias used for sorting a slice of taskCandidates.
-type taskCandidateSlice []*taskCandidate
-
-func (s taskCandidateSlice) Len() int { return len(s) }
-func (s taskCandidateSlice) Swap(i, j int) {
- s[i], s[j] = s[j], s[i]
-}
-func (s taskCandidateSlice) Less(i, j int) bool {
- return s[i].Score > s[j].Score // candidates sort in decreasing order.
-}
« no previous file with comments | « build_scheduler/go/task_scheduler/specs_test.go ('k') | build_scheduler/go/task_scheduler/task_candidate_test.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698