github.com/elastic/gosigar@v0.14.3/fakes/fake_sigar.go (about) 1 package fakes 2 3 import ( 4 "time" 5 6 sigar "github.com/elastic/gosigar" 7 ) 8 9 type FakeSigar struct { 10 LoadAverage sigar.LoadAverage 11 LoadAverageErr error 12 13 Mem sigar.Mem 14 MemErr error 15 16 Swap sigar.Swap 17 SwapErr error 18 19 FileSystemUsage sigar.FileSystemUsage 20 FileSystemUsageErr error 21 FileSystemUsagePath string 22 23 CollectCpuStatsCpuCh chan sigar.Cpu 24 CollectCpuStatsStopCh chan struct{} 25 } 26 27 func NewFakeSigar() *FakeSigar { 28 return &FakeSigar{ 29 CollectCpuStatsCpuCh: make(chan sigar.Cpu, 1), 30 CollectCpuStatsStopCh: make(chan struct{}), 31 } 32 } 33 34 func (f *FakeSigar) CollectCpuStats(collectionInterval time.Duration) (<-chan sigar.Cpu, chan<- struct{}) { 35 samplesCh := make(chan sigar.Cpu, 1) 36 stopCh := make(chan struct{}) 37 38 go func() { 39 for { 40 select { 41 case cpuStat := <-f.CollectCpuStatsCpuCh: 42 select { 43 case samplesCh <- cpuStat: 44 default: 45 // Include default to avoid channel blocking 46 } 47 48 case <-f.CollectCpuStatsStopCh: 49 return 50 } 51 } 52 }() 53 54 return samplesCh, stopCh 55 } 56 57 func (f *FakeSigar) GetLoadAverage() (sigar.LoadAverage, error) { 58 return f.LoadAverage, f.LoadAverageErr 59 } 60 61 func (f *FakeSigar) GetMem() (sigar.Mem, error) { 62 return f.Mem, f.MemErr 63 } 64 65 func (f *FakeSigar) GetSwap() (sigar.Swap, error) { 66 return f.Swap, f.SwapErr 67 } 68 69 func (f *FakeSigar) GetFileSystemUsage(path string) (sigar.FileSystemUsage, error) { 70 f.FileSystemUsagePath = path 71 return f.FileSystemUsage, f.FileSystemUsageErr 72 }