Add integration test for DefaultBinder
Change-Id: I71ea08104024403a7d9ebcf3725fc3ff17997229
This commit is contained in:
		
							
								
								
									
										72
									
								
								test/integration/scheduler/bind/bind_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								test/integration/scheduler/bind/bind_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| /* | ||||
| Copyright 2023 The Kubernetes Authors. | ||||
|  | ||||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | ||||
| You may obtain a copy of the License at | ||||
|  | ||||
|     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| Unless required by applicable law or agreed to in writing, software | ||||
| distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | ||||
| limitations under the License. | ||||
| */ | ||||
|  | ||||
| package bind | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	corev1 "k8s.io/api/core/v1" | ||||
| 	"k8s.io/kubernetes/pkg/scheduler/framework" | ||||
| 	st "k8s.io/kubernetes/pkg/scheduler/testing" | ||||
| 	testutil "k8s.io/kubernetes/test/integration/util" | ||||
| ) | ||||
|  | ||||
| // TestDefaultBinder tests the binding process in the scheduler. | ||||
| func TestDefaultBinder(t *testing.T) { | ||||
| 	testCtx := testutil.InitTestSchedulerWithOptions(t, testutil.InitTestAPIServer(t, "", nil), 0) | ||||
| 	testutil.SyncInformerFactory(testCtx) | ||||
| 	// Do not start scheduler routine. | ||||
| 	defer testutil.CleanupTest(t, testCtx) | ||||
|  | ||||
| 	// Add a node. | ||||
| 	node, err := testutil.CreateNode(testCtx.ClientSet, st.MakeNode().Name("testnode").Obj()) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
|  | ||||
| 	tests := map[string]struct { | ||||
| 		anotherUID     bool | ||||
| 		wantStatusCode framework.Code | ||||
| 	}{ | ||||
| 		"same UID": { | ||||
| 			wantStatusCode: framework.Success, | ||||
| 		}, | ||||
| 		"different UID": { | ||||
| 			anotherUID:     true, | ||||
| 			wantStatusCode: framework.Error, | ||||
| 		}, | ||||
| 	} | ||||
| 	for name, tc := range tests { | ||||
| 		t.Run(name, func(t *testing.T) { | ||||
| 			pod, err := testutil.CreatePausePodWithResource(testCtx.ClientSet, "fixed-name", testCtx.NS.Name, nil) | ||||
| 			if err != nil { | ||||
| 				t.Fatalf("Failed to create pod: %v", err) | ||||
| 			} | ||||
| 			defer testutil.CleanupPods(testCtx.ClientSet, t, []*corev1.Pod{pod}) | ||||
|  | ||||
| 			podCopy := pod.DeepCopy() | ||||
| 			if tc.anotherUID { | ||||
| 				podCopy.UID = "another" | ||||
| 			} | ||||
|  | ||||
| 			status := testCtx.Scheduler.Profiles["default-scheduler"].RunBindPlugins(testCtx.Ctx, nil, podCopy, node.Name) | ||||
| 			if code := status.Code(); code != tc.wantStatusCode { | ||||
| 				t.Errorf("Bind returned code %s, want %s", code, tc.wantStatusCode) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										27
									
								
								test/integration/scheduler/bind/main_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								test/integration/scheduler/bind/main_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| /* | ||||
| Copyright 2023 The Kubernetes Authors. | ||||
|  | ||||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | ||||
| You may obtain a copy of the License at | ||||
|  | ||||
|     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| Unless required by applicable law or agreed to in writing, software | ||||
| distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | ||||
| limitations under the License. | ||||
| */ | ||||
|  | ||||
| package bind | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"k8s.io/kubernetes/test/integration/framework" | ||||
| ) | ||||
|  | ||||
| func TestMain(m *testing.M) { | ||||
| 	framework.EtcdMain(m.Run) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Aldo Culquicondor
					Aldo Culquicondor