You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
4.9 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 --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
}