Merge pull request #97819 from damemi/bz1876918-priorities-test-refactor

Move deferred taint cleanup call to ensure all are removed
This commit is contained in:
Kubernetes Prow Robot 2021-02-06 21:37:12 -08:00 committed by GitHub
commit 23a46d8843
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 10 deletions

View File

@ -584,6 +584,14 @@ func CreatePodsPerNodeForSimpleApp(c clientset.Interface, namespace, appName str
return podLabels
}
// RemoveTaintsOffNode removes a list of taints from the given node
// It is simply a helper wrapper for RemoveTaintOffNode
func RemoveTaintsOffNode(c clientset.Interface, nodeName string, taints []v1.Taint) {
for _, taint := range taints {
RemoveTaintOffNode(c, nodeName, taint)
}
}
// RemoveTaintOffNode removes the given taint from the given node.
func RemoveTaintOffNode(c clientset.Interface, nodeName string, taint v1.Taint) {
err := removeNodeTaint(c, nodeName, nil, &taint)

View File

@ -307,19 +307,40 @@ var _ = SIGDescribe("SchedulerPriorities [Serial]", func() {
// Apply 10 taints to first node
nodeName := nodeList.Items[0].Name
ginkgo.By("Trying to apply 10 (tolerable) taints on the first node.")
// First, create a set of tolerable taints (+tolerations) for the first node.
// Generate 10 tolerable taints for the first node (and matching tolerations)
tolerableTaints := make([]v1.Taint, 0)
var tolerations []v1.Toleration
for i := 0; i < 10; i++ {
testTaint := addRandomTaintToNode(cs, nodeName)
testTaint := getRandomTaint()
tolerableTaints = append(tolerableTaints, testTaint)
tolerations = append(tolerations, v1.Toleration{Key: testTaint.Key, Value: testTaint.Value, Effect: testTaint.Effect})
defer e2enode.RemoveTaintOffNode(cs, nodeName, *testTaint)
}
// Generate 10 intolerable taints for each of the remaining nodes
intolerableTaints := make(map[string][]v1.Taint)
for i := 1; i < len(nodeList.Items); i++ {
nodeTaints := make([]v1.Taint, 0)
for i := 0; i < 10; i++ {
nodeTaints = append(nodeTaints, getRandomTaint())
}
intolerableTaints[nodeList.Items[i].Name] = nodeTaints
}
// Apply the tolerable taints generated above to the first node
ginkgo.By("Trying to apply 10 (tolerable) taints on the first node.")
// We immediately defer the removal of these taints because addTaintToNode can
// panic and RemoveTaintsOffNode does not return an error if the taint does not exist.
defer e2enode.RemoveTaintsOffNode(cs, nodeName, tolerableTaints)
for _, taint := range tolerableTaints {
addTaintToNode(cs, nodeName, taint)
}
// Apply the intolerable taints to each of the following nodes
ginkgo.By("Adding 10 intolerable taints to all other nodes")
for i := 1; i < len(nodeList.Items); i++ {
node := nodeList.Items[i]
for i := 0; i < 10; i++ {
testTaint := addRandomTaintToNode(cs, node.Name)
defer e2enode.RemoveTaintOffNode(cs, node.Name, *testTaint)
defer e2enode.RemoveTaintsOffNode(cs, node.Name, intolerableTaints[node.Name])
for _, taint := range intolerableTaints[node.Name] {
addTaintToNode(cs, node.Name, taint)
}
}
@ -614,13 +635,15 @@ func createRC(ns, rsName string, replicas int32, rcPodLabels map[string]string,
return rc
}
func addRandomTaintToNode(cs clientset.Interface, nodeName string) *v1.Taint {
testTaint := v1.Taint{
Key: fmt.Sprintf("kubernetes.io/e2e-taint-key-%s", string(uuid.NewUUID())),
func getRandomTaint() v1.Taint {
return v1.Taint{
Key: fmt.Sprintf("kubernetes.io/scheduling-priorities-e2e-taint-key-%s", string(uuid.NewUUID())),
Value: fmt.Sprintf("testing-taint-value-%s", string(uuid.NewUUID())),
Effect: v1.TaintEffectPreferNoSchedule,
}
}
func addTaintToNode(cs clientset.Interface, nodeName string, testTaint v1.Taint) {
e2enode.AddOrUpdateTaintOnNode(cs, nodeName, testTaint)
framework.ExpectNodeHasTaint(cs, nodeName, &testTaint)
return &testTaint
}