summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatthieu <matthieu.cneude@gmail.com>2020-06-04 17:29:27 +0200
committermatthieu <matthieu.cneude@gmail.com>2020-06-04 17:29:27 +0200
commit9af5a308f56b512d6362d7b7d8e47aba28a0d010 (patch)
tree0cc53e5d8db77dc8230d47e9104e81a95d3443b1
parent533014054ecdc560f8a5a53044bfe9bd09891342 (diff)
No need of method for an object with two fields - functional approach
(easier for testing / more flexible)
-rw-r--r--internal/host_widget.go26
-rw-r--r--internal/platform/host.go45
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
}