fix a bug in memory storage and add a new unit test
This commit is contained in:
parent
e412c042d3
commit
cf8257cd70
@ -75,9 +75,9 @@ func (self *containerStorage) AddStats(stats *info.ContainerStats) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if self.recentStats.Len() >= self.maxNumStats {
|
if self.recentStats.Len() >= self.maxNumStats {
|
||||||
self.recentStats.Remove(self.recentStats.Front())
|
self.recentStats.Remove(self.recentStats.Back())
|
||||||
}
|
}
|
||||||
self.recentStats.PushBack(stats)
|
self.recentStats.PushFront(stats)
|
||||||
self.updatePrevStats(stats)
|
self.updatePrevStats(stats)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -53,3 +53,7 @@ func TestPercentiles(t *testing.T) {
|
|||||||
driver := New(N, N)
|
driver := New(N, N)
|
||||||
test.StorageDriverTestPercentiles(driver, t)
|
test.StorageDriverTestPercentiles(driver, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRetrievePartialRecentStats(t *testing.T) {
|
||||||
|
runStorageTest(test.StorageDriverTestRetrievePartialRecentStats, t)
|
||||||
|
}
|
||||||
|
@ -16,6 +16,7 @@ package test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -171,6 +172,7 @@ func StorageDriverTestPercentilesWithoutSample(driver storage.StorageDriver, t *
|
|||||||
|
|
||||||
// The driver must be able to hold more than 100 samples
|
// The driver must be able to hold more than 100 samples
|
||||||
func StorageDriverTestPercentiles(driver storage.StorageDriver, t *testing.T) {
|
func StorageDriverTestPercentiles(driver storage.StorageDriver, t *testing.T) {
|
||||||
|
defer driver.Close()
|
||||||
N := 100
|
N := 100
|
||||||
cpuTrace := make([]uint64, N)
|
cpuTrace := make([]uint64, N)
|
||||||
memTrace := make([]uint64, N)
|
memTrace := make([]uint64, N)
|
||||||
@ -209,3 +211,46 @@ func StorageDriverTestPercentiles(driver storage.StorageDriver, t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The driver must be albe to hold more than 10 stats
|
||||||
|
func StorageDriverTestRetrievePartialRecentStats(driver storage.StorageDriver, t *testing.T) {
|
||||||
|
defer driver.Close()
|
||||||
|
N := 100
|
||||||
|
memTrace := make([]uint64, N)
|
||||||
|
cpuTrace := make([]uint64, N)
|
||||||
|
for i := 0; i < N; i++ {
|
||||||
|
memTrace[i] = uint64(i + 1)
|
||||||
|
cpuTrace[i] = uint64(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
ref := info.ContainerReference{
|
||||||
|
Name: "container",
|
||||||
|
}
|
||||||
|
|
||||||
|
trace := buildTrace(cpuTrace, memTrace, 1*time.Second)
|
||||||
|
|
||||||
|
for _, stats := range trace {
|
||||||
|
driver.AddStats(ref, stats)
|
||||||
|
}
|
||||||
|
|
||||||
|
recentStats, err := driver.RecentStats(ref.Name, 10)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(recentStats) != 10 {
|
||||||
|
t.Fatalf("returned %v stats, not 10.", len(recentStats))
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, r := range recentStats {
|
||||||
|
found := false
|
||||||
|
for _, s := range trace[len(trace)-10:] {
|
||||||
|
if reflect.DeepEqual(s, r) {
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
t.Errorf("returned unexpected stats: %+v; %v", r, r.Memory.Usage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user