func StorageDriverTestRetrieveZeroRecentStats(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, 0) if err != nil { t.Fatal(err) } if len(recentStats) > 0 { t.Errorf("RecentStats() returns %v stats when requests for 0 stats", len(recentStats)) } }
func StorageDriverTestNoRecentStats(driver storage.StorageDriver, t *testing.T) { defer driver.Close() nonExistContainer := "somerandomecontainer" stats, _ := driver.RecentStats(nonExistContainer, -1) if len(stats) > 0 { t.Errorf("RecentStats() returns %v stats on non exist container", len(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)) } actualRecentStats := trace[len(trace)-len(recentStats):] for _, r := range recentStats { found := false for _, s := range actualRecentStats { if reflect.DeepEqual(s, r) { found = true } } if !found { t.Errorf("unexpected stats %+v with memory usage %v", r, r.Memory.Usage) } } }
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) == 0 { t.Fatal("should at least store one stats") } if len(recentStats) > 10 { t.Fatalf("returned %v stats, not 10.", len(recentStats)) } actualRecentStats := trace[len(trace)-len(recentStats):] // The returned stats should be sorted in time increasing order for i, s := range actualRecentStats { r := recentStats[i] if !statsEq(s, r) { t.Errorf("unexpected stats %+v with memory usage %v; should be %+v", r, r.Memory.Usage, s) } } }