|
|
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:备注"`
|
|
|
StartTime int `json:"start_time" gorm:"column:start_time"`
|
|
|
EndTime int `json:"end_time" gorm:"column:end_time"`
|
|
|
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 --net=host --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 /root/app/autogo/downloads/" + 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
|
|
|
}
|