// Generates a hopefully-unique ID for this execution of this task. func runId(task Task) string { // TODO(benjaminwagner): May need a way to ensure that run IDs are unique. It is currently // possible, though very unlikely, for GetOldestPendingTaskV2 to take // ~(pollInterval - 1 second) and for the returned task to fail very quickly, in which case // the next task would could start within the same second as the first task. return strings.SplitN(task.GetCommonCols().Username, "@", 2)[0] + "-" + ctutil.GetCurrentTs() }
func AddTaskHandler(w http.ResponseWriter, r *http.Request, task AddTaskVars) { if !ctfeutil.UserHasEditRights(r) { skutil.ReportError(w, r, fmt.Errorf("Must have google or chromium account to add tasks"), "") return } if task.IsAdminTask() && !ctfeutil.UserHasAdminRights(r) { skutil.ReportError(w, r, fmt.Errorf("Must be admin to add admin tasks; contact rmistry@"), "") return } w.Header().Set("Content-Type", "application/json") if err := json.NewDecoder(r.Body).Decode(&task); err != nil { skutil.ReportError(w, r, err, fmt.Sprintf("Failed to add %T task", task)) return } defer skutil.Close(r.Body) task.GetAddTaskCommonVars().Username = login.LoggedInAs(r) task.GetAddTaskCommonVars().TsAdded = ctutil.GetCurrentTs() if len(task.GetAddTaskCommonVars().Username) > 255 { skutil.ReportError(w, r, fmt.Errorf("Username is too long, limit 255 bytes"), "") return } if _, err := AddTask(task); err != nil { skutil.ReportError(w, r, err, fmt.Sprintf("Failed to insert %T task", task)) return } }
func (dbTask RecreatePageSetsDBTask) GetPopulatedAddTaskVars() task_common.AddTaskVars { taskVars := &AddRecreatePageSetsTaskVars{} taskVars.Username = dbTask.Username taskVars.TsAdded = ctutil.GetCurrentTs() taskVars.RepeatAfterDays = strconv.FormatInt(dbTask.RepeatAfterDays, 10) taskVars.PageSets = dbTask.PageSets return taskVars }
func (dbTask DBTask) GetPopulatedAddTaskVars() task_common.AddTaskVars { taskVars := &AddTaskVars{} taskVars.Username = dbTask.Username taskVars.TsAdded = ctutil.GetCurrentTs() taskVars.RepeatAfterDays = strconv.FormatInt(dbTask.RepeatAfterDays, 10) taskVars.ChromiumRev = dbTask.ChromiumRev taskVars.ChromiumRevTs = strconv.FormatInt(dbTask.ChromiumRevTs.Int64, 10) taskVars.SkiaRev = dbTask.SkiaRev return taskVars }
func (dbTask DBTask) GetPopulatedAddTaskVars() task_common.AddTaskVars { taskVars := &AddTaskVars{} taskVars.Username = dbTask.Username taskVars.TsAdded = ctutil.GetCurrentTs() taskVars.RepeatAfterDays = strconv.FormatInt(dbTask.RepeatAfterDays, 10) taskVars.PageSets = dbTask.PageSets taskVars.ChromiumBuild.ChromiumRev = dbTask.ChromiumRev taskVars.ChromiumBuild.SkiaRev = dbTask.SkiaRev taskVars.Description = dbTask.Description return taskVars }
func (dbTask DBTask) GetPopulatedAddTaskVars() task_common.AddTaskVars { taskVars := &AddTaskVars{} taskVars.Username = dbTask.Username taskVars.TsAdded = ctutil.GetCurrentTs() taskVars.RepeatAfterDays = strconv.FormatInt(dbTask.RepeatAfterDays, 10) taskVars.Benchmark = dbTask.Benchmark taskVars.Platform = dbTask.Platform taskVars.PageSets = dbTask.PageSets taskVars.RepeatRuns = strconv.FormatInt(dbTask.RepeatRuns, 10) taskVars.BenchmarkArgs = dbTask.BenchmarkArgs taskVars.BrowserArgsNoPatch = dbTask.BrowserArgsNoPatch taskVars.BrowserArgsWithPatch = dbTask.BrowserArgsWithPatch taskVars.Description = dbTask.Description taskVars.ChromiumPatch = dbTask.ChromiumPatch taskVars.BlinkPatch = dbTask.BlinkPatch taskVars.SkiaPatch = dbTask.SkiaPatch return taskVars }
func addTrybotTaskHandler(w http.ResponseWriter, r *http.Request) { data, err := webhook.AuthenticateRequest(r) if err != nil { if data == nil { skutil.ReportError(w, r, err, "Failed to read add request") return } if !ctfeutil.UserHasAdminRights(r) { skutil.ReportError(w, r, err, "Failed authentication") return } } trybotTask := TrybotTask{} if err := json.Unmarshal(data, &trybotTask); err != nil { skutil.ReportError(w, r, err, fmt.Sprintf("Failed to add %v trybot task", trybotTask)) return } task := &trybotTask.TaskVars // Add patch data to the task. detail, err := getCLDetail(trybotTask.Issue) if err != nil { skutil.ReportError(w, r, err, "") return } patchsetID, err := strconv.Atoi(trybotTask.PatchsetID) if err != nil { skutil.ReportError(w, r, err, "") return } patch, err := getCLPatch(detail, patchsetID) if err != nil { skutil.ReportError(w, r, err, "") return } clData, err := gatherCLData(detail, patch) if err != nil { skutil.ReportError(w, r, err, "") return } task.Description = fmt.Sprintf("Trybot run for http://codereview.chromium.org/%s#ps%s", clData["cl"], clData["patchset"]) if val, ok := clData["chromium_patch"]; ok { task.ChromiumPatch = val } if val, ok := clData["skia_patch"]; ok { task.SkiaPatch = val } task.GetAddTaskCommonVars().TsAdded = ctutil.GetCurrentTs() taskID, err := task_common.AddTask(task) if err != nil { skutil.ReportError(w, r, err, fmt.Sprintf("Failed to insert %T task", task)) return } w.Header().Set("Content-Type", "application/json") jsonResponse := map[string]interface{}{ "taskID": taskID, } if err := json.NewEncoder(w).Encode(jsonResponse); err != nil { skutil.ReportError(w, r, err, "Failed to encode JSON") return } }
func (vars *UpdateTaskCommonVars) SetCompleted(success bool) { vars.TsCompleted = sql.NullString{String: ctutil.GetCurrentTs(), Valid: true} vars.Failure = sql.NullBool{Bool: !success, Valid: true} }
func (vars *UpdateTaskCommonVars) SetStarted() { vars.TsStarted = sql.NullString{String: ctutil.GetCurrentTs(), Valid: true} }