Update auto-check config and stress modules
This commit is contained in:
@@ -36,7 +36,7 @@ type Runner struct {
|
||||
// NewRunner 创建执行器(检查/在线安装 → 构建指标 → 生成脚本 → 执行)
|
||||
func NewRunner(cfg Config, types []TestType, client *ssh.Client, autoInstall bool, sudoPwd string) *Runner {
|
||||
// 1. 检测工具,缺失时按发行版在线安装(可配置国内镜像源加速)
|
||||
tools, failed := EnsureTools(client, requiredTools, autoInstall, sudoPwd)
|
||||
tools, failed := EnsureTools(client, requiredTools, autoInstall, sudoPwd, cfg.UseMirror)
|
||||
metrics := BuildMetrics(types, tools)
|
||||
return &Runner{cfg: cfg, types: types, client: client, tools: tools, metrics: metrics, installFailed: failed}
|
||||
}
|
||||
@@ -285,14 +285,14 @@ func (r *Runner) assembleScript() string {
|
||||
sb.WriteString("set -e\n\n")
|
||||
|
||||
// 导出参数变量
|
||||
sb.WriteString(fmt.Sprintf("export AUTOCHECK_DURATION=%d\n", int(r.cfg.Duration.Seconds())))
|
||||
sb.WriteString(fmt.Sprintf("export AUTOCHECK_THREADS=%d\n", r.cfg.Threads))
|
||||
sb.WriteString(fmt.Sprintf("export AUTOCHECK_DISK_SIZE_MB=%d\n", r.cfg.DiskSizeMB))
|
||||
sb.WriteString(fmt.Sprintf("export AUTOCHECK_MEM_SIZE_MB=%d\n", r.cfg.MemSizeMB))
|
||||
sb.WriteString(fmt.Sprintf("export AUTOCHECK_TEMP_INTERVAL=%d\n", int(r.cfg.TempLogInt.Seconds())))
|
||||
fmt.Fprintf(&sb, "export AUTOCHECK_DURATION=%d\n", int(r.cfg.Duration.Seconds()))
|
||||
fmt.Fprintf(&sb, "export AUTOCHECK_THREADS=%d\n", r.cfg.Threads)
|
||||
fmt.Fprintf(&sb, "export AUTOCHECK_DISK_SIZE_MB=%d\n", r.cfg.DiskSizeMB)
|
||||
fmt.Fprintf(&sb, "export AUTOCHECK_MEM_SIZE_MB=%d\n", r.cfg.MemSizeMB)
|
||||
fmt.Fprintf(&sb, "export AUTOCHECK_TEMP_INTERVAL=%d\n", int(r.cfg.TempLogInt.Seconds()))
|
||||
sb.WriteString("export AUTOCHECK_SAMPLE_INTERVAL=2\n")
|
||||
if r.cfg.DiskDir != "" {
|
||||
sb.WriteString(fmt.Sprintf("export AUTOCHECK_DISK_DIR=%s\n", r.cfg.DiskDir))
|
||||
fmt.Fprintf(&sb, "export AUTOCHECK_DISK_DIR=%s\n", r.cfg.DiskDir)
|
||||
}
|
||||
sb.WriteString("\n")
|
||||
|
||||
@@ -327,17 +327,17 @@ func (r *Runner) assembleScript() string {
|
||||
}
|
||||
if !m.Enabled {
|
||||
// 缺少依赖时仍输出一个 skip 结果,让报告完整展示原因
|
||||
sb.WriteString(fmt.Sprintf("echo '===TEST:%s==='\n", m.Name))
|
||||
fmt.Fprintf(&sb, "echo '===TEST:%s==='\n", m.Name)
|
||||
sb.WriteString("echo 'status:skip'\n")
|
||||
sb.WriteString(fmt.Sprintf("echo 'output:%s'\n", m.DisableReason))
|
||||
fmt.Fprintf(&sb, "echo 'output:%s'\n", m.DisableReason)
|
||||
sb.WriteString("echo ''\n")
|
||||
continue
|
||||
}
|
||||
data := r.readScript(m.Name)
|
||||
if data == nil {
|
||||
sb.WriteString(fmt.Sprintf("echo '===TEST:%s==='\n", m.Name))
|
||||
fmt.Fprintf(&sb, "echo '===TEST:%s==='\n", m.Name)
|
||||
sb.WriteString("echo 'status:skip'\n")
|
||||
sb.WriteString(fmt.Sprintf("echo 'output:脚本文件 scripts/%s.sh 不存在'\n", m.Name))
|
||||
fmt.Fprintf(&sb, "echo 'output:脚本文件 scripts/%s.sh 不存在'\n", m.Name)
|
||||
sb.WriteString("echo ''\n")
|
||||
continue
|
||||
}
|
||||
@@ -406,9 +406,6 @@ func TestDevice(ip string, cfg config.Config) *Report {
|
||||
// "Could not chdir to home directory" 横幅污染命令输出,先建好 HOME
|
||||
sshclient.EnsureHome(conn)
|
||||
|
||||
// 根据配置决定是否在线安装时使用国内镜像源(默认 false,先试系统自带源)
|
||||
SetMirror(cfg.Stress.UseMirror)
|
||||
|
||||
// sudo 密码:优先用专属 sudo_password;为空时退回 SSH 登录密码(飞牛 admin 同密码)
|
||||
sudoPwd := cfg.SSH.SudoPwd
|
||||
if sudoPwd == "" {
|
||||
@@ -424,13 +421,17 @@ func TestDevice(ip string, cfg config.Config) *Report {
|
||||
fmt.Printf(" [MAC] %s -> %s\n", ip, mac)
|
||||
}
|
||||
|
||||
stressCfg := Config{
|
||||
Duration: cfg.Stress.Duration,
|
||||
Threads: cfg.Stress.Threads,
|
||||
DiskSizeMB: 1024,
|
||||
TempLogInt: 10 * time.Second,
|
||||
TempLimit: cfg.Stress.TempLimit,
|
||||
}
|
||||
// 由默认配置 + yaml 映射构造(避免硬编码,便于后续扩展字段)
|
||||
stressCfg := DefaultConfig()
|
||||
stressCfg.Duration = cfg.Stress.Duration
|
||||
stressCfg.Threads = cfg.Stress.Threads
|
||||
stressCfg.MemSizeMB = cfg.Stress.MemSizeMB
|
||||
stressCfg.DiskSizeMB = cfg.Stress.DiskSizeMB
|
||||
stressCfg.DiskDir = cfg.Stress.DiskDir
|
||||
stressCfg.TempLogInt = cfg.Stress.TempInterval
|
||||
stressCfg.TempLimit = cfg.Stress.TempLimit
|
||||
stressCfg.UseMirror = cfg.Stress.UseMirror
|
||||
|
||||
return NewRunner(stressCfg, ParseTypes(cfg.Stress.Types), conn, cfg.Stress.AutoInstall, sudoPwd).Run(ip)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user