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 percentiles *info.ContainerStatsPercentiles
|
||||||
var samples []*info.ContainerStatsSample
|
var samples []*info.ContainerStatsSample
|
||||||
|
var stats []*info.ContainerStats
|
||||||
if m.storageDriver != nil {
|
if m.storageDriver != nil {
|
||||||
// XXX(monnand): These numbers should not be hard coded
|
// XXX(monnand): These numbers should not be hard coded
|
||||||
percentiles, err = m.storageDriver.Percentiles(
|
percentiles, err = m.storageDriver.Percentiles(
|
||||||
@ -140,6 +141,11 @@ func (m *manager) GetContainerInfo(containerName string) (*info.ContainerInfo, e
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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.
|
// 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,
|
Spec: cinfo.Spec,
|
||||||
StatsPercentiles: percentiles,
|
StatsPercentiles: percentiles,
|
||||||
Samples: samples,
|
Samples: samples,
|
||||||
|
Stats: stats,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set default value to an actual value
|
// Set default value to an actual value
|
||||||
|
@ -134,6 +134,9 @@ func (self *containerStorage) Percentiles(cpuPercentiles, memPercentiles []int)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if len(samples) == 0 {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
ret := info.NewPercentiles(samples, cpuPercentiles, memPercentiles)
|
ret := info.NewPercentiles(samples, cpuPercentiles, memPercentiles)
|
||||||
ret.MaxMemoryUsage = self.maxMemUsage
|
ret.MaxMemoryUsage = self.maxMemUsage
|
||||||
return ret, nil
|
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)
|
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