Skip to content

Commit e26da09

Browse files
committed
Fix panic in topology tests
k8s.io/apimachinery can be used to compare API objects, but it panics on protobuf messages. Use a generic cmp.Equal, with protobuf hints.
1 parent 1416604 commit e26da09

File tree

12 files changed

+2352
-5
lines changed

12 files changed

+2352
-5
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ require (
3131
)
3232

3333
require (
34+
github.com/google/go-cmp v0.6.0
3435
github.com/onsi/ginkgo/v2 v2.20.0
3536
github.com/onsi/gomega v1.34.1
3637
k8s.io/kubernetes v1.31.0
@@ -65,7 +66,6 @@ require (
6566
github.com/golang/protobuf v1.5.4 // indirect
6667
github.com/google/cel-go v0.20.1 // indirect
6768
github.com/google/gnostic-models v0.6.8 // indirect
68-
github.com/google/go-cmp v0.6.0 // indirect
6969
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
7070
github.com/gorilla/websocket v1.5.3 // indirect
7171
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect

pkg/controller/topology_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ import (
2121
"testing"
2222

2323
"github.com/container-storage-interface/spec/lib/go/csi"
24+
"github.com/google/go-cmp/cmp"
25+
"google.golang.org/protobuf/testing/protocmp"
2426
v1 "k8s.io/api/core/v1"
2527
storagev1 "k8s.io/api/storage/v1"
26-
"k8s.io/apimachinery/pkg/api/equality"
2728
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2829
"k8s.io/apimachinery/pkg/util/sets"
2930
"k8s.io/client-go/informers"
@@ -434,7 +435,7 @@ func TestStatefulSetSpreading(t *testing.T) {
434435
if expected != nil && requirements.Preferred == nil {
435436
t.Fatalf("expected preferred to be %v but requirements.Preferred is nil", expected)
436437
}
437-
if expected != nil && !equality.Semantic.DeepEqual(requirements.Preferred, expected) {
438+
if expected != nil && !cmp.Equal(requirements.Preferred, expected, protocmp.Transform()) {
438439
t.Errorf("expected preferred requisite %v; got: %v", expected, requirements.Preferred)
439440
}
440441
})
@@ -1441,7 +1442,7 @@ func TestPreferredTopologies(t *testing.T) {
14411442
if requirements == nil {
14421443
t.Fatalf("expected preferred to be %v but requirements is nil", expectedPreferred)
14431444
}
1444-
if !equality.Semantic.DeepEqual(requirements.Preferred, expectedPreferred) {
1445+
if !cmp.Equal(requirements.Preferred, expectedPreferred, protocmp.Transform()) {
14451446
t.Errorf("expected requisite %v; got: %v", tc.expectedPreferred, requirements.Preferred)
14461447
}
14471448
}
@@ -1603,7 +1604,7 @@ func requisiteEqual(t1, t2 []*csi.Topology) bool {
16031604
for _, topology := range t2 {
16041605
found := false
16051606
for i := range unchecked {
1606-
if equality.Semantic.DeepEqual(t1[i], topology) {
1607+
if cmp.Equal(t1[i], topology, protocmp.Transform()) {
16071608
found = true
16081609
unchecked.Delete(i)
16091610
break

vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go

Lines changed: 185 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)