From 36d4c1cac2cdca9a36adfcd2b69ade6c2008179b Mon Sep 17 00:00:00 2001 From: bindata-mockuser Date: Wed, 24 Aug 2016 16:07:42 -0700 Subject: [PATCH] Avoid disk eviction node e2e test using up all the disk space --- test/e2e_node/disk_eviction_test.go | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/test/e2e_node/disk_eviction_test.go b/test/e2e_node/disk_eviction_test.go index 2415dd158e8..b8fc9ee9307 100644 --- a/test/e2e_node/disk_eviction_test.go +++ b/test/e2e_node/disk_eviction_test.go @@ -110,6 +110,12 @@ var _ = framework.KubeDescribe("Kubelet Eviction Manager [Serial] [Disruptive]", nodeDiskPressureCondition := false podRescheduleable := false Eventually(func() error { + // Avoid the test using up all the disk space + err := checkDiskUsage(0.05) + if err != nil { + return err + } + // The pod should be evicted. if !evictionOccurred { podData, err := podClient.Get(busyPodName) @@ -227,3 +233,29 @@ func isImageSupported() bool { // instead of skipping images the eviction thresholds should be adjusted based on the images. return strings.Contains(framework.TestContext.NodeName, "-gci-dev-") } + +// checkDiskUsage verifies that the available bytes on disk are above the limit. +func checkDiskUsage(limit float64) error { + summary, err := getNodeSummary() + if err != nil { + return err + } + + if nodeFs := summary.Node.Fs; nodeFs != nil { + if nodeFs.AvailableBytes != nil && nodeFs.CapacityBytes != nil { + if float64(*nodeFs.CapacityBytes)*limit > float64(*nodeFs.AvailableBytes) { + return fmt.Errorf("available nodefs byte is less than %v%%", limit*float64(100)) + } + } + } + + if summary.Node.Runtime != nil { + if imageFs := summary.Node.Runtime.ImageFs; imageFs != nil { + if float64(*imageFs.CapacityBytes)*limit > float64(*imageFs.AvailableBytes) { + return fmt.Errorf("available imagefs byte is less than %v%%", limit*float64(100)) + } + } + } + + return nil +}