Merge pull request #59211 from vmware/fix-node-lables-for-e2e-tests

Automatic merge from submit-queue (batch tested with PRs 58645, 59211). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Fixing node labels assignment for random order tests execution

**What this PR does / why we need it**:
For some vsphere cloud provider e2e test cases, we are setting node labels to control pod scheduling on specific node.

When these e2e tests are executed in random order from testsuite, they are overwriting node labels, so some tests were failing to schedule pod on desired node. Tests are failing with following error.

```
“FailedScheduling: No nodes are available that match all of the predicates: MatchNodeSelector (5), NodeUnschedulable (1).
```

This PR is fixing the above issue with setting distinct node label key for each test group within test suite.



**Which issue(s) this PR fixes**
Fixes #

**Special notes for your reviewer**:
Executed testsuites containing tests from both files using following script.

```
GINKGO_FOCUS[0]="Volume\sPlacement"
GINKGO_FOCUS[1]="Volume\sDisk\sFormat"
REGEX="--ginkgo.focus="$(IFS='|' ; echo "${GINKGO_FOCUS[*]}")
go run hack/e2e.go --check-version-skew=false --v --test --test_args="${REGEX}"
```

All test passed.


**Release note**:

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue 2018-02-02 20:47:29 -08:00 committed by GitHub
commit 3cf94ef125
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 9 deletions

View File

@ -52,6 +52,9 @@ import (
var _ = utils.SIGDescribe("Volume Disk Format [Feature:vsphere]", func() { var _ = utils.SIGDescribe("Volume Disk Format [Feature:vsphere]", func() {
f := framework.NewDefaultFramework("volume-disk-format") f := framework.NewDefaultFramework("volume-disk-format")
const (
NodeLabelKey = "vsphere_e2e_label_volume_diskformat"
)
var ( var (
client clientset.Interface client clientset.Interface
namespace string namespace string
@ -73,15 +76,15 @@ var _ = utils.SIGDescribe("Volume Disk Format [Feature:vsphere]", func() {
if !isNodeLabeled { if !isNodeLabeled {
nodeLabelValue = "vsphere_e2e_" + string(uuid.NewUUID()) nodeLabelValue = "vsphere_e2e_" + string(uuid.NewUUID())
nodeKeyValueLabel = make(map[string]string) nodeKeyValueLabel = make(map[string]string)
nodeKeyValueLabel["vsphere_e2e_label"] = nodeLabelValue nodeKeyValueLabel[NodeLabelKey] = nodeLabelValue
framework.AddOrUpdateLabelOnNode(client, nodeName, "vsphere_e2e_label", nodeLabelValue) framework.AddOrUpdateLabelOnNode(client, nodeName, NodeLabelKey, nodeLabelValue)
isNodeLabeled = true isNodeLabeled = true
} }
}) })
framework.AddCleanupAction(func() { framework.AddCleanupAction(func() {
// Cleanup actions will be called even when the tests are skipped and leaves namespace unset. // Cleanup actions will be called even when the tests are skipped and leaves namespace unset.
if len(namespace) > 0 && len(nodeLabelValue) > 0 { if len(namespace) > 0 && len(nodeLabelValue) > 0 {
framework.RemoveLabelOffNode(client, nodeName, "vsphere_e2e_label") framework.RemoveLabelOffNode(client, nodeName, NodeLabelKey)
} }
}) })

View File

@ -35,6 +35,9 @@ import (
var _ = utils.SIGDescribe("Volume Placement", func() { var _ = utils.SIGDescribe("Volume Placement", func() {
f := framework.NewDefaultFramework("volume-placement") f := framework.NewDefaultFramework("volume-placement")
const (
NodeLabelKey = "vsphere_e2e_label_volume_placement"
)
var ( var (
c clientset.Interface c clientset.Interface
ns string ns string
@ -80,10 +83,10 @@ var _ = utils.SIGDescribe("Volume Placement", func() {
// Cleanup actions will be called even when the tests are skipped and leaves namespace unset. // Cleanup actions will be called even when the tests are skipped and leaves namespace unset.
if len(ns) > 0 { if len(ns) > 0 {
if len(node1KeyValueLabel) > 0 { if len(node1KeyValueLabel) > 0 {
framework.RemoveLabelOffNode(c, node1Name, "vsphere_e2e_label") framework.RemoveLabelOffNode(c, node1Name, NodeLabelKey)
} }
if len(node2KeyValueLabel) > 0 { if len(node2KeyValueLabel) > 0 {
framework.RemoveLabelOffNode(c, node2Name, "vsphere_e2e_label") framework.RemoveLabelOffNode(c, node2Name, NodeLabelKey)
} }
} }
}) })
@ -339,13 +342,13 @@ func testSetupVolumePlacement(client clientset.Interface, namespace string) (nod
node2Name = nodes.Items[1].Name node2Name = nodes.Items[1].Name
node1LabelValue := "vsphere_e2e_" + string(uuid.NewUUID()) node1LabelValue := "vsphere_e2e_" + string(uuid.NewUUID())
node1KeyValueLabel = make(map[string]string) node1KeyValueLabel = make(map[string]string)
node1KeyValueLabel["vsphere_e2e_label"] = node1LabelValue node1KeyValueLabel[NodeLabelKey] = node1LabelValue
framework.AddOrUpdateLabelOnNode(client, node1Name, "vsphere_e2e_label", node1LabelValue) framework.AddOrUpdateLabelOnNode(client, node1Name, NodeLabelKey, node1LabelValue)
node2LabelValue := "vsphere_e2e_" + string(uuid.NewUUID()) node2LabelValue := "vsphere_e2e_" + string(uuid.NewUUID())
node2KeyValueLabel = make(map[string]string) node2KeyValueLabel = make(map[string]string)
node2KeyValueLabel["vsphere_e2e_label"] = node2LabelValue node2KeyValueLabel[NodeLabelKey] = node2LabelValue
framework.AddOrUpdateLabelOnNode(client, node2Name, "vsphere_e2e_label", node2LabelValue) framework.AddOrUpdateLabelOnNode(client, node2Name, NodeLabelKey, node2LabelValue)
return node1Name, node1KeyValueLabel, node2Name, node2KeyValueLabel return node1Name, node1KeyValueLabel, node2Name, node2KeyValueLabel
} }