add aggression multiplier to mock collector

This commit is contained in:
Bradley Cicenas 2017-03-09 09:33:44 +11:00
parent 70790e88ae
commit 92cc7bc849
2 changed files with 29 additions and 18 deletions

View File

@ -10,14 +10,16 @@ import (
// Mock collector
type Mock struct {
Metrics
stream chan Metrics
done bool
running bool
stream chan Metrics
done bool
running bool
aggression int64
}
func NewMock() *Mock {
func NewMock(a int64) *Mock {
c := &Mock{
Metrics: Metrics{},
Metrics: Metrics{},
aggression: a,
}
c.MemLimit = 2147483648
return c
@ -47,13 +49,14 @@ func (c *Mock) run() {
defer close(c.stream)
for {
c.CPUUtil += rand.Intn(2)
if c.CPUUtil > 100 {
c.CPUUtil += rand.Intn(2) * int(c.aggression)
if c.CPUUtil >= 100 {
c.CPUUtil = 0
}
c.NetTx += rand.Int63n(600)
c.NetRx += rand.Int63n(600)
c.MemUsage += rand.Int63n(c.MemLimit / 32)
c.NetTx += rand.Int63n(60) * c.aggression
c.NetRx += rand.Int63n(60) * c.aggression
c.MemUsage += rand.Int63n(c.MemLimit/16) * c.aggression
if c.MemUsage > c.MemLimit {
c.MemUsage = 0
}

View File

@ -26,18 +26,26 @@ func NewMockContainerSource() *MockContainerSource {
// Create Mock containers
func (cs *MockContainerSource) Init() {
total := 20
rand.Seed(int64(time.Now().Nanosecond()))
for i := 0; i < total; i++ {
//time.Sleep(1 * time.Second)
collector := metrics.NewMock()
c := NewContainer(makeID(), collector)
c.SetMeta("name", makeName())
c.SetState(makeState())
cs.containers = append(cs.containers, c)
for i := 0; i < 4; i++ {
time.Sleep(500 * time.Millisecond)
cs.makeContainer(3)
}
for i := 0; i < 16; i++ {
time.Sleep(500 * time.Millisecond)
cs.makeContainer(1)
}
}
func (cs *MockContainerSource) makeContainer(aggression int64) {
collector := metrics.NewMock(aggression)
c := NewContainer(makeID(), collector)
c.SetMeta("name", makeName())
c.SetState(makeState())
cs.containers = append(cs.containers, c)
}
func (cs *MockContainerSource) Loop() {