Skip to content

Commit 4128cb7

Browse files
Michael ChuMichael Chu
Michael Chu
authored and
Michael Chu
committed
[YUNIKORN-3056] Refactor preemption E2E test suite structure
1 parent c7a44ce commit 4128cb7

File tree

2 files changed

+81
-75
lines changed

2 files changed

+81
-75
lines changed

test/e2e/preemption/preemption_suite_test.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,22 @@
1919
package preemption_test
2020

2121
import (
22+
"fmt"
2223
"path/filepath"
24+
"runtime"
25+
"strings"
2326
"testing"
2427

2528
"github.com/onsi/ginkgo/v2"
2629
"github.com/onsi/ginkgo/v2/reporters"
2730
"github.com/onsi/gomega"
31+
v1 "k8s.io/api/core/v1"
2832

33+
"github.com/apache/yunikorn-k8shim/pkg/common/constants"
2934
"github.com/apache/yunikorn-k8shim/test/e2e/framework/configmanager"
35+
"github.com/apache/yunikorn-k8shim/test/e2e/framework/helpers/common"
36+
"github.com/apache/yunikorn-k8shim/test/e2e/framework/helpers/k8s"
37+
"github.com/apache/yunikorn-k8shim/test/e2e/framework/helpers/yunikorn"
3038
)
3139

3240
func init() {
@@ -48,3 +56,76 @@ func TestPreemption(t *testing.T) {
4856

4957
var Ω = gomega.Ω
5058
var HaveOccurred = gomega.HaveOccurred
59+
60+
var _ = ginkgo.BeforeSuite(func() {
61+
_, filename, _, _ := runtime.Caller(0)
62+
suiteName = common.GetSuiteName(filename)
63+
// Initializing kubectl client
64+
kClient = k8s.KubeCtl{}
65+
Ω(kClient.SetClient()).To(gomega.BeNil())
66+
// Initializing rest client
67+
restClient = yunikorn.RClient{}
68+
Ω(restClient).NotTo(gomega.BeNil())
69+
70+
yunikorn.EnsureYuniKornConfigsPresent()
71+
72+
ginkgo.By("Port-forward the scheduler pod")
73+
var err = kClient.PortForwardYkSchedulerPod()
74+
Ω(err).NotTo(gomega.HaveOccurred())
75+
76+
var nodes *v1.NodeList
77+
nodes, err = kClient.GetNodes()
78+
Ω(err).NotTo(gomega.HaveOccurred())
79+
Ω(len(nodes.Items)).NotTo(gomega.BeZero(), "Nodes cant be empty")
80+
81+
// Extract node allocatable resources
82+
for _, node := range nodes.Items {
83+
// skip master if it's marked as such
84+
node := node
85+
if k8s.IsMasterNode(&node) || !k8s.IsComputeNode(&node) {
86+
continue
87+
}
88+
if Worker == "" {
89+
Worker = node.Name
90+
} else {
91+
nodesToTaint = append(nodesToTaint, node.Name)
92+
}
93+
}
94+
Ω(Worker).NotTo(gomega.BeEmpty(), "Worker node not found")
95+
96+
ginkgo.By("Tainting some nodes..")
97+
err = kClient.TaintNodes(nodesToTaint, taintKey, "value", v1.TaintEffectNoSchedule)
98+
Ω(err).NotTo(gomega.HaveOccurred())
99+
100+
nodesDAOInfo, err := restClient.GetNodes(constants.DefaultPartition)
101+
Ω(err).NotTo(gomega.HaveOccurred())
102+
Ω(nodesDAOInfo).NotTo(gomega.BeNil())
103+
104+
for _, node := range *nodesDAOInfo {
105+
if node.NodeID == Worker {
106+
WorkerMemRes = node.Available["memory"]
107+
}
108+
}
109+
WorkerMemRes /= (1000 * 1000) // change to M
110+
fmt.Fprintf(ginkgo.GinkgoWriter, "Worker node %s available memory %dM\n", Worker, WorkerMemRes)
111+
112+
sleepPodMemLimit = int64(float64(WorkerMemRes) / 3)
113+
Ω(sleepPodMemLimit).NotTo(gomega.BeZero(), "Sleep pod memory limit cannot be zero")
114+
fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n", sleepPodMemLimit)
115+
116+
sleepPodMemLimit2 = int64(float64(WorkerMemRes) / 4)
117+
Ω(sleepPodMemLimit2).NotTo(gomega.BeZero(), "Sleep pod memory limit cannot be zero")
118+
fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n", sleepPodMemLimit2)
119+
})
120+
121+
var _ = ginkgo.AfterSuite(func() {
122+
123+
ginkgo.By("Untainting some nodes")
124+
err := kClient.UntaintNodes(nodesToTaint, taintKey)
125+
Ω(err).NotTo(gomega.HaveOccurred(), "Could not remove taint from nodes "+strings.Join(nodesToTaint, ","))
126+
127+
ginkgo.By("Check Yunikorn's health")
128+
checks, err := yunikorn.GetFailedHealthChecks()
129+
Ω(err).NotTo(gomega.HaveOccurred())
130+
Ω(checks).To(gomega.Equal(""), checks)
131+
})

test/e2e/preemption/preemption_test.go

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ package preemption_test
2020

2121
import (
2222
"fmt"
23-
"runtime"
24-
"strings"
2523
"time"
2624

2725
"github.com/onsi/ginkgo/v2"
@@ -55,79 +53,6 @@ var nodesToTaint []string
5553
var cantBeScheduledMesg = "The sleep pod %s can't be scheduled"
5654
var deployMesg = "Deploy the sleep pod %s to the development namespace"
5755

58-
var _ = ginkgo.BeforeSuite(func() {
59-
_, filename, _, _ := runtime.Caller(0)
60-
suiteName = common.GetSuiteName(filename)
61-
// Initializing kubectl client
62-
kClient = k8s.KubeCtl{}
63-
Ω(kClient.SetClient()).To(gomega.BeNil())
64-
// Initializing rest client
65-
restClient = yunikorn.RClient{}
66-
Ω(restClient).NotTo(gomega.BeNil())
67-
68-
yunikorn.EnsureYuniKornConfigsPresent()
69-
70-
ginkgo.By("Port-forward the scheduler pod")
71-
var err = kClient.PortForwardYkSchedulerPod()
72-
Ω(err).NotTo(gomega.HaveOccurred())
73-
74-
var nodes *v1.NodeList
75-
nodes, err = kClient.GetNodes()
76-
Ω(err).NotTo(gomega.HaveOccurred())
77-
Ω(len(nodes.Items)).NotTo(gomega.BeZero(), "Nodes cant be empty")
78-
79-
// Extract node allocatable resources
80-
for _, node := range nodes.Items {
81-
// skip master if it's marked as such
82-
node := node
83-
if k8s.IsMasterNode(&node) || !k8s.IsComputeNode(&node) {
84-
continue
85-
}
86-
if Worker == "" {
87-
Worker = node.Name
88-
} else {
89-
nodesToTaint = append(nodesToTaint, node.Name)
90-
}
91-
}
92-
Ω(Worker).NotTo(gomega.BeEmpty(), "Worker node not found")
93-
94-
ginkgo.By("Tainting some nodes..")
95-
err = kClient.TaintNodes(nodesToTaint, taintKey, "value", v1.TaintEffectNoSchedule)
96-
Ω(err).NotTo(gomega.HaveOccurred())
97-
98-
nodesDAOInfo, err := restClient.GetNodes(constants.DefaultPartition)
99-
Ω(err).NotTo(gomega.HaveOccurred())
100-
Ω(nodesDAOInfo).NotTo(gomega.BeNil())
101-
102-
for _, node := range *nodesDAOInfo {
103-
if node.NodeID == Worker {
104-
WorkerMemRes = node.Available["memory"]
105-
}
106-
}
107-
WorkerMemRes /= (1000 * 1000) // change to M
108-
fmt.Fprintf(ginkgo.GinkgoWriter, "Worker node %s available memory %dM\n", Worker, WorkerMemRes)
109-
110-
sleepPodMemLimit = int64(float64(WorkerMemRes) / 3)
111-
Ω(sleepPodMemLimit).NotTo(gomega.BeZero(), "Sleep pod memory limit cannot be zero")
112-
fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n", sleepPodMemLimit)
113-
114-
sleepPodMemLimit2 = int64(float64(WorkerMemRes) / 4)
115-
Ω(sleepPodMemLimit2).NotTo(gomega.BeZero(), "Sleep pod memory limit cannot be zero")
116-
fmt.Fprintf(ginkgo.GinkgoWriter, "Sleep pod limit memory %dM\n", sleepPodMemLimit2)
117-
})
118-
119-
var _ = ginkgo.AfterSuite(func() {
120-
121-
ginkgo.By("Untainting some nodes")
122-
err := kClient.UntaintNodes(nodesToTaint, taintKey)
123-
Ω(err).NotTo(gomega.HaveOccurred(), "Could not remove taint from nodes "+strings.Join(nodesToTaint, ","))
124-
125-
ginkgo.By("Check Yunikorn's health")
126-
checks, err := yunikorn.GetFailedHealthChecks()
127-
Ω(err).NotTo(gomega.HaveOccurred())
128-
Ω(checks).To(gomega.Equal(""), checks)
129-
})
130-
13156
var _ = ginkgo.Describe("Preemption", func() {
13257
ginkgo.BeforeEach(func() {
13358
dev = "dev-" + common.RandSeq(5)

0 commit comments

Comments
 (0)