use in memory storage to do stats
This commit is contained in:
parent
3718b139b3
commit
e1dcc93231
@ -126,6 +126,7 @@ func (m *manager) GetContainerInfo(containerName string) (*info.ContainerInfo, e
|
||||
|
||||
var percentiles *info.ContainerStatsPercentiles
|
||||
var samples []*info.ContainerStatsSample
|
||||
var stats []*info.ContainerStats
|
||||
if m.storageDriver != nil {
|
||||
// XXX(monnand): These numbers should not be hard coded
|
||||
percentiles, err = m.storageDriver.Percentiles(
|
||||
@ -140,6 +141,11 @@ func (m *manager) GetContainerInfo(containerName string) (*info.ContainerInfo, e
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
stats, err = m.storageDriver.RecentStats(cinfo.Name, 1024)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// Make a copy of the info for the user.
|
||||
@ -152,6 +158,7 @@ func (m *manager) GetContainerInfo(containerName string) (*info.ContainerInfo, e
|
||||
Spec: cinfo.Spec,
|
||||
StatsPercentiles: percentiles,
|
||||
Samples: samples,
|
||||
Stats: stats,
|
||||
}
|
||||
|
||||
// Set default value to an actual value
|
||||
|
@ -134,6 +134,9 @@ func (self *containerStorage) Percentiles(cpuPercentiles, memPercentiles []int)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(samples) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
ret := info.NewPercentiles(samples, cpuPercentiles, memPercentiles)
|
||||
ret.MaxMemoryUsage = self.maxMemUsage
|
||||
return ret, nil
|
||||
|
@ -129,3 +129,45 @@ func TestMaxMemoryUsage(t *testing.T) {
|
||||
t.Fatalf("Max memory usage should be %v; received %v", maxUsage, percentiles.MaxMemoryUsage)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSamplesWithoutSample(t *testing.T) {
|
||||
storage := New(10, 10)
|
||||
trace := buildTrace(
|
||||
[]uint64{10},
|
||||
[]uint64{10},
|
||||
1*time.Second)
|
||||
ref := info.ContainerReference{
|
||||
Name: "container",
|
||||
}
|
||||
storage.AddStats(ref, trace[0])
|
||||
samples, err := storage.Samples(ref.Name, -1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(samples) != 0 {
|
||||
t.Errorf("There should be no sample")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPercentilesWithoutSample(t *testing.T) {
|
||||
storage := New(10, 10)
|
||||
trace := buildTrace(
|
||||
[]uint64{10},
|
||||
[]uint64{10},
|
||||
1*time.Second)
|
||||
ref := info.ContainerReference{
|
||||
Name: "container",
|
||||
}
|
||||
storage.AddStats(ref, trace[0])
|
||||
percentiles, err := storage.Percentiles(
|
||||
ref.Name,
|
||||
[]int{50},
|
||||
[]int{50},
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if percentiles != nil {
|
||||
t.Errorf("There should be no percentiles")
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user