From 271a059d3a8b1e8f5c55169b06e1f3e7db2f24dd Mon Sep 17 00:00:00 2001 From: Bradley Cicenas Date: Mon, 30 Jan 2017 16:25:56 +1100 Subject: [PATCH] add mock collector --- collector/mock.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 collector/mock.go 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 +}