package repo import ( "time" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/services/mailer" ) func CloudbrainStatisticAuto() { yesterday := time.Now().AddDate(0, 0, -1).Format("2006-01-02") CloudbrainStatisticDaily(yesterday) } func CloudbrainStatisticDaily(date string) { log.Info("%s", date) log.Info("begin Cloudbrain Statistic") warnEmailMessage := "云脑任务统计信息入库失败,请尽快定位。" if err := models.DeleteCloudbrainStatisticDaily(date); err != nil { log.Error("DeleteCloudbrainStatisticDaily failed: %v", err.Error()) mailer.SendWarnNotifyMail(setting.Warn_Notify_Mails, warnEmailMessage) return } //0 to 23 for each hour, 25 for all 24 hours var WhichHour [25]int64 = [25]int64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 25} for _, whichHour := range WhichHour { log.Info("start statistic: %s", date) var beginTime, endTime time.Time beginTime, endTime = models.GetHourStatTime(date, whichHour) if whichHour == 25 { beginTime, endTime = models.GetDayStatTime(date) } numDubugOne, err := models.GetDebugOneCount(beginTime, endTime) if err != nil { log.Error("GetDebugOneCount failed(%s): %v", numDubugOne, err) } numBenchmarkOne, err := models.GetBenchmarkOneCount(beginTime, endTime) if err != nil { log.Error("GetBenchmarkOneCount failed(%s): %v", numBenchmarkOne, err) } numTrainOne, err := models.GetTrainOneCount(beginTime, endTime) if err != nil { log.Error("GetTrainOneCount failed(%s): %v", numTrainOne, err) } numDebugTwo, err := models.GetDebugTwoCount(beginTime, endTime) if err != nil { log.Error("GetDebugTwoCount failed(%s): %v", numDebugTwo, err) } numTrainTwo, err := models.GetTrainTwoCount(beginTime, endTime) if err != nil { log.Error("GetTrainTwoCount failed(%s): %v", numTrainTwo, err) } numInferenceTwo, err := models.GetInferenceTwoCount(beginTime, endTime) if err != nil { log.Error("GetInferenceTwoCount failed(%s): %v", numInferenceTwo, err) } numCloudOneAll := numDubugOne + numBenchmarkOne + numTrainOne numCloudTwoAll := numDebugTwo + numTrainTwo + numInferenceTwo durationDubugOne, err := models.GetDebugOneDuration(beginTime, endTime) if err != nil { log.Error("GetDebugOneDuration failed(%s): %v", durationDubugOne, err) } durationBenchmarkOne, err := models.GetBenchmarkOneDuration(beginTime, endTime) if err != nil { log.Error("GetBenchmarkOneDuration failed(%s): %v", durationBenchmarkOne, err) } durationTrainOne, err := models.GetTrainOneDuration(beginTime, endTime) if err != nil { log.Error("GetTrainOneDuration failed(%s): %v", durationTrainOne, err) } durationDebugTwo, err := models.GetDebugTwoDuration(beginTime, endTime) if err != nil { log.Error("GetDebugTwoDuration failed(%s): %v", durationDebugTwo, err) } durationTrainTwo, err := models.GetTrainTwoDuration(beginTime, endTime) if err != nil { log.Error("GetTrainTwoDuration failed(%s): %v", durationTrainTwo, err) } durationInferenceTwo, err := models.GetInferenceTwoDuration(beginTime, endTime) if err != nil { log.Error("GetInferenceTwoDuration failed(%s): %v", durationInferenceTwo, err) } durationCloudOneAll := durationDubugOne + durationBenchmarkOne + durationTrainOne durationCloudTwoAll := durationDebugTwo + durationTrainTwo + durationInferenceTwo err = models.CreateCloudbrainStatistic(&models.CloudbrainStatistic{ Date: date, WhichHour: whichHour, NumDubugOne: numDubugOne, NumBenchmarkOne: numBenchmarkOne, NumTrainOne: numTrainOne, NumDubugTwo: numDebugTwo, NumTrainTwo: numTrainTwo, NumInferenceTwo: numInferenceTwo, NumCloudOneAll: numCloudOneAll, NumCloudTwoAll: numCloudTwoAll, DurationDubugOne: durationDubugOne, DurationBenchmarkOne: durationBenchmarkOne, DurationTrainOne: durationTrainOne, DurationDebugTwo: durationDebugTwo, DurationTrainTwo: durationTrainTwo, DurationInferenceTwo: durationInferenceTwo, DurationCloudOneAll: durationCloudOneAll, DurationCloudTwoAll: durationCloudTwoAll, }) if err != nil { log.Error("CreateCloudbrainStatistic(%s) failed:%v", date, err.Error()) return } } }