package models import ( "errors" "github.com/spf13/cast" ) type MonkeyTask struct { Id int `json:"id" gorm:"column:id;type:int(11);primary_key;not null;autoIncrement;comment:主键"` Project string `json:"project" gorm:"column:project;type:varchar(255);not null;comment:项目名"` Product string `json:"product" gorm:"column:product;type:varchar(255);not null;comment:产品名"` PackageName string `json:"package_name" gorm:"column:package_name;type:varchar(255);not null;comment:应用包名"` PackageURL string `json:"package_url" gorm:"column:package_url;type:varchar(255);not null;comment:应用包下载链接"` Branch string `json:"branch" gorm:"column:branch"` Version string `json:"version" gorm:"column:version"` LaunchActivity string `json:"launch_activity" gorm:"column:launch_activity;type:varchar(255);comment:启动Activity页"` Devices string `json:"devices" gorm:"column:devices;type:varchar(255);comment:存放设备udid"` RunTime int `json:"run_time" gorm:"column:run_time;type:int(11);not null;comment:运行时间(秒)"` RunPids string `json:"run_pids" gorm:"column:run_pids;type:varchar(255);comment:数组形式存放运行进程pid"` Platform string `json:"platform" gorm:"column:platform;type:varchar(255);comment:平台adr/ios"` CoveredAcitvities int `json:"covered_activities" gorm:"-"` CrashCount int `json:"crash_count" gorm:"column:crash_count;type:int(11);not null;comment:崩溃次数"` Creator string `json:"creator" gorm:"column:creator;type:varchar(255);comment:创建人"` Referer string `json:"referer" gorm:"column:referer;type:varchar(255);not null;comment:调用方"` Status string `json:"status" gorm:"column:status;type:varchar(255);not null;comment:运行状态"` HandleStatus string `json:"handle_status" gorm:"type:varchar(255);null"` Remark string `json:"remark" gorm:"column:remark;type:varchar(255);not null;comment:备注"` CreateTime int `json:"create_time" gorm:"column:create_time;type:int(11);not null;autoCreateTime;comment:创建时间"` UpdateTime int `json:"update_time" gorm:"column:update_time;type:int(11);not null;autoUpdateTime;comment:更新时间"` IsDel int `json:"is_del" gorm:"column:is_del;type:int(1);not null;comment:是否已删除"` } func (m *MonkeyTask) TableName() string { return "monkey_task" } func (task *MonkeyTask) Cmd(udid string, filename string) string { cmd_str := "" switch task.Platform { case "adr": cmd_str = "docker run -d --rm --name monkey_task_" + cast.ToString(task.Id) + "_" + udid + " --net=host " cmd_str += "-e TASK_ID=" + cast.ToString(task.Id) + " " cmd_str += "-e PACKAGE=" + task.PackageName + " " cmd_str += "-e RUN_TIME=" + cast.ToString(task.RunTime) + " " cmd_str += "-e DEVICE=" + udid + " " cmd_str += "-v /root/app/autogo/downloads/" + filename + ":/tmp/test.apk" + " " cmd_str += "-v /root/app/uat-adr:/home/app/uat" + " " cmd_str += "monkey-adr" // cmd_str = "cd /home/app/monkey && nohup python3 main_adr.py" + // " -task_id " + cast.ToString(task.Id) // if task.PackageURL != "" { // cmd_str += " -pkg_path " + filename // } // cmd_str += " -package " + task.PackageName // if task.LaunchActivity != "" { // cmd_str += " -launch_activity " + task.LaunchActivity // } // cmd_str += " -run_time " + cast.ToString(task.RunTime) // if udid != "" { // cmd_str += " -device_udid " + udid // } // cmd_str += " >> /home/app/logs/task_output/task_" + cast.ToString(task.Id) + ".log 2>&1" case "ios": cmd_str = "docker run -d --rm --name monkey_task_" + cast.ToString(task.Id) + "_" + udid + " " cmd_str += "-e TASK_ID=" + cast.ToString(task.Id) + " " cmd_str += "-e BUNDLE_ID=" + task.PackageName + " " cmd_str += "-e RUNTIME=" + cast.ToString(task.RunTime) + " " cmd_str += "-e DEVICE=" + udid + " " cmd_str += "-v /home/tmp/pkg/" + filename + ":/tmp/test.ipa" + " " cmd_str += "-v /var/run/usbmuxd:/var/run/usbmuxd" + " " cmd_str += "monkey-ios" } return cmd_str } func (t *MonkeyTask) Check() error { if t.Project == "" { return errors.New("task.Project为空") } if t.Product == "" { return errors.New("task.Product为空") } if t.PackageName == "" { return errors.New("task.PackageName为空") } if t.Branch == "" { return errors.New("task.Branch为空") } if t.Version == "" { return errors.New("task.Version为空") } if t.Platform == "" { return errors.New("task.Platform为空") } // if t.LaunchActivity == "" && t.Platform == "adr" { // return errors.New("task.LaunchActivity为空,platform=adr时需要传入LaunchActivity参数") // } if t.PackageURL == "" { return errors.New("task.PackageURL为空") } return nil }