This is an automated email from the ASF dual-hosted git repository.
chenyulin0719 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-k8shim.git
The following commit(s) were added to refs/heads/master by this push:
new 59bc7265 [YUNIKORN-3056] Refactor preemption E2E test suite structure
(#967)
59bc7265 is described below
commit 59bc72652f1921fb971c816387b1c5bd29471d89
Author: Michael Chu <[email protected]>
AuthorDate: Sun Apr 20 07:08:49 2025 +0000
[YUNIKORN-3056] Refactor preemption E2E test suite structure (#967)
Closes: #967
Signed-off-by: Yu-Lin Chen <[email protected]>
---
test/e2e/preemption/preemption_suite_test.go | 81 ++++++++++++++++++++++++++++
test/e2e/preemption/preemption_test.go | 75 --------------------------
2 files changed, 81 insertions(+), 75 deletions(-)
diff --git a/test/e2e/preemption/preemption_suite_test.go
b/test/e2e/preemption/preemption_suite_test.go
index 680589ad..ff5ff560 100644
--- a/test/e2e/preemption/preemption_suite_test.go
+++ b/test/e2e/preemption/preemption_suite_test.go
@@ -19,14 +19,22 @@
package preemption_test
import (
+ "fmt"
"path/filepath"
+ "runtime"
+ "strings"
"testing"
"github.com/onsi/ginkgo/v2"
"github.com/onsi/ginkgo/v2/reporters"
"github.com/onsi/gomega"
+ v1 "k8s.io/api/core/v1"
+ "github.com/apache/yunikorn-k8shim/pkg/common/constants"
"github.com/apache/yunikorn-k8shim/test/e2e/framework/configmanager"
+ "github.com/apache/yunikorn-k8shim/test/e2e/framework/helpers/common"
+ "github.com/apache/yunikorn-k8shim/test/e2e/framework/helpers/k8s"
+ "github.com/apache/yunikorn-k8shim/test/e2e/framework/helpers/yunikorn"
)
func init() {
@@ -48,3 +56,76 @@ func TestPreemption(t *testing.T) {
var Ω = gomega.Ω
var HaveOccurred = gomega.HaveOccurred
+
+var _ = ginkgo.BeforeSuite(func() {
+ _, filename, _, _ := runtime.Caller(0)
+ suiteName = common.GetSuiteName(filename)
+ // Initializing kubectl client
+ kClient = k8s.KubeCtl{}
+ Ω(kClient.SetClient()).To(gomega.BeNil())
+ // Initializing rest client
+ restClient = yunikorn.RClient{}
+ Ω(restClient).NotTo(gomega.BeNil())
+
+ yunikorn.EnsureYuniKornConfigsPresent()
+
+ ginkgo.By("Port-forward the scheduler pod")
+ var err = kClient.PortForwardYkSchedulerPod()
+ Ω(err).NotTo(gomega.HaveOccurred())
+
+ var nodes *v1.NodeList
+ nodes, err = kClient.GetNodes()
+ Ω(err).NotTo(gomega.HaveOccurred())
+ Ω(len(nodes.Items)).NotTo(gomega.BeZero(), "Nodes cant be empty")
+
+ // Extract node allocatable resources
+ for _, node := range nodes.Items {
+ // skip master if it's marked as such
+ node := node
+ if k8s.IsMasterNode(&node) || !k8s.IsComputeNode(&node) {
+ continue
+ }
+ if Worker == "" {
+ Worker = node.Name
+ } else {
+ nodesToTaint = append(nodesToTaint, node.Name)
+ }
+ }
+ Ω(Worker).NotTo(gomega.BeEmpty(), "Worker node not found")
+
+ ginkgo.By("Tainting some nodes..")
+ err = kClient.TaintNodes(nodesToTaint, taintKey, "value",
v1.TaintEffectNoSchedule)
+ Ω(err).NotTo(gomega.HaveOccurred())
+
+ nodesDAOInfo, err := restClient.GetNodes(constants.DefaultPartition)
+ Ω(err).NotTo(gomega.HaveOccurred())
+ Ω(nodesDAOInfo).NotTo(gomega.BeNil())
+
+ for _, node := range *nodesDAOInfo {
+ if node.NodeID == Worker {
+ WorkerMemRes = node.Available["memory"]
+ }
+ }
+ WorkerMemRes /= (1000 * 1000) // change to M
+ fmt.Fprintf(ginkgo.GinkgoWriter, "Worker node %s available memory
%dM\n", Worker, WorkerMemRes)
+
+ sleepPodMemLimit = int64(float64(WorkerMemRes) / 3)
+ Ω(sleepPodMemLimit).NotTo(gomega.BeZero(), "Sleep pod memory limit
cannot be zero")
+ fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n",
sleepPodMemLimit)
+
+ sleepPodMemLimit2 = int64(float64(WorkerMemRes) / 4)
+ Ω(sleepPodMemLimit2).NotTo(gomega.BeZero(), "Sleep pod memory limit
cannot be zero")
+ fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n",
sleepPodMemLimit2)
+})
+
+var _ = ginkgo.AfterSuite(func() {
+
+ ginkgo.By("Untainting some nodes")
+ err := kClient.UntaintNodes(nodesToTaint, taintKey)
+ Ω(err).NotTo(gomega.HaveOccurred(), "Could not remove taint from nodes
"+strings.Join(nodesToTaint, ","))
+
+ ginkgo.By("Check Yunikorn's health")
+ checks, err := yunikorn.GetFailedHealthChecks()
+ Ω(err).NotTo(gomega.HaveOccurred())
+ Ω(checks).To(gomega.Equal(""), checks)
+})
diff --git a/test/e2e/preemption/preemption_test.go
b/test/e2e/preemption/preemption_test.go
index 27ee0464..9325d377 100644
--- a/test/e2e/preemption/preemption_test.go
+++ b/test/e2e/preemption/preemption_test.go
@@ -20,8 +20,6 @@ package preemption_test
import (
"fmt"
- "runtime"
- "strings"
"time"
"github.com/onsi/ginkgo/v2"
@@ -55,79 +53,6 @@ var nodesToTaint []string
var cantBeScheduledMesg = "The sleep pod %s can't be scheduled"
var deployMesg = "Deploy the sleep pod %s to the development namespace"
-var _ = ginkgo.BeforeSuite(func() {
- _, filename, _, _ := runtime.Caller(0)
- suiteName = common.GetSuiteName(filename)
- // Initializing kubectl client
- kClient = k8s.KubeCtl{}
- Ω(kClient.SetClient()).To(gomega.BeNil())
- // Initializing rest client
- restClient = yunikorn.RClient{}
- Ω(restClient).NotTo(gomega.BeNil())
-
- yunikorn.EnsureYuniKornConfigsPresent()
-
- ginkgo.By("Port-forward the scheduler pod")
- var err = kClient.PortForwardYkSchedulerPod()
- Ω(err).NotTo(gomega.HaveOccurred())
-
- var nodes *v1.NodeList
- nodes, err = kClient.GetNodes()
- Ω(err).NotTo(gomega.HaveOccurred())
- Ω(len(nodes.Items)).NotTo(gomega.BeZero(), "Nodes cant be empty")
-
- // Extract node allocatable resources
- for _, node := range nodes.Items {
- // skip master if it's marked as such
- node := node
- if k8s.IsMasterNode(&node) || !k8s.IsComputeNode(&node) {
- continue
- }
- if Worker == "" {
- Worker = node.Name
- } else {
- nodesToTaint = append(nodesToTaint, node.Name)
- }
- }
- Ω(Worker).NotTo(gomega.BeEmpty(), "Worker node not found")
-
- ginkgo.By("Tainting some nodes..")
- err = kClient.TaintNodes(nodesToTaint, taintKey, "value",
v1.TaintEffectNoSchedule)
- Ω(err).NotTo(gomega.HaveOccurred())
-
- nodesDAOInfo, err := restClient.GetNodes(constants.DefaultPartition)
- Ω(err).NotTo(gomega.HaveOccurred())
- Ω(nodesDAOInfo).NotTo(gomega.BeNil())
-
- for _, node := range *nodesDAOInfo {
- if node.NodeID == Worker {
- WorkerMemRes = node.Available["memory"]
- }
- }
- WorkerMemRes /= (1000 * 1000) // change to M
- fmt.Fprintf(ginkgo.GinkgoWriter, "Worker node %s available memory
%dM\n", Worker, WorkerMemRes)
-
- sleepPodMemLimit = int64(float64(WorkerMemRes) / 3)
- Ω(sleepPodMemLimit).NotTo(gomega.BeZero(), "Sleep pod memory limit
cannot be zero")
- fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n",
sleepPodMemLimit)
-
- sleepPodMemLimit2 = int64(float64(WorkerMemRes) / 4)
- Ω(sleepPodMemLimit2).NotTo(gomega.BeZero(), "Sleep pod memory limit
cannot be zero")
- fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n",
sleepPodMemLimit2)
-})
-
-var _ = ginkgo.AfterSuite(func() {
-
- ginkgo.By("Untainting some nodes")
- err := kClient.UntaintNodes(nodesToTaint, taintKey)
- Ω(err).NotTo(gomega.HaveOccurred(), "Could not remove taint from nodes
"+strings.Join(nodesToTaint, ","))
-
- ginkgo.By("Check Yunikorn's health")
- checks, err := yunikorn.GetFailedHealthChecks()
- Ω(err).NotTo(gomega.HaveOccurred())
- Ω(checks).To(gomega.Equal(""), checks)
-})
-
var _ = ginkgo.Describe("Preemption", func() {
ginkgo.BeforeEach(func() {
dev = "dev-" + common.RandSeq(5)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]