mirror of
https://github.com/bcicen/ctop.git
synced 2025-12-06 15:16:41 +08:00
93 lines
1.8 KiB
Go
93 lines
1.8 KiB
Go
// +build !release
|
|
|
|
package collector
|
|
|
|
import (
|
|
"math/rand"
|
|
"time"
|
|
|
|
"github.com/bcicen/ctop/models"
|
|
)
|
|
|
|
const mockLog = "Cura ob pro qui tibi inveni dum qua fit donec amare illic mea, regem falli contexo pro peregrinorum heremo absconditi araneae meminerim deliciosas actionibus facere modico dura sonuerunt psalmi contra rerum, tempus mala anima volebant dura quae o modis."
|
|
|
|
// Mock collector
|
|
type Mock struct {
|
|
models.Metrics
|
|
stream chan models.Metrics
|
|
done bool
|
|
running bool
|
|
aggression int64
|
|
}
|
|
|
|
func NewMock(a int64) *Mock {
|
|
c := &Mock{
|
|
Metrics: models.Metrics{},
|
|
aggression: a,
|
|
}
|
|
c.MemLimit = 2147483648
|
|
return c
|
|
}
|
|
|
|
func (c *Mock) Running() bool {
|
|
return c.running
|
|
}
|
|
|
|
func (c *Mock) Start() {
|
|
c.done = false
|
|
c.stream = make(chan models.Metrics)
|
|
go c.run()
|
|
}
|
|
|
|
func (c *Mock) Stop() {
|
|
c.done = true
|
|
}
|
|
|
|
func (c *Mock) Stream() chan models.Metrics {
|
|
return c.stream
|
|
}
|
|
|
|
func (c *Mock) StreamLogs() (chan string, error) {
|
|
logCh := make(chan string)
|
|
go func() {
|
|
for {
|
|
logCh <- mockLog
|
|
time.Sleep(250 * time.Millisecond)
|
|
}
|
|
}()
|
|
return logCh, nil
|
|
}
|
|
|
|
func (c *Mock) run() {
|
|
c.running = true
|
|
rand.Seed(int64(time.Now().Nanosecond()))
|
|
defer close(c.stream)
|
|
|
|
// set to random static value, once
|
|
c.Pids = rand.Intn(12)
|
|
c.IOBytesRead = rand.Int63n(8098) * c.aggression
|
|
c.IOBytesWrite = rand.Int63n(8098) * c.aggression
|
|
|
|
for {
|
|
c.CPUUtil += rand.Intn(2) * int(c.aggression)
|
|
if c.CPUUtil >= 100 {
|
|
c.CPUUtil = 0
|
|
}
|
|
|
|
c.NetTx += rand.Int63n(60) * c.aggression
|
|
c.NetRx += rand.Int63n(60) * c.aggression
|
|
c.MemUsage += rand.Int63n(c.MemLimit/512) * c.aggression
|
|
if c.MemUsage > c.MemLimit {
|
|
c.MemUsage = 0
|
|
}
|
|
c.MemPercent = percent(float64(c.MemUsage), float64(c.MemLimit))
|
|
c.stream <- c.Metrics
|
|
if c.done {
|
|
break
|
|
}
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
|
|
c.running = false
|
|
}
|