73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package fakes
|
|
|
|
import (
|
|
"time"
|
|
|
|
sigar "github.com/cloudfoundry/gosigar"
|
|
)
|
|
|
|
type FakeSigar struct {
|
|
LoadAverage sigar.LoadAverage
|
|
LoadAverageErr error
|
|
|
|
Mem sigar.Mem
|
|
MemErr error
|
|
|
|
Swap sigar.Swap
|
|
SwapErr error
|
|
|
|
FileSystemUsage sigar.FileSystemUsage
|
|
FileSystemUsageErr error
|
|
FileSystemUsagePath string
|
|
|
|
CollectCpuStatsCpuCh chan sigar.Cpu
|
|
CollectCpuStatsStopCh chan struct{}
|
|
}
|
|
|
|
func NewFakeSigar() *FakeSigar {
|
|
return &FakeSigar{
|
|
CollectCpuStatsCpuCh: make(chan sigar.Cpu, 1),
|
|
CollectCpuStatsStopCh: make(chan struct{}),
|
|
}
|
|
}
|
|
|
|
func (f *FakeSigar) CollectCpuStats(collectionInterval time.Duration) (<-chan sigar.Cpu, chan<- struct{}) {
|
|
samplesCh := make(chan sigar.Cpu, 1)
|
|
stopCh := make(chan struct{})
|
|
|
|
go func() {
|
|
for {
|
|
select {
|
|
case cpuStat := <-f.CollectCpuStatsCpuCh:
|
|
select {
|
|
case samplesCh <- cpuStat:
|
|
default:
|
|
// Include default to avoid channel blocking
|
|
}
|
|
|
|
case <-f.CollectCpuStatsStopCh:
|
|
return
|
|
}
|
|
}
|
|
}()
|
|
|
|
return samplesCh, stopCh
|
|
}
|
|
|
|
func (f *FakeSigar) GetLoadAverage() (sigar.LoadAverage, error) {
|
|
return f.LoadAverage, f.LoadAverageErr
|
|
}
|
|
|
|
func (f *FakeSigar) GetMem() (sigar.Mem, error) {
|
|
return f.Mem, f.MemErr
|
|
}
|
|
|
|
func (f *FakeSigar) GetSwap() (sigar.Swap, error) {
|
|
return f.Swap, f.SwapErr
|
|
}
|
|
|
|
func (f *FakeSigar) GetFileSystemUsage(path string) (sigar.FileSystemUsage, error) {
|
|
f.FileSystemUsagePath = path
|
|
return f.FileSystemUsage, f.FileSystemUsageErr
|
|
}
|