diff options
author | matthieu <matthieu.cneude@gmail.com> | 2020-06-04 17:29:27 +0200 |
---|---|---|
committer | matthieu <matthieu.cneude@gmail.com> | 2020-06-04 17:29:27 +0200 |
commit | 9af5a308f56b512d6362d7b7d8e47aba28a0d010 (patch) | |
tree | 0cc53e5d8db77dc8230d47e9104e81a95d3443b1 | |
parent | 533014054ecdc560f8a5a53044bfe9bd09891342 (diff) |
No need of method for an object with two fields - functional approach
(easier for testing / more flexible)
-rw-r--r-- | internal/host_widget.go | 26 | ||||
-rw-r--r-- | internal/platform/host.go | 45 |
2 files changed, 37 insertions, 34 deletions
diff --git a/internal/host_widget.go b/internal/host_widget.go index cea0c3c..5063fa1 100644 --- a/internal/host_widget.go +++ b/internal/host_widget.go @@ -83,7 +83,7 @@ func (ms *HostWidget) boxLoad(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - load, err := ms.service.Load() + load, err := platform.HostLoad(ms.service.Runner) if err != nil { return nil, err } @@ -101,7 +101,7 @@ func (ms *HostWidget) boxProcesses(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - procs, err := ms.service.Processes() + procs, err := platform.HostProcesses(ms.service.Runner) if err != nil { return nil, err } @@ -137,7 +137,7 @@ func (ms *HostWidget) boxCPURate(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - CPURate, err := ms.service.CPURate() + CPURate, err := platform.HostCPURate(ms.service.Runner) if err != nil { return nil, err } @@ -155,7 +155,7 @@ func (ms *HostWidget) boxMemRate(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - memRate, err := ms.service.MemoryRate() + memRate, err := platform.HostMemoryRate(ms.service.Runner) if err != nil { return nil, err } @@ -173,7 +173,7 @@ func (ms *HostWidget) boxSwapRate(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - swapRate, err := ms.service.SwapRate() + swapRate, err := platform.HostSwapRate(ms.service.Runner) if err != nil { return nil, err } @@ -191,17 +191,17 @@ func (ms *HostWidget) barRates(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - swapRate, err := ms.service.SwapRate() + swapRate, err := platform.HostSwapRate(ms.service.Runner) if err != nil { return nil, err } - cpuRate, err := ms.service.CPURate() + cpuRate, err := platform.HostCPURate(ms.service.Runner) if err != nil { return nil, err } - memoryRate, err := ms.service.MemoryRate() + memoryRate, err := platform.HostMemoryRate(ms.service.Runner) if err != nil { return nil, err } @@ -229,7 +229,7 @@ func (ms *HostWidget) boxNetIO(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - netIO, err := ms.service.NetIO(unit) + netIO, err := platform.HostNetIO(ms.service.Runner, unit) if err != nil { return nil, err } @@ -252,7 +252,7 @@ func (ms *HostWidget) boxDiskIO(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - diskIO, err := ms.service.DiskIO(unit) + diskIO, err := platform.HostDiskIO(ms.service.Runner, unit) if err != nil { return nil, err } @@ -289,7 +289,7 @@ func (ms *HostWidget) barMemory(widget Widget) (f func() error, err error) { title = widget.Options[optionTitle] } - mem, err := ms.service.Memory(metrics, unit) + mem, err := platform.HostMemory(ms.service.Runner, metrics, unit) if err != nil { return nil, err } @@ -313,7 +313,7 @@ func (ms *HostWidget) tableDisk(widget Widget) (f func() error, err error) { } headers := []string{"Filesystem", "Size", "Used", "Available", "Use%", "Mount"} - data, err := ms.service.Disk(headers, unit) + data, err := platform.HostDisk(ms.service.Runner, headers, unit) if err != nil { return nil, err } @@ -346,7 +346,7 @@ func (ms *HostWidget) table(widget Widget) (f func() error, err error) { } } - data, err := ms.service.Table(cmd, headers) + data, err := platform.HostTable(ms.service.Runner, cmd, headers) if err != nil { return nil, err } diff --git a/internal/platform/host.go b/internal/platform/host.go index 61ae195..81e9b58 100644 --- a/internal/platform/host.go +++ b/internal/platform/host.go @@ -27,6 +27,9 @@ type Host struct { localhost bool } +// syntactic sugar +type runnerFunc func(cmd string) (string, error) + func NewHost(username, addr string) (*Host, error) { if username == "localhost" && addr == "localhost" { return &Host{ @@ -80,7 +83,7 @@ func runLocalhost(command string) (string, error) { return string(out), nil } -func HostUptime(runner func(cmd string) (string, error)) (int64, error) { +func HostUptime(runner runnerFunc) (int64, error) { command := "/bin/cat /proc/uptime" uptime, err := runner(command) if err != nil { @@ -101,9 +104,9 @@ func HostUptime(runner func(cmd string) (string, error)) (int64, error) { return int64(time.Duration(secs * 1e9)), nil } -func (s *Host) Load() (string, error) { +func HostLoad(runner runnerFunc) (string, error) { command := "/bin/cat /proc/loadavg" - lines, err := s.Runner(command) + lines, err := runner(command) if err != nil { return "", err } @@ -119,9 +122,9 @@ func (s *Host) Load() (string, error) { return fmt.Sprintf("%s %s %s", res[0], res[1], res[2]), nil } -func (s *Host) Processes() (string, error) { +func HostProcesses(runner runnerFunc) (string, error) { command := "/bin/cat /proc/loadavg" - lines, err := s.Runner(command) + lines, err := runner(command) if err != nil { return "", err } @@ -143,8 +146,8 @@ func (s *Host) Processes() (string, error) { return fmt.Sprintf("%s/%s", runProc, totalProc), nil } -func (s *Host) Memory(metrics []string, unit string) (val []int, err error) { - lines, err := s.Runner("/bin/cat /proc/meminfo") +func HostMemory(runner runnerFunc, metrics []string, unit string) (val []int, err error) { + lines, err := runner("/bin/cat /proc/meminfo") if err != nil { return nil, err } @@ -180,8 +183,8 @@ func (s *Host) Memory(metrics []string, unit string) (val []int, err error) { return result, nil } -func (s *Host) MemoryRate() (float64, error) { - lines, err := s.Runner("/bin/cat /proc/meminfo") +func HostMemoryRate(runner runnerFunc) (float64, error) { + lines, err := runner("/bin/cat /proc/meminfo") if err != nil { return 0, err } @@ -217,8 +220,8 @@ func (s *Host) MemoryRate() (float64, error) { } // TODO to refactor - DRY -func (s *Host) SwapRate() (float64, error) { - lines, err := s.Runner("/bin/cat /proc/meminfo") +func HostSwapRate(runner runnerFunc) (float64, error) { + lines, err := runner("/bin/cat /proc/meminfo") if err != nil { return 0, err } @@ -254,8 +257,8 @@ func (s *Host) SwapRate() (float64, error) { } // See https://www.idnt.net/en-US/kb/941772 -func (s *Host) CPURate() (float64, error) { - raw, err := s.Runner("/bin/cat /proc/stat") +func HostCPURate(runner runnerFunc) (float64, error) { + raw, err := runner("/bin/cat /proc/stat") if err != nil { return 0, err } @@ -306,8 +309,8 @@ func (s *Host) CPURate() (float64, error) { } // GetNetStat returns net stat -func (s *Host) NetIO(unit string) (string, error) { - lines, err := s.Runner("/bin/cat /proc/net/dev") +func HostNetIO(runner runnerFunc, unit string) (string, error) { + lines, err := runner("/bin/cat /proc/net/dev") if err != nil { return "", err } @@ -340,8 +343,8 @@ func (s *Host) NetIO(unit string) (string, error) { return rx + " / " + tx, nil } -func (s *Host) Table(command string, headers []string) (cells [][]string, err error) { - lines, err := s.Runner(command) +func HostTable(runner runnerFunc, command string, headers []string) (cells [][]string, err error) { + lines, err := runner(command) if err != nil { return nil, err } @@ -371,9 +374,9 @@ func (s *Host) Table(command string, headers []string) (cells [][]string, err er return } -func (s *Host) Disk(headers []string, unit string) ([][]string, error) { +func HostDisk(runner runnerFunc, headers []string, unit string) ([][]string, error) { // GetIOStat returns io stat - lines, err := s.Runner("/bin/df -x devtmpfs -x tmpfs -x debugfs") + lines, err := runner("/bin/df -x devtmpfs -x tmpfs -x debugfs") if err != nil { return nil, nil } @@ -425,9 +428,9 @@ func (s *Host) Disk(headers []string, unit string) ([][]string, error) { return c, nil } -func (s *Host) DiskIO(unit string) (string, error) { +func HostDiskIO(runner runnerFunc, unit string) (string, error) { // GetIOStat returns io stat - lines, err := s.Runner("/bin/cat /proc/diskstats") + lines, err := runner("/bin/cat /proc/diskstats") if err != nil { return "", nil } |