diff --git a/collector/mock.go b/collector/mock.go new file mode 100644 index 0000000..817cce6 --- /dev/null +++ b/collector/mock.go @@ -0,0 +1,52 @@ +package collector + +import ( + "math/rand" + "time" +) + +// Mock collector +type Mock struct { + Metrics + stream chan Metrics + done chan bool +} + +func NewMock() *Mock { + c := &Mock{ + Metrics: Metrics{}, + stream: make(chan Metrics), + done: make(chan bool), + } + c.MemLimit = 2147483648 + go c.run() + return c +} + +func (c *Mock) run() { + rand.Seed(int64(time.Now().Nanosecond())) + for { + c.CPUUtil += rand.Intn(10) + if c.CPUUtil > 100 { + c.CPUUtil = 0 + } + c.CPUUtil += rand.Intn(2) + c.NetTx += rand.Int63n(30) + c.NetRx += rand.Int63n(30) + c.MemUsage += rand.Int63n(c.MemLimit / 16) + if c.MemUsage > c.MemLimit { + c.MemUsage = 0 + } + c.MemPercent = round((float64(c.MemUsage) / float64(c.MemLimit)) * 100) + c.stream <- c.Metrics + time.Sleep(1 * time.Second) + } +} + +func (c *Mock) Stream() chan Metrics { + return c.stream +} + +func (c *Mock) Stop() { + c.done <- true +}