mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 23:15:14 +00:00
Replace uses of reflect.DeepEqual with cmp.Diff in pkg/scheduler tests
This commit is contained in:
parent
f6f06806cc
commit
4205f04ce3
20
pkg/scheduler/backend/cache/cache_test.go
vendored
20
pkg/scheduler/backend/cache/cache_test.go
vendored
@ -40,6 +40,12 @@ import (
|
||||
schedutil "k8s.io/kubernetes/pkg/scheduler/util"
|
||||
)
|
||||
|
||||
var nodeInfoCmpOpts = []cmp.Option{
|
||||
cmp.AllowUnexported(framework.NodeInfo{}),
|
||||
// This field needs to be ignored because we can't call AllowUnexported for type framework.podResource (it's not visible in this package).
|
||||
cmpopts.IgnoreFields(framework.PodInfo{}, "cachedResource"),
|
||||
}
|
||||
|
||||
func deepEqualWithoutGeneration(actual *nodeInfoListItem, expected *framework.NodeInfo) error {
|
||||
if (actual == nil) != (expected == nil) {
|
||||
return errors.New("one of the actual or expected is nil and the other is not")
|
||||
@ -52,7 +58,7 @@ func deepEqualWithoutGeneration(actual *nodeInfoListItem, expected *framework.No
|
||||
expected.Generation = 0
|
||||
}
|
||||
if actual != nil {
|
||||
if diff := cmp.Diff(expected, actual.info, cmp.AllowUnexported(framework.NodeInfo{}), cmpopts.IgnoreUnexported(framework.PodInfo{})); diff != "" {
|
||||
if diff := cmp.Diff(expected, actual.info, nodeInfoCmpOpts...); diff != "" {
|
||||
return fmt.Errorf("Unexpected node info (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
@ -466,7 +472,7 @@ func TestDump(t *testing.T) {
|
||||
}
|
||||
for name, ni := range snapshot.Nodes {
|
||||
nItem := cache.nodes[name]
|
||||
if diff := cmp.Diff(nItem.info, ni, cmp.AllowUnexported(framework.NodeInfo{}), cmpopts.IgnoreUnexported(framework.PodInfo{})); diff != "" {
|
||||
if diff := cmp.Diff(nItem.info, ni, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected node info (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
@ -1246,7 +1252,7 @@ func TestNodeOperators(t *testing.T) {
|
||||
|
||||
// Generations are globally unique. We check in our unit tests that they are incremented correctly.
|
||||
expected.Generation = got.info.Generation
|
||||
if diff := cmp.Diff(expected, got.info, cmp.AllowUnexported(framework.NodeInfo{}), cmpopts.IgnoreUnexported(framework.PodInfo{})); diff != "" {
|
||||
if diff := cmp.Diff(expected, got.info, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Failed to add node into scheduler cache (-want,+got):\n%s", diff)
|
||||
}
|
||||
|
||||
@ -1265,8 +1271,8 @@ func TestNodeOperators(t *testing.T) {
|
||||
t.Errorf("failed to dump cached nodes:\n got: %v \nexpected: %v", cachedNodes.nodeInfoMap, tc.nodes)
|
||||
}
|
||||
expected.Generation = newNode.Generation
|
||||
if diff := cmp.Diff(newNode, expected.Snapshot(), cmp.AllowUnexported(framework.NodeInfo{}), cmpopts.IgnoreUnexported(framework.PodInfo{})); diff != "" {
|
||||
t.Errorf("Failed to clone node:\n%s", diff)
|
||||
if diff := cmp.Diff(expected.Snapshot(), newNode, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Failed to clone node (-want,+got):\n%s", diff)
|
||||
}
|
||||
// check imageState of NodeInfo with specific image when update snapshot
|
||||
if !checkImageStateSummary(cachedNodes.nodeInfoMap, "gcr.io/80:latest", "gcr.io/300:latest") {
|
||||
@ -1287,7 +1293,7 @@ func TestNodeOperators(t *testing.T) {
|
||||
}
|
||||
expected.Generation = got.info.Generation
|
||||
|
||||
if diff := cmp.Diff(expected, got.info, cmp.AllowUnexported(framework.NodeInfo{}), cmpopts.IgnoreUnexported(framework.PodInfo{})); diff != "" {
|
||||
if diff := cmp.Diff(expected, got.info, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected schedulertypes after updating node (-want, +got):\n%s", diff)
|
||||
}
|
||||
// check imageState of NodeInfo with specific image when update node
|
||||
@ -1764,7 +1770,7 @@ func compareCacheWithNodeInfoSnapshot(t *testing.T, cache *cacheImpl, snapshot *
|
||||
if want.Node() == nil {
|
||||
want = nil
|
||||
}
|
||||
if diff := cmp.Diff(want, snapshot.nodeInfoMap[name], cmp.AllowUnexported(framework.NodeInfo{}), cmpopts.IgnoreUnexported(framework.PodInfo{})); diff != "" {
|
||||
if diff := cmp.Diff(want, snapshot.nodeInfoMap[name], nodeInfoCmpOpts...); diff != "" {
|
||||
return fmt.Errorf("Unexpected node info for node (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
@ -18,10 +18,10 @@ package scheduler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
@ -40,6 +40,10 @@ import (
|
||||
tf "k8s.io/kubernetes/pkg/scheduler/testing/framework"
|
||||
)
|
||||
|
||||
var scheduleResultCmpOpts = []cmp.Option{
|
||||
cmp.AllowUnexported(ScheduleResult{}),
|
||||
}
|
||||
|
||||
func TestSchedulerWithExtenders(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
@ -365,8 +369,8 @@ func TestSchedulerWithExtenders(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(result, test.expectedResult) {
|
||||
t.Errorf("Expected: %+v, Saw: %+v", test.expectedResult, result)
|
||||
if diff := cmp.Diff(test.expectedResult, result, scheduleResultCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected result: (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -480,8 +484,9 @@ func TestConvertToMetaVictims(t *testing.T) {
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := convertToMetaVictims(tt.nodeNameToVictims); !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("convertToMetaVictims() = %v, want %v", got, tt.want)
|
||||
got := convertToMetaVictims(tt.nodeNameToVictims)
|
||||
if diff := cmp.Diff(tt.want, got); diff != "" {
|
||||
t.Errorf("Unexpected convertToMetaVictims(): (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -562,8 +567,8 @@ func TestConvertToVictims(t *testing.T) {
|
||||
t.Errorf("convertToVictims() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("convertToVictims() got = %v, want %v", got, tt.want)
|
||||
if diff := cmp.Diff(tt.want, got); diff != "" {
|
||||
t.Errorf("Unexpected convertToVictims(): (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -18,8 +18,6 @@ package interpodaffinity
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
@ -39,7 +37,10 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
defaultNamespace = ""
|
||||
defaultNamespace = ""
|
||||
preFilterStateCmpOpts = []cmp.Option{
|
||||
cmp.AllowUnexported(preFilterState{}, framework.PodInfo{}),
|
||||
}
|
||||
)
|
||||
|
||||
func createPodWithAffinityTerms(namespace, nodeName string, labels map[string]string, affinity, antiAffinity []v1.PodAffinityTerm) *v1.Pod {
|
||||
@ -550,7 +551,7 @@ func TestRequiredAffinitySingleNode(t *testing.T) {
|
||||
p := plugintesting.SetupPluginWithInformers(ctx, t, schedruntime.FactoryAdapter(feature.Features{}, New), &config.InterPodAffinityArgs{}, snapshot, namespaces)
|
||||
state := framework.NewCycleState()
|
||||
_, preFilterStatus := p.(framework.PreFilterPlugin).PreFilter(ctx, state, test.pod)
|
||||
if diff := cmp.Diff(preFilterStatus, test.wantPreFilterStatus); diff != "" {
|
||||
if diff := cmp.Diff(test.wantPreFilterStatus, preFilterStatus); diff != "" {
|
||||
t.Errorf("PreFilter: status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
if !preFilterStatus.IsSuccess() {
|
||||
@ -559,7 +560,7 @@ func TestRequiredAffinitySingleNode(t *testing.T) {
|
||||
|
||||
nodeInfo := mustGetNodeInfo(t, snapshot, test.node.Name)
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, state, test.pod, nodeInfo)
|
||||
if diff := cmp.Diff(gotStatus, test.wantFilterStatus); diff != "" {
|
||||
if diff := cmp.Diff(test.wantFilterStatus, gotStatus); diff != "" {
|
||||
t.Errorf("Filter: status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
@ -965,7 +966,7 @@ func TestRequiredAffinityMultipleNodes(t *testing.T) {
|
||||
})
|
||||
state := framework.NewCycleState()
|
||||
_, preFilterStatus := p.(framework.PreFilterPlugin).PreFilter(ctx, state, test.pod)
|
||||
if diff := cmp.Diff(preFilterStatus, test.wantPreFilterStatus); diff != "" {
|
||||
if diff := cmp.Diff(test.wantPreFilterStatus, preFilterStatus); diff != "" {
|
||||
t.Errorf("PreFilter: status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
if preFilterStatus.IsSkip() {
|
||||
@ -974,7 +975,7 @@ func TestRequiredAffinityMultipleNodes(t *testing.T) {
|
||||
for indexNode, node := range test.nodes {
|
||||
nodeInfo := mustGetNodeInfo(t, snapshot, node.Name)
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, state, test.pod, nodeInfo)
|
||||
if diff := cmp.Diff(gotStatus, test.wantFilterStatuses[indexNode]); diff != "" {
|
||||
if diff := cmp.Diff(test.wantFilterStatuses[indexNode], gotStatus); diff != "" {
|
||||
t.Errorf("index: %d: Filter: status does not match (-want,+got):\n%s", indexTest, diff)
|
||||
}
|
||||
}
|
||||
@ -993,9 +994,9 @@ func TestPreFilterDisabled(t *testing.T) {
|
||||
p := plugintesting.SetupPluginWithInformers(ctx, t, schedruntime.FactoryAdapter(feature.Features{}, New), &config.InterPodAffinityArgs{}, cache.NewEmptySnapshot(), nil)
|
||||
cycleState := framework.NewCycleState()
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, cycleState, pod, nodeInfo)
|
||||
wantStatus := framework.AsStatus(fmt.Errorf(`error reading "PreFilterInterPodAffinity" from cycleState: %w`, framework.ErrNotFound))
|
||||
if !reflect.DeepEqual(gotStatus, wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, wantStatus)
|
||||
wantStatus := framework.AsStatus(framework.ErrNotFound)
|
||||
if diff := cmp.Diff(gotStatus, wantStatus); diff != "" {
|
||||
t.Errorf("Status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -1270,24 +1271,24 @@ func TestPreFilterStateAddRemovePod(t *testing.T) {
|
||||
t.Errorf("failed to get preFilterState from cycleState: %v", err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(newState.antiAffinityCounts, test.expectedAntiAffinity) {
|
||||
t.Errorf("State is not equal, got: %v, want: %v", newState.antiAffinityCounts, test.expectedAntiAffinity)
|
||||
if diff := cmp.Diff(test.expectedAntiAffinity, newState.antiAffinityCounts); diff != "" {
|
||||
t.Errorf("State is not equal (-want,+got):\n%s", diff)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(newState.affinityCounts, test.expectedAffinity) {
|
||||
t.Errorf("State is not equal, got: %v, want: %v", newState.affinityCounts, test.expectedAffinity)
|
||||
if diff := cmp.Diff(test.expectedAffinity, newState.affinityCounts); diff != "" {
|
||||
t.Errorf("State is not equal (-want,+got):\n%s", diff)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(allPodsState, state) {
|
||||
t.Errorf("State is not equal, got: %v, want: %v", state, allPodsState)
|
||||
if diff := cmp.Diff(allPodsState, state, preFilterStateCmpOpts...); diff != "" {
|
||||
t.Errorf("State is not equal (-want,+got):\n%s", diff)
|
||||
}
|
||||
|
||||
// Remove the added pod pod and make sure it is equal to the original state.
|
||||
if err := ipa.RemovePod(ctx, cycleState, test.pendingPod, mustNewPodInfo(t, test.addedPod), nodeInfo); err != nil {
|
||||
t.Errorf("error removing pod from meta: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(originalState, state) {
|
||||
t.Errorf("State is not equal, got: %v, want: %v", state, originalState)
|
||||
if diff := cmp.Diff(originalState, state, preFilterStateCmpOpts...); diff != "" {
|
||||
t.Errorf("State is not equal (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1313,8 +1314,8 @@ func TestPreFilterStateClone(t *testing.T) {
|
||||
if clone == source {
|
||||
t.Errorf("Clone returned the exact same object!")
|
||||
}
|
||||
if !reflect.DeepEqual(clone, source) {
|
||||
t.Errorf("Copy is not equal to source!")
|
||||
if diff := cmp.Diff(source, clone, preFilterStateCmpOpts...); diff != "" {
|
||||
t.Errorf("Copy is not equal to source! (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -1440,11 +1441,11 @@ func TestGetTPMapMatchingIncomingAffinityAntiAffinity(t *testing.T) {
|
||||
defer cancel()
|
||||
p := plugintesting.SetupPluginWithInformers(ctx, t, schedruntime.FactoryAdapter(feature.Features{}, New), &config.InterPodAffinityArgs{}, snapshot, nil)
|
||||
gotAffinityPodsMap, gotAntiAffinityPodsMap := p.(*InterPodAffinity).getIncomingAffinityAntiAffinityCounts(ctx, mustNewPodInfo(t, tt.pod), l)
|
||||
if !reflect.DeepEqual(gotAffinityPodsMap, tt.wantAffinityPodsMap) {
|
||||
t.Errorf("getTPMapMatchingIncomingAffinityAntiAffinity() gotAffinityPodsMap = %#v, want %#v", gotAffinityPodsMap, tt.wantAffinityPodsMap)
|
||||
if diff := cmp.Diff(tt.wantAffinityPodsMap, gotAffinityPodsMap); diff != "" {
|
||||
t.Errorf("Unexpected getTPMapMatchingIncomingAffinityAntiAffinity() (-want,+got):\n%s", diff)
|
||||
}
|
||||
if !reflect.DeepEqual(gotAntiAffinityPodsMap, tt.wantAntiAffinityPodsMap) {
|
||||
t.Errorf("getTPMapMatchingIncomingAffinityAntiAffinity() gotAntiAffinityPodsMap = %#v, want %#v", gotAntiAffinityPodsMap, tt.wantAntiAffinityPodsMap)
|
||||
if diff := cmp.Diff(tt.wantAntiAffinityPodsMap, gotAntiAffinityPodsMap); diff != "" {
|
||||
t.Errorf("Unexpected getTPMapMatchingIncomingAffinityAntiAffinity() (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ package interpodaffinity
|
||||
|
||||
import (
|
||||
"context"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
@ -978,8 +977,8 @@ func TestPreferredAffinityWithHardPodAffinitySymmetricWeight(t *testing.T) {
|
||||
t.Errorf("unexpected error: %v", status)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(test.expectedList, gotList) {
|
||||
t.Errorf("expected:\n\t%+v,\ngot:\n\t%+v", test.expectedList, gotList)
|
||||
if diff := cmp.Diff(test.expectedList, gotList); diff != "" {
|
||||
t.Errorf("unexpected NodeScoreList (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -17,9 +17,10 @@ limitations under the License.
|
||||
package nodename
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature"
|
||||
@ -62,8 +63,8 @@ func TestNodeName(t *testing.T) {
|
||||
t.Fatalf("creating plugin: %v", err)
|
||||
}
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, nil, test.pod, nodeInfo)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ package nodeports
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
@ -183,9 +182,9 @@ func TestPreFilterDisabled(t *testing.T) {
|
||||
}
|
||||
cycleState := framework.NewCycleState()
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, cycleState, pod, nodeInfo)
|
||||
wantStatus := framework.AsStatus(fmt.Errorf(`reading "PreFilterNodePorts" from cycleState: %w`, framework.ErrNotFound))
|
||||
if !reflect.DeepEqual(gotStatus, wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, wantStatus)
|
||||
wantStatus := framework.AsStatus(framework.ErrNotFound)
|
||||
if diff := cmp.Diff(wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,9 +18,9 @@ package noderesources
|
||||
|
||||
import (
|
||||
"context"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@ -403,8 +403,8 @@ func TestNodeResourcesBalancedAllocation(t *testing.T) {
|
||||
if !status.IsSuccess() {
|
||||
t.Errorf("Score is expected to return success, but didn't. Got status: %v", status)
|
||||
}
|
||||
if !reflect.DeepEqual(test.expectedList[i].Score, hostResult) {
|
||||
t.Errorf("got score %v for host %v, expected %v", hostResult, test.nodes[i].Name, test.expectedList[i].Score)
|
||||
if diff := cmp.Diff(test.expectedList[i].Score, hostResult); diff != "" {
|
||||
t.Errorf("unexpected score for host %v (-want,+got):\n%s", test.nodes[i].Name, diff)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -19,7 +19,6 @@ package noderesources
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
@ -48,6 +47,10 @@ var (
|
||||
hugePageResourceA = v1.ResourceName(v1.ResourceHugePagesPrefix + "2Mi")
|
||||
)
|
||||
|
||||
var clusterEventCmpOpts = []cmp.Option{
|
||||
cmpopts.EquateComparable(framework.ClusterEvent{}),
|
||||
}
|
||||
|
||||
func makeResources(milliCPU, memory, pods, extendedA, storage, hugePageA int64) v1.ResourceList {
|
||||
return v1.ResourceList{
|
||||
v1.ResourceCPU: *resource.NewMilliQuantity(milliCPU, resource.DecimalSI),
|
||||
@ -584,13 +587,13 @@ func TestEnoughRequests(t *testing.T) {
|
||||
}
|
||||
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, cycleState, test.pod, test.nodeInfo)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
|
||||
gotInsufficientResources := fitsRequest(computePodResourceRequest(test.pod, ResourceRequestsOptions{EnablePodLevelResources: test.podLevelResourcesEnabled}), test.nodeInfo, p.(*Fit).ignoredResources, p.(*Fit).ignoredResourceGroups)
|
||||
if !reflect.DeepEqual(gotInsufficientResources, test.wantInsufficientResources) {
|
||||
t.Errorf("insufficient resources do not match: %+v, want: %v", gotInsufficientResources, test.wantInsufficientResources)
|
||||
if diff := cmp.Diff(test.wantInsufficientResources, gotInsufficientResources); diff != "" {
|
||||
t.Errorf("insufficient resources do not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -610,9 +613,9 @@ func TestPreFilterDisabled(t *testing.T) {
|
||||
}
|
||||
cycleState := framework.NewCycleState()
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, cycleState, pod, nodeInfo)
|
||||
wantStatus := framework.AsStatus(fmt.Errorf(`error reading "PreFilterNodeResourcesFit" from cycleState: %w`, framework.ErrNotFound))
|
||||
if !reflect.DeepEqual(gotStatus, wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, wantStatus)
|
||||
wantStatus := framework.AsStatus(framework.ErrNotFound)
|
||||
if diff := cmp.Diff(wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -668,8 +671,8 @@ func TestNotEnoughRequests(t *testing.T) {
|
||||
}
|
||||
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, cycleState, test.pod, test.nodeInfo)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -729,8 +732,8 @@ func TestStorageRequests(t *testing.T) {
|
||||
}
|
||||
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, cycleState, test.pod, test.nodeInfo)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1110,7 +1113,7 @@ func TestFitScore(t *testing.T) {
|
||||
gotPriorities = append(gotPriorities, framework.NodeScore{Name: n.Name, Score: score})
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(test.expectedPriorities, gotPriorities) {
|
||||
if diff := cmp.Diff(test.expectedPriorities, gotPriorities); diff != "" {
|
||||
t.Errorf("expected:\n\t%+v,\ngot:\n\t%+v", test.expectedPriorities, gotPriorities)
|
||||
}
|
||||
})
|
||||
@ -1276,7 +1279,7 @@ func TestEventsToRegister(t *testing.T) {
|
||||
for i := range actualClusterEvents {
|
||||
actualClusterEvents[i].QueueingHintFn = nil
|
||||
}
|
||||
if diff := cmp.Diff(test.expectedClusterEvents, actualClusterEvents, cmpopts.EquateComparable(framework.ClusterEvent{})); diff != "" {
|
||||
if diff := cmp.Diff(test.expectedClusterEvents, actualClusterEvents, clusterEventCmpOpts...); diff != "" {
|
||||
t.Error("Cluster Events doesn't match extected events (-expected +actual):\n", diff)
|
||||
}
|
||||
})
|
||||
|
@ -17,9 +17,10 @@ limitations under the License.
|
||||
package nodeunschedulable
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework"
|
||||
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature"
|
||||
@ -82,8 +83,8 @@ func TestNodeUnschedulable(t *testing.T) {
|
||||
t.Fatalf("creating plugin: %v", err)
|
||||
}
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, nil, test.pod, nodeInfo)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ package nodevolumelimits
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
@ -50,6 +49,18 @@ var (
|
||||
scName = "csi-sc"
|
||||
)
|
||||
|
||||
var statusCmpOpts = []cmp.Option{
|
||||
cmp.Comparer(func(s1 *framework.Status, s2 *framework.Status) bool {
|
||||
if s1 == nil || s2 == nil {
|
||||
return s1.IsSuccess() && s2.IsSuccess()
|
||||
}
|
||||
if s1.Code() == framework.Error {
|
||||
return s1.AsError().Error() == s2.AsError().Error()
|
||||
}
|
||||
return s1.Code() == s2.Code() && s1.Plugin() == s2.Plugin() && s1.Message() == s2.Message()
|
||||
}),
|
||||
}
|
||||
|
||||
func TestCSILimits(t *testing.T) {
|
||||
runningPod := st.MakePod().PVC("csi-ebs.csi.aws.com-3").Obj()
|
||||
pendingVolumePod := st.MakePod().PVC("csi-4").Obj()
|
||||
@ -637,13 +648,13 @@ func TestCSILimits(t *testing.T) {
|
||||
}
|
||||
_, ctx := ktesting.NewTestContext(t)
|
||||
_, gotPreFilterStatus := p.PreFilter(ctx, nil, test.newPod)
|
||||
if diff := cmp.Diff(test.wantPreFilterStatus, gotPreFilterStatus); diff != "" {
|
||||
t.Errorf("PreFilter status does not match (-want, +got): %s", diff)
|
||||
if diff := cmp.Diff(test.wantPreFilterStatus, gotPreFilterStatus, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("PreFilter status does not match (-want, +got):\n%s", diff)
|
||||
}
|
||||
if gotPreFilterStatus.Code() != framework.Skip {
|
||||
gotStatus := p.Filter(ctx, nil, test.newPod, node)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("Filter status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Filter status does not match (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -18,9 +18,7 @@ package podtopologyspread
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"math"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
@ -41,11 +39,14 @@ import (
|
||||
"k8s.io/utils/ptr"
|
||||
)
|
||||
|
||||
var cmpOpts = []cmp.Option{
|
||||
cmp.Comparer(func(s1 labels.Selector, s2 labels.Selector) bool {
|
||||
return reflect.DeepEqual(s1, s2)
|
||||
}),
|
||||
var stateCmpOpts = []cmp.Option{
|
||||
cmp.Comparer(func(p1, p2 criticalPaths) bool {
|
||||
// Before comparing p1 and p2 we need to make sure that TopologyValues
|
||||
// paired with the same MatchNum values are sorted alphabetically.
|
||||
// It's not possible to substitute this sorting with calling cmpopts.SortSlices()
|
||||
// instead, because the lessFn in SortSlices would not modify the actual
|
||||
// criticalPaths objects, and the default comparer function would still
|
||||
// operate on "unsorted" TopologyValue fields.
|
||||
p1.sort()
|
||||
p2.sort()
|
||||
return p1[0] == p2[0] && p1[1] == p2[1]
|
||||
@ -1504,7 +1505,7 @@ func TestPreFilterState(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("failed to get PreFilterState from cyclestate: %v", err)
|
||||
}
|
||||
if diff := cmp.Diff(tt.want, got, cmpOpts...); diff != "" {
|
||||
if diff := cmp.Diff(tt.want, got, stateCmpOpts...); diff != "" {
|
||||
t.Errorf("PodTopologySpread#PreFilter() returned unexpected prefilter status: diff (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
@ -1999,7 +2000,7 @@ func TestPreFilterStateAddPod(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if diff := cmp.Diff(tt.want, state, cmpOpts...); diff != "" {
|
||||
if diff := cmp.Diff(tt.want, state, stateCmpOpts...); diff != "" {
|
||||
t.Errorf("PodTopologySpread.AddPod() returned diff (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
@ -2307,7 +2308,7 @@ func TestPreFilterStateRemovePod(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if diff := cmp.Diff(tt.want, state, cmpOpts...); diff != "" {
|
||||
if diff := cmp.Diff(tt.want, state, stateCmpOpts...); diff != "" {
|
||||
t.Errorf("PodTopologySpread.RemovePod() returned diff (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
@ -3415,9 +3416,9 @@ func TestPreFilterDisabled(t *testing.T) {
|
||||
p := plugintesting.SetupPlugin(ctx, t, topologySpreadFunc, &config.PodTopologySpreadArgs{DefaultingType: config.ListDefaulting}, cache.NewEmptySnapshot())
|
||||
cycleState := framework.NewCycleState()
|
||||
gotStatus := p.(*PodTopologySpread).Filter(ctx, cycleState, pod, nodeInfo)
|
||||
wantStatus := framework.AsStatus(fmt.Errorf(`reading "PreFilterPodTopologySpread" from cycleState: %w`, framework.ErrNotFound))
|
||||
if !reflect.DeepEqual(gotStatus, wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, wantStatus)
|
||||
wantStatus := framework.AsStatus(framework.ErrNotFound)
|
||||
if diff := cmp.Diff(wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("Status does not match (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -612,7 +612,7 @@ func TestPreScoreStateEmptyNodes(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if diff := cmp.Diff(tt.want, got, cmpOpts...); diff != "" {
|
||||
if diff := cmp.Diff(tt.want, got, stateCmpOpts...); diff != "" {
|
||||
t.Errorf("PodTopologySpread#PreScore() returned (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
@ -1407,7 +1407,7 @@ func TestPodTopologySpreadScore(t *testing.T) {
|
||||
if !status.IsSuccess() {
|
||||
t.Errorf("unexpected error: %v", status)
|
||||
}
|
||||
if diff := cmp.Diff(tt.want, gotList, cmpOpts...); diff != "" {
|
||||
if diff := cmp.Diff(tt.want, gotList); diff != "" {
|
||||
t.Errorf("unexpected scores (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
|
@ -18,7 +18,6 @@ package tainttoleration
|
||||
|
||||
import (
|
||||
"context"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
@ -263,8 +262,8 @@ func TestTaintTolerationScore(t *testing.T) {
|
||||
t.Errorf("unexpected error: %v", status)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(test.expectedList, gotList) {
|
||||
t.Errorf("expected:\n\t%+v,\ngot:\n\t%+v", test.expectedList, gotList)
|
||||
if diff := cmp.Diff(test.expectedList, gotList); diff != "" {
|
||||
t.Errorf("Unexpected NodeScoreList (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -349,8 +348,8 @@ func TestTaintTolerationFilter(t *testing.T) {
|
||||
t.Fatalf("creating plugin: %v", err)
|
||||
}
|
||||
gotStatus := p.(framework.FilterPlugin).Filter(ctx, nil, test.pod, nodeInfo)
|
||||
if !reflect.DeepEqual(gotStatus, test.wantStatus) {
|
||||
t.Errorf("status does not match: %v, want: %v", gotStatus, test.wantStatus)
|
||||
if diff := cmp.Diff(test.wantStatus, gotStatus); diff != "" {
|
||||
t.Errorf("Unexpected status (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
@ -754,8 +753,8 @@ func TestPrepareCandidate(t *testing.T) {
|
||||
}
|
||||
|
||||
if asyncPreemptionEnabled {
|
||||
if tt.expectedActivatedPods != nil && !reflect.DeepEqual(tt.expectedActivatedPods, fakeActivator.activatedPods) {
|
||||
lastErrMsg = fmt.Sprintf("expected activated pods %v, got %v", tt.expectedActivatedPods, fakeActivator.activatedPods)
|
||||
if diff := cmp.Diff(tt.expectedActivatedPods, fakeActivator.activatedPods); tt.expectedActivatedPods != nil && diff != "" {
|
||||
lastErrMsg = fmt.Sprintf("Unexpected activated pods (-want,+got):\n%s", diff)
|
||||
return false, nil
|
||||
}
|
||||
if tt.expectedActivatedPods == nil && len(fakeActivator.activatedPods) != 0 {
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@ -72,11 +71,14 @@ const (
|
||||
var _ framework.ScorePlugin = &TestScoreWithNormalizePlugin{}
|
||||
var _ framework.ScorePlugin = &TestScorePlugin{}
|
||||
|
||||
var cmpOpts = []cmp.Option{
|
||||
var statusCmpOpts = []cmp.Option{
|
||||
cmp.Comparer(func(s1 *framework.Status, s2 *framework.Status) bool {
|
||||
if s1 == nil || s2 == nil {
|
||||
return s1.IsSuccess() && s2.IsSuccess()
|
||||
}
|
||||
if s1.Code() == framework.Error {
|
||||
return s1.AsError().Error() == s2.AsError().Error()
|
||||
}
|
||||
return s1.Code() == s2.Code() && s1.Plugin() == s2.Plugin() && s1.Message() == s2.Message()
|
||||
}),
|
||||
}
|
||||
@ -924,7 +926,7 @@ func TestNewFrameworkMultiPointExpansion(t *testing.T) {
|
||||
}
|
||||
if tc.wantErr == "" {
|
||||
if diff := cmp.Diff(tc.wantPlugins, fw.ListPlugins()); diff != "" {
|
||||
t.Fatalf("Unexpected eventToPlugin map (-want,+got):%s", diff)
|
||||
t.Fatalf("Unexpected eventToPlugin map (-want,+got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -982,8 +984,8 @@ func TestPreEnqueuePlugins(t *testing.T) {
|
||||
_ = f.Close()
|
||||
}()
|
||||
got := f.PreEnqueuePlugins()
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("PreEnqueuePlugins(): want %v, but got %v", tt.want, got)
|
||||
if diff := cmp.Diff(tt.want, got); diff != "" {
|
||||
t.Errorf("Unexpected PreEnqueuePlugins(): (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1113,8 +1115,8 @@ func TestRunPreScorePlugins(t *testing.T) {
|
||||
t.Errorf("wrong status code. got: %v, want: %v", status, tt.wantStatusCode)
|
||||
}
|
||||
skipped := state.SkipScorePlugins
|
||||
if d := cmp.Diff(skipped, tt.wantSkippedPlugins); d != "" {
|
||||
t.Errorf("wrong skip score plugins. got: %v, want: %v, diff: %s", skipped, tt.wantSkippedPlugins, d)
|
||||
if diff := cmp.Diff(tt.wantSkippedPlugins, skipped); diff != "" {
|
||||
t.Errorf("wrong skip score plugins (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1519,8 +1521,8 @@ func TestRunScorePlugins(t *testing.T) {
|
||||
if !status.IsSuccess() {
|
||||
t.Errorf("Expected status to be success.")
|
||||
}
|
||||
if !reflect.DeepEqual(res, tt.want) {
|
||||
t.Errorf("Score map after RunScorePlugin. got: %+v, want: %+v.", res, tt.want)
|
||||
if diff := cmp.Diff(tt.want, res); diff != "" {
|
||||
t.Errorf("Score map after RunScorePlugin (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1747,15 +1749,15 @@ func TestRunPreFilterPlugins(t *testing.T) {
|
||||
|
||||
state := framework.NewCycleState()
|
||||
result, status, _ := f.RunPreFilterPlugins(ctx, state, nil)
|
||||
if d := cmp.Diff(result, tt.wantPreFilterResult); d != "" {
|
||||
t.Errorf("wrong status. got: %v, want: %v, diff: %s", result, tt.wantPreFilterResult, d)
|
||||
if diff := cmp.Diff(tt.wantPreFilterResult, result); diff != "" {
|
||||
t.Errorf("wrong status (-want,+got):\n%s", diff)
|
||||
}
|
||||
if status.Code() != tt.wantStatusCode {
|
||||
t.Errorf("wrong status code. got: %v, want: %v", status, tt.wantStatusCode)
|
||||
}
|
||||
skipped := state.SkipFilterPlugins
|
||||
if d := cmp.Diff(skipped, tt.wantSkippedPlugins); d != "" {
|
||||
t.Errorf("wrong skip filter plugins. got: %v, want: %v, diff: %s", skipped, tt.wantSkippedPlugins, d)
|
||||
if diff := cmp.Diff(tt.wantSkippedPlugins, skipped); diff != "" {
|
||||
t.Errorf("wrong skip filter plugins (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2136,8 +2138,8 @@ func TestFilterPlugins(t *testing.T) {
|
||||
state := framework.NewCycleState()
|
||||
state.SkipFilterPlugins = tt.skippedPlugins
|
||||
gotStatus := f.RunFilterPlugins(ctx, state, pod, nil)
|
||||
if diff := cmp.Diff(gotStatus, tt.wantStatus, cmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected status: (-got, +want):\n%s", diff)
|
||||
if diff := cmp.Diff(tt.wantStatus, gotStatus, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected status: (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2262,8 +2264,9 @@ func TestPostFilterPlugins(t *testing.T) {
|
||||
_ = f.Close()
|
||||
}()
|
||||
_, gotStatus := f.RunPostFilterPlugins(ctx, nil, pod, nil)
|
||||
if !reflect.DeepEqual(gotStatus, tt.wantStatus) {
|
||||
t.Errorf("Unexpected status. got: %v, want: %v", gotStatus, tt.wantStatus)
|
||||
|
||||
if diff := cmp.Diff(tt.wantStatus, gotStatus, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected status (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2430,8 +2433,8 @@ func TestFilterPluginsWithNominatedPods(t *testing.T) {
|
||||
}()
|
||||
tt.nodeInfo.SetNode(tt.node)
|
||||
gotStatus := f.RunFilterPluginsWithNominatedPods(ctx, framework.NewCycleState(), tt.pod, tt.nodeInfo)
|
||||
if diff := cmp.Diff(gotStatus, tt.wantStatus, cmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected status: (-got, +want):\n%s", diff)
|
||||
if diff := cmp.Diff(tt.wantStatus, gotStatus, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected status: (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2592,8 +2595,8 @@ func TestPreBindPlugins(t *testing.T) {
|
||||
|
||||
status := f.RunPreBindPlugins(ctx, nil, pod, "")
|
||||
|
||||
if !reflect.DeepEqual(status, tt.wantStatus) {
|
||||
t.Errorf("wrong status code. got %v, want %v", status, tt.wantStatus)
|
||||
if diff := cmp.Diff(tt.wantStatus, status, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Wrong status code (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2754,8 +2757,8 @@ func TestReservePlugins(t *testing.T) {
|
||||
|
||||
status := f.RunReservePluginsReserve(ctx, nil, pod, "")
|
||||
|
||||
if !reflect.DeepEqual(status, tt.wantStatus) {
|
||||
t.Errorf("wrong status code. got %v, want %v", status, tt.wantStatus)
|
||||
if diff := cmp.Diff(tt.wantStatus, status, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Wrong status code (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2885,8 +2888,8 @@ func TestPermitPlugins(t *testing.T) {
|
||||
}
|
||||
|
||||
status := f.RunPermitPlugins(ctx, nil, pod, "")
|
||||
if !reflect.DeepEqual(status, tt.want) {
|
||||
t.Errorf("wrong status code. got %v, want %v", status, tt.want)
|
||||
if diff := cmp.Diff(tt.want, status, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Wrong status code (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -3320,8 +3323,8 @@ func TestWaitOnPermit(t *testing.T) {
|
||||
go tt.action(f)
|
||||
|
||||
got := f.WaitOnPermit(ctx, pod)
|
||||
if !reflect.DeepEqual(tt.want, got) {
|
||||
t.Errorf("Unexpected status: want %v, but got %v", tt.want, got)
|
||||
if diff := cmp.Diff(tt.want, got, statusCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected status (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -3369,7 +3372,7 @@ func TestListPlugins(t *testing.T) {
|
||||
}()
|
||||
got := f.ListPlugins()
|
||||
if diff := cmp.Diff(tt.want, got); diff != "" {
|
||||
t.Errorf("unexpected plugins (-want,+got):\n%s", diff)
|
||||
t.Errorf("Unexpected plugins (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ package runtime
|
||||
|
||||
import (
|
||||
"context"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/uuid"
|
||||
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
@ -66,9 +66,8 @@ func TestDecodeInto(t *testing.T) {
|
||||
if err := DecodeInto(test.args, &pluginFooConf); err != nil {
|
||||
t.Errorf("DecodeInto(): failed to decode args %+v: %v", test.args, err)
|
||||
}
|
||||
if !reflect.DeepEqual(test.expected, pluginFooConf) {
|
||||
t.Errorf("DecodeInto(): failed to decode plugin config, expected: %+v, got: %+v",
|
||||
test.expected, pluginFooConf)
|
||||
if diff := cmp.Diff(test.expected, pluginFooConf); diff != "" {
|
||||
t.Errorf("DecodeInto(): failed to decode plugin config (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ package framework
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
@ -39,6 +38,10 @@ import (
|
||||
"k8s.io/kubernetes/test/utils/ktesting/initoption"
|
||||
)
|
||||
|
||||
var nodeInfoCmpOpts = []cmp.Option{
|
||||
cmp.AllowUnexported(NodeInfo{}, PodInfo{}, podResource{}),
|
||||
}
|
||||
|
||||
func TestNewResource(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
@ -73,8 +76,8 @@ func TestNewResource(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
r := NewResource(test.resourceList)
|
||||
if !reflect.DeepEqual(test.expected, r) {
|
||||
t.Errorf("expected: %#v, got: %#v", test.expected, r)
|
||||
if diff := cmp.Diff(test.expected, r); diff != "" {
|
||||
t.Errorf("Unexpected resource (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -112,8 +115,8 @@ func TestResourceClone(t *testing.T) {
|
||||
r := test.resource.Clone()
|
||||
// Modify the field to check if the result is a clone of the origin one.
|
||||
test.resource.MilliCPU += 1000
|
||||
if !reflect.DeepEqual(test.expected, r) {
|
||||
t.Errorf("expected: %#v, got: %#v", test.expected, r)
|
||||
if diff := cmp.Diff(test.expected, r); diff != "" {
|
||||
t.Errorf("Unexpected resource (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -157,8 +160,8 @@ func TestResourceAddScalar(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
t.Run(string(test.scalarName), func(t *testing.T) {
|
||||
test.resource.AddScalar(test.scalarName, test.scalarQuantity)
|
||||
if !reflect.DeepEqual(test.expected, test.resource) {
|
||||
t.Errorf("expected: %#v, got: %#v", test.expected, test.resource)
|
||||
if diff := cmp.Diff(test.expected, test.resource); diff != "" {
|
||||
t.Errorf("Unexpected resource (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -209,8 +212,8 @@ func TestSetMaxResource(t *testing.T) {
|
||||
for i, test := range tests {
|
||||
t.Run(fmt.Sprintf("case_%d", i), func(t *testing.T) {
|
||||
test.resource.SetMaxResource(test.resourceList)
|
||||
if !reflect.DeepEqual(test.expected, test.resource) {
|
||||
t.Errorf("expected: %#v, got: %#v", test.expected, test.resource)
|
||||
if diff := cmp.Diff(test.expected, test.resource); diff != "" {
|
||||
t.Errorf("Unexpected resource (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -351,8 +354,8 @@ func TestNewNodeInfo(t *testing.T) {
|
||||
t.Errorf("Generation is not incremented. previous: %v, current: %v", gen, ni.Generation)
|
||||
}
|
||||
expected.Generation = ni.Generation
|
||||
if !reflect.DeepEqual(expected, ni) {
|
||||
t.Errorf("expected: %#v, got: %#v", expected, ni)
|
||||
if diff := cmp.Diff(expected, ni, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected NodeInfo (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -552,8 +555,8 @@ func TestNodeInfoClone(t *testing.T) {
|
||||
// Modify the field to check if the result is a clone of the origin one.
|
||||
test.nodeInfo.Generation += 10
|
||||
test.nodeInfo.UsedPorts.Remove("127.0.0.1", "TCP", 80)
|
||||
if !reflect.DeepEqual(test.expected, ni) {
|
||||
t.Errorf("expected: %#v, got: %#v", test.expected, ni)
|
||||
if diff := cmp.Diff(test.expected, ni, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected NodeInfo (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -892,8 +895,8 @@ func TestNodeInfoAddPod(t *testing.T) {
|
||||
}
|
||||
|
||||
expected.Generation = ni.Generation
|
||||
if diff := cmp.Diff(expected, ni, cmp.AllowUnexported(NodeInfo{}, PodInfo{}, podResource{})); diff != "" {
|
||||
t.Errorf("unexpected diff (-want, +got):\n%s", diff)
|
||||
if diff := cmp.Diff(expected, ni, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected NodeInfo (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -1206,8 +1209,8 @@ func TestNodeInfoRemovePod(t *testing.T) {
|
||||
}
|
||||
|
||||
test.expectedNodeInfo.Generation = ni.Generation
|
||||
if !reflect.DeepEqual(test.expectedNodeInfo, ni) {
|
||||
t.Errorf("expected: %#v, got: %#v", test.expectedNodeInfo, ni)
|
||||
if diff := cmp.Diff(test.expectedNodeInfo, ni, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected NodeInfo (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1473,7 +1476,7 @@ func TestGetNamespacesFromPodAffinityTerm(t *testing.T) {
|
||||
},
|
||||
}, test.term)
|
||||
if diff := cmp.Diff(test.want, got); diff != "" {
|
||||
t.Errorf("unexpected diff (-want, +got):\n%s", diff)
|
||||
t.Errorf("Unexpected namespaces (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -1867,8 +1870,8 @@ func TestPodInfoCalculateResources(t *testing.T) {
|
||||
},
|
||||
}
|
||||
res := podInfo.calculateResource()
|
||||
if !reflect.DeepEqual(tc.expectedResource, res) {
|
||||
t.Errorf("Test: %s expected resource: %+v, got: %+v", tc.name, tc.expectedResource, res.resource)
|
||||
if diff := cmp.Diff(tc.expectedResource, res, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected resource (-want,+got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -2065,8 +2068,8 @@ func TestCalculatePodResourcesWithResize(t *testing.T) {
|
||||
tt.resizeStatus)
|
||||
|
||||
res := podInfo.calculateResource()
|
||||
if !reflect.DeepEqual(tt.expectedResource, res) {
|
||||
t.Errorf("Test: %s expected resource: %+v, got: %+v", tt.name, tt.expectedResource, res.resource)
|
||||
if diff := cmp.Diff(tt.expectedResource, res, nodeInfoCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected podResource (-want, +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand"
|
||||
"reflect"
|
||||
"regexp"
|
||||
goruntime "runtime"
|
||||
"sort"
|
||||
@ -32,7 +31,6 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
eventsv1 "k8s.io/api/events/v1"
|
||||
@ -86,6 +84,9 @@ var (
|
||||
emptySnapshot = internalcache.NewEmptySnapshot()
|
||||
podTopologySpreadFunc = frameworkruntime.FactoryAdapter(feature.Features{}, podtopologyspread.New)
|
||||
errPrioritize = fmt.Errorf("priority map encounters an error")
|
||||
schedulerCmpOpts = []cmp.Option{
|
||||
cmp.AllowUnexported(framework.NodeToStatus{}),
|
||||
}
|
||||
)
|
||||
|
||||
type mockScheduleResult struct {
|
||||
@ -387,7 +388,7 @@ func nodeToStatusDiff(want, got *framework.NodeToStatus) string {
|
||||
if want == nil || got == nil {
|
||||
return cmp.Diff(want, got)
|
||||
}
|
||||
return cmp.Diff(*want, *got, cmp.AllowUnexported(framework.NodeToStatus{}))
|
||||
return cmp.Diff(*want, *got, schedulerCmpOpts...)
|
||||
}
|
||||
|
||||
func TestSchedulerMultipleProfilesScheduling(t *testing.T) {
|
||||
@ -837,20 +838,24 @@ func TestSchedulerScheduleOne(t *testing.T) {
|
||||
}
|
||||
sched.ScheduleOne(ctx)
|
||||
<-called
|
||||
if e, a := item.expectAssumedPod, gotAssumedPod; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("assumed pod: wanted %v, got %v", e, a)
|
||||
if diff := cmp.Diff(item.expectAssumedPod, gotAssumedPod); diff != "" {
|
||||
t.Errorf("Unexpected assumed pod (-want,+got):\n%s", diff)
|
||||
}
|
||||
if e, a := item.expectErrorPod, gotPod; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("error pod: wanted %v, got %v", e, a)
|
||||
if diff := cmp.Diff(item.expectErrorPod, gotPod); diff != "" {
|
||||
t.Errorf("Unexpected error pod (-want,+got):\n%s", diff)
|
||||
}
|
||||
if e, a := item.expectForgetPod, gotForgetPod; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("forget pod: wanted %v, got %v", e, a)
|
||||
if diff := cmp.Diff(item.expectForgetPod, gotForgetPod); diff != "" {
|
||||
t.Errorf("Unexpected forget pod (-want,+got):\n%s", diff)
|
||||
}
|
||||
if e, a := item.expectError, gotError; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("error: wanted %v, got %v", e, a)
|
||||
if item.expectError == nil || gotError == nil {
|
||||
if !errors.Is(gotError, item.expectError) {
|
||||
t.Errorf("Unexpected error. Wanted %v, got %v", item.expectError, gotError)
|
||||
}
|
||||
} else if item.expectError.Error() != gotError.Error() {
|
||||
t.Errorf("Unexpected error. Wanted %v, got %v", item.expectError.Error(), gotError.Error())
|
||||
}
|
||||
if diff := cmp.Diff(item.expectBind, gotBinding); diff != "" {
|
||||
t.Errorf("got binding diff (-want, +got): %s", diff)
|
||||
t.Errorf("Unexpected binding (-want,+got):\n%s", diff)
|
||||
}
|
||||
// We have to use wait here
|
||||
// because the Pod goes to the binding cycle in some test cases and the inflight pods might not be empty immediately at this point in such case.
|
||||
@ -923,8 +928,8 @@ func TestSchedulerNoPhantomPodAfterExpire(t *testing.T) {
|
||||
ObjectMeta: metav1.ObjectMeta{Name: "bar", UID: types.UID("bar")},
|
||||
Target: v1.ObjectReference{Kind: "Node", Name: node.Name},
|
||||
}
|
||||
if !reflect.DeepEqual(expectBinding, b) {
|
||||
t.Errorf("binding want=%v, get=%v", expectBinding, b)
|
||||
if diff := cmp.Diff(expectBinding, b); diff != "" {
|
||||
t.Errorf("Unexpected binding (-want,+got):\n%s", diff)
|
||||
}
|
||||
case <-time.After(wait.ForeverTestTimeout):
|
||||
t.Fatalf("timeout in binding after %v", wait.ForeverTestTimeout)
|
||||
@ -966,8 +971,10 @@ func TestSchedulerNoPhantomPodAfterDelete(t *testing.T) {
|
||||
UnschedulablePlugins: sets.New(nodeports.Name),
|
||||
},
|
||||
}
|
||||
if !reflect.DeepEqual(expectErr, err) {
|
||||
t.Errorf("err want=%v, get=%v", expectErr, err)
|
||||
if err == nil {
|
||||
t.Errorf("expected error %v, got nil", expectErr)
|
||||
} else if diff := cmp.Diff(expectErr, err, schedulerCmpOpts...); diff != "" {
|
||||
t.Errorf("unexpected error (-want,+got):\n%s", diff)
|
||||
}
|
||||
case <-time.After(wait.ForeverTestTimeout):
|
||||
t.Fatalf("timeout in fitting after %v", wait.ForeverTestTimeout)
|
||||
@ -993,8 +1000,8 @@ func TestSchedulerNoPhantomPodAfterDelete(t *testing.T) {
|
||||
ObjectMeta: metav1.ObjectMeta{Name: "bar", UID: types.UID("bar")},
|
||||
Target: v1.ObjectReference{Kind: "Node", Name: node.Name},
|
||||
}
|
||||
if !reflect.DeepEqual(expectBinding, b) {
|
||||
t.Errorf("binding want=%v, get=%v", expectBinding, b)
|
||||
if diff := cmp.Diff(expectBinding, b); diff != "" {
|
||||
t.Errorf("unexpected binding (-want,+got):\n%s", diff)
|
||||
}
|
||||
case <-time.After(wait.ForeverTestTimeout):
|
||||
t.Fatalf("timeout in binding after %v", wait.ForeverTestTimeout)
|
||||
@ -1076,8 +1083,8 @@ func TestSchedulerFailedSchedulingReasons(t *testing.T) {
|
||||
if len(fmt.Sprint(expectErr)) > 150 {
|
||||
t.Errorf("message is too spammy ! %v ", len(fmt.Sprint(expectErr)))
|
||||
}
|
||||
if !reflect.DeepEqual(expectErr, err) {
|
||||
t.Errorf("\n err \nWANT=%+v,\nGOT=%+v", expectErr, err)
|
||||
if diff := cmp.Diff(expectErr, err, schedulerCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected error (-want,+got):\n%s", diff)
|
||||
}
|
||||
case <-time.After(wait.ForeverTestTimeout):
|
||||
t.Fatalf("timeout after %v", wait.ForeverTestTimeout)
|
||||
@ -2661,11 +2668,11 @@ func TestSchedulerSchedulePod(t *testing.T) {
|
||||
if gotOK != wantOK {
|
||||
t.Errorf("Expected err to be FitError: %v, but got %v (error: %v)", wantOK, gotOK, err)
|
||||
} else if gotOK {
|
||||
if diff := cmp.Diff(wantFitErr, gotFitErr, cmpopts.IgnoreFields(framework.Diagnosis{}, "NodeToStatus")); diff != "" {
|
||||
t.Errorf("Unexpected fitErr for map: (-want, +got): %s", diff)
|
||||
if diff := cmp.Diff(wantFitErr, gotFitErr, schedulerCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected fitErr for map (-want, +got):\n%s", diff)
|
||||
}
|
||||
if diff := nodeToStatusDiff(wantFitErr.Diagnosis.NodeToStatus, gotFitErr.Diagnosis.NodeToStatus); diff != "" {
|
||||
t.Errorf("Unexpected nodeToStatus within fitErr for map: (-want, +got): %s", diff)
|
||||
t.Errorf("Unexpected nodeToStatus within fitErr for map: (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2719,11 +2726,11 @@ func TestFindFitAllError(t *testing.T) {
|
||||
}, framework.NewStatus(framework.UnschedulableAndUnresolvable)),
|
||||
UnschedulablePlugins: sets.New("MatchFilter"),
|
||||
}
|
||||
if diff := cmp.Diff(diagnosis, expected, cmpopts.IgnoreFields(framework.Diagnosis{}, "NodeToStatus")); diff != "" {
|
||||
t.Errorf("Unexpected diagnosis: (-want, +got): %s", diff)
|
||||
if diff := cmp.Diff(expected, diagnosis, schedulerCmpOpts...); diff != "" {
|
||||
t.Errorf("Unexpected diagnosis (-want, +got):\n%s", diff)
|
||||
}
|
||||
if diff := nodeToStatusDiff(diagnosis.NodeToStatus, expected.NodeToStatus); diff != "" {
|
||||
t.Errorf("Unexpected nodeToStatus within diagnosis: (-want, +got): %s", diff)
|
||||
if diff := nodeToStatusDiff(expected.NodeToStatus, diagnosis.NodeToStatus); diff != "" {
|
||||
t.Errorf("Unexpected nodeToStatus within diagnosis: (-want, +got):\n%s", diff)
|
||||
}
|
||||
}
|
||||
|
||||
@ -2761,7 +2768,7 @@ func TestFindFitSomeError(t *testing.T) {
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(sets.New("MatchFilter"), diagnosis.UnschedulablePlugins); diff != "" {
|
||||
t.Errorf("Unexpected unschedulablePlugins: (-want, +got): %s", diagnosis.UnschedulablePlugins)
|
||||
t.Errorf("Unexpected unschedulablePlugins: (-want, +got):\n%s", diff)
|
||||
}
|
||||
|
||||
for _, node := range nodes {
|
||||
@ -3692,8 +3699,8 @@ func setupTestSchedulerWithOnePodOnNode(ctx context.Context, t *testing.T, queue
|
||||
ObjectMeta: metav1.ObjectMeta{Name: pod.Name, UID: types.UID(pod.Name)},
|
||||
Target: v1.ObjectReference{Kind: "Node", Name: node.Name},
|
||||
}
|
||||
if !reflect.DeepEqual(expectBinding, b) {
|
||||
t.Errorf("binding want=%v, get=%v", expectBinding, b)
|
||||
if diff := cmp.Diff(expectBinding, b); diff != "" {
|
||||
t.Errorf("Unexpected binding (-want,+got):\n%s", diff)
|
||||
}
|
||||
case <-time.After(wait.ForeverTestTimeout):
|
||||
t.Fatalf("timeout after %v", wait.ForeverTestTimeout)
|
||||
|
Loading…
Reference in New Issue
Block a user