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  }