diff --git a/pkg/kubelet/stats/cadvisor_stats_provider_test.go b/pkg/kubelet/stats/cadvisor_stats_provider_test.go index 303d62526ba..96a3f81abfc 100644 --- a/pkg/kubelet/stats/cadvisor_stats_provider_test.go +++ b/pkg/kubelet/stats/cadvisor_stats_provider_test.go @@ -270,7 +270,7 @@ func TestCadvisorListPodStats(t *testing.T) { assert.EqualValues(t, p0Time.Unix(), ps.StartTime.Time.Unix()) checkNetworkStats(t, "Pod0", seedPod0Infra, ps.Network) - checkEphemeralStats(t, "Pod0", []int{seedPod0Container0, seedPod0Container1}, []int{seedEphemeralVolume1, seedEphemeralVolume2}, ps.EphemeralStorage) + checkEphemeralStats(t, "Pod0", []int{seedPod0Container0, seedPod0Container1}, []int{seedEphemeralVolume1, seedEphemeralVolume2}, nil, ps.EphemeralStorage) if ps.CPU != nil { checkCPUStats(t, "Pod0", seedPod0Infra, ps.CPU) } diff --git a/pkg/kubelet/stats/provider_test.go b/pkg/kubelet/stats/provider_test.go index 3bbc8334ba0..220d000e937 100644 --- a/pkg/kubelet/stats/provider_test.go +++ b/pkg/kubelet/stats/provider_test.go @@ -37,6 +37,7 @@ import ( kubepodtest "k8s.io/kubernetes/pkg/kubelet/pod/testing" serverstats "k8s.io/kubernetes/pkg/kubelet/server/stats" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" + "k8s.io/kubernetes/pkg/volume" ) const ( @@ -699,16 +700,27 @@ func checkFsStats(t *testing.T, label string, seed int, stats *statsapi.FsStats) assert.EqualValues(t, seed+offsetFsInodesFree, *stats.InodesFree, label+".InodesFree") } -func checkEphemeralStats(t *testing.T, label string, containerSeeds []int, volumeSeeds []int, stats *statsapi.FsStats) { +func checkEphemeralStats(t *testing.T, label string, containerSeeds []int, volumeSeeds []int, containerLogStats []*volume.Metrics, stats *statsapi.FsStats) { var usedBytes, inodeUsage int for _, cseed := range containerSeeds { - usedBytes = usedBytes + cseed + offsetFsTotalUsageBytes + usedBytes += cseed + offsetFsBaseUsageBytes inodeUsage += cseed + offsetFsInodeUsage + // If containerLogStats is nil, then the log stats calculated from cAdvisor + // information is used. Since it's Total - Base, and these values are + // set to the offset, we can use the calculated difference in the offset + // to account for this. + if containerLogStats == nil { + usedBytes += offsetFsTotalUsageBytes - offsetFsBaseUsageBytes + } } for _, vseed := range volumeSeeds { - usedBytes = usedBytes + vseed + offsetFsUsage + usedBytes += vseed + offsetFsUsage inodeUsage += vseed + offsetFsInodeUsage } + for _, logStats := range containerLogStats { + usedBytes += int(logStats.Used.Value()) + inodeUsage += int(logStats.InodesUsed.Value()) + } assert.EqualValues(t, usedBytes, int(*stats.UsedBytes), label+".UsedBytes") assert.EqualValues(t, inodeUsage, int(*stats.InodesUsed), label+".InodesUsed") }