update mock collector to match interface

This commit is contained in:
Bradley Cicenas 2017-02-28 09:28:52 +11:00
parent 6cc357bb97
commit bb682677f5

View File

@ -8,45 +8,61 @@ import (
// Mock collector // Mock collector
type Mock struct { type Mock struct {
Metrics Metrics
stream chan Metrics stream chan Metrics
done chan bool done bool
running bool
} }
func NewMock() *Mock { func NewMock() *Mock {
c := &Mock{ c := &Mock{
Metrics: Metrics{}, Metrics: Metrics{},
stream: make(chan Metrics),
done: make(chan bool),
} }
c.MemLimit = 2147483648 c.MemLimit = 2147483648
go c.run()
return c return c
} }
func (c *Mock) run() { func (c *Mock) Running() bool {
rand.Seed(int64(time.Now().Nanosecond())) return c.running
for { }
c.CPUUtil += rand.Intn(10)
if c.CPUUtil > 100 { func (c *Mock) Start() {
c.CPUUtil = 0 c.done = false
} c.stream = make(chan Metrics)
c.CPUUtil += rand.Intn(2) go c.run()
c.NetTx += rand.Int63n(30) }
c.NetRx += rand.Int63n(30)
c.MemUsage += rand.Int63n(c.MemLimit / 16) func (c *Mock) Stop() {
if c.MemUsage > c.MemLimit { c.done = true
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 { func (c *Mock) Stream() chan Metrics {
return c.stream return c.stream
} }
func (c *Mock) Stop() { func (c *Mock) run() {
c.done <- true c.running = true
rand.Seed(int64(time.Now().Nanosecond()))
defer close(c.stream)
for {
c.CPUUtil += rand.Intn(10)
if c.CPUUtil > 100 {
c.CPUUtil = 0
}
c.CPUUtil += rand.Intn(2)
c.NetTx += rand.Int63n(600)
c.NetRx += rand.Int63n(600)
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
if c.done {
break
}
time.Sleep(1 * time.Second)
}
c.running = false
} }