diff --git a/test/e2e_node/node_perf_test.go b/test/e2e_node/node_perf_test.go index 81e38a44250..50be44d111c 100644 --- a/test/e2e_node/node_perf_test.go +++ b/test/e2e_node/node_perf_test.go @@ -21,11 +21,13 @@ import ( "time" v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" "k8s.io/kubernetes/test/e2e/framework" e2enode "k8s.io/kubernetes/test/e2e/framework/node" e2epod "k8s.io/kubernetes/test/e2e/framework/pod" + e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper" "k8s.io/kubernetes/test/e2e_node/perf/workloads" "github.com/onsi/ginkgo" @@ -57,7 +59,7 @@ func setKubeletConfig(f *framework.Framework, cfg *kubeletconfig.KubeletConfigur // Serial because the test updates kubelet configuration. // Slow by design. -var _ = SIGDescribe("Node Performance Testing [Serial] [Slow] [Flaky]", func() { +var _ = SIGDescribe("Node Performance Testing [Serial] [Slow]", func() { f := framework.NewDefaultFramework("node-performance-testing") var ( wl workloads.NodePerfWorkload @@ -111,6 +113,21 @@ var _ = SIGDescribe("Node Performance Testing [Serial] [Slow] [Flaky]", func() { framework.Logf("Time to complete workload %s: %v", wl.Name(), perf) } + ginkgo.BeforeEach(func() { + ginkgo.By("ensure environment has enough CPU + Memory to run") + minimumRequiredCPU := resource.MustParse("15") + minimumRequiredMemory := resource.MustParse("48Gi") + localNodeCap := getLocalNode(f).Status.Allocatable + cpuCap := localNodeCap[v1.ResourceCPU] + memCap := localNodeCap[v1.ResourceMemory] + if cpuCap.Cmp(minimumRequiredCPU) == -1 { + e2eskipper.Skipf("Skipping Node Performance Tests due to lack of CPU. Required %v is less than capacity %v.", minimumRequiredCPU, cpuCap) + } + if memCap.Cmp(minimumRequiredMemory) == -1 { + e2eskipper.Skipf("Skipping Node Performance Tests due to lack of memory. Required %v is less than capacity %v.", minimumRequiredMemory, memCap) + } + }) + ginkgo.Context("Run node performance testing with pre-defined workloads", func() { ginkgo.BeforeEach(func() { wl = workloads.NodePerfWorkloads[0]