Render output as colored tables with pass/fail verdict

This commit is contained in:
flamingcow
2026-07-25 18:13:58 -07:00
parent 7f671a262e
commit 27f89d9916
3 changed files with 437 additions and 71 deletions
+22 -11
View File
@@ -80,17 +80,27 @@ type tuneResult struct {
err error
}
func (r tuneResult) String() string {
func (r tuneResult) status() string {
switch {
case r.err != nil:
return fmt.Sprintf(" %-34s FAIL %s (%v)", r.item, r.state, r.err)
return paint("FAIL", cRed)
case r.fixed:
return fmt.Sprintf(" %-34s FIXED %s", r.item, r.state)
return paint("FIXED", cYellow)
default:
return fmt.Sprintf(" %-34s ok %s", r.item, r.state)
return paint("ok", cGreen)
}
}
func (r tuneResult) detail() string {
if r.err != nil {
if r.state == "" {
return r.err.Error()
}
return fmt.Sprintf("%s: %v", r.state, r.err)
}
return r.state
}
func ethtoolCall(fd int, ifname string, data unsafe.Pointer) error {
var ifr ethtoolIfreq
if len(ifname) >= unix.IFNAMSIZ {
@@ -346,24 +356,25 @@ func applyTuning(cfg tuneConfig, ifnames []string) []tuneResult {
return out
}
func verifyTuning(cfg tuneConfig, ifnames []string) []string {
func verifyTuning(cfg tuneConfig, ifnames []string) []tuneResult {
fd, err := unix.Socket(unix.AF_INET, unix.SOCK_DGRAM, 0)
if err != nil {
return []string{fmt.Sprintf("drift check failed: %v", err)}
return []tuneResult{{item: "drift check", err: err}}
}
defer unix.Close(fd)
var warnings []string
var drifted []tuneResult
if r := checkGovernor(cfg.governor, cfg.enabled); r.fixed || r.err != nil {
warnings = append(warnings, "host config drifted:"+r.String())
drifted = append(drifted, r)
}
for _, ifname := range ifnames {
if r := checkCoalesce(fd, ifname, cfg.rxUsecs, cfg.txUsecs, cfg.enabled); r.fixed || r.err != nil {
warnings = append(warnings, "host config drifted:"+r.String())
drifted = append(drifted, r)
}
if r, _ := checkRings(fd, ifname, cfg.rxRing, cfg.txRing, false); r.err != nil {
warnings = append(warnings, "host config drifted (not corrected, would reset link):"+r.String())
r.state = "left alone, resizing would reset the link"
drifted = append(drifted, r)
}
}
return warnings
return drifted
}