sparkline values cleanup enhancements and test
This commit is contained in:
parent
09c16065f5
commit
8f2cf3ce5a
|
@ -77,9 +77,14 @@ func (s *SparkLine) consumeSample(sample *data.Sample) {
|
|||
s.maxValue = max
|
||||
s.minValue = min
|
||||
|
||||
// perform cleanup once in a while
|
||||
if len(s.values)%100 == 0 {
|
||||
s.values = append(s.values[:0], s.values[len(s.values)-s.Dx()+1:]...)
|
||||
s.cleanup(s.Dx())
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SparkLine) cleanup(maxSize int) {
|
||||
if maxSize < len(s.values) {
|
||||
s.values = append(s.values[:0], s.values[len(s.values)-maxSize:]...)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package sparkline
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSparkLine_cleanup(t *testing.T) {
|
||||
type Sparkline struct {
|
||||
maxSize int
|
||||
expectedSize int
|
||||
values []float64
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
sparkline Sparkline
|
||||
}{
|
||||
{"should cleanup values to the max size", Sparkline{maxSize: 5, expectedSize: 5, values: []float64{1, 2, 3, 4, 5, 6, 7, 8}}},
|
||||
{"should not cleanup values if max size is bigger than values len", Sparkline{maxSize: 5, expectedSize: 3, values: []float64{1, 2, 3}}},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
s := &SparkLine{
|
||||
values: tt.sparkline.values,
|
||||
}
|
||||
s.cleanup(tt.sparkline.maxSize)
|
||||
if len(s.values) != tt.sparkline.expectedSize {
|
||||
t.Errorf("Values size after cleanup is %v, but needed to be %v", len(s.values), tt.sparkline.expectedSize)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue