Skip to content

Commit

Permalink
Fix panic in topology tests
Browse files Browse the repository at this point in the history
k8s.io/apimachinery can be used to compare API objects, but it panics on
protobuf messages. Use a generic cmp.Equal, with protobuf hints.
  • Loading branch information
jsafrane committed Sep 19, 2024
1 parent 1416604 commit e26da09
Show file tree
Hide file tree
Showing 12 changed files with 2,352 additions and 5 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ require (
)

require (
github.com/google/go-cmp v0.6.0
github.com/onsi/ginkgo/v2 v2.20.0
github.com/onsi/gomega v1.34.1
k8s.io/kubernetes v1.31.0
Expand Down Expand Up @@ -65,7 +66,6 @@ require (
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/cel-go v0.20.1 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
Expand Down
9 changes: 5 additions & 4 deletions pkg/controller/topology_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ import (
"testing"

"github.com/container-storage-interface/spec/lib/go/csi"
"github.com/google/go-cmp/cmp"
"google.golang.org/protobuf/testing/protocmp"
v1 "k8s.io/api/core/v1"
storagev1 "k8s.io/api/storage/v1"
"k8s.io/apimachinery/pkg/api/equality"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/informers"
Expand Down Expand Up @@ -434,7 +435,7 @@ func TestStatefulSetSpreading(t *testing.T) {
if expected != nil && requirements.Preferred == nil {
t.Fatalf("expected preferred to be %v but requirements.Preferred is nil", expected)
}
if expected != nil && !equality.Semantic.DeepEqual(requirements.Preferred, expected) {
if expected != nil && !cmp.Equal(requirements.Preferred, expected, protocmp.Transform()) {
t.Errorf("expected preferred requisite %v; got: %v", expected, requirements.Preferred)
}
})
Expand Down Expand Up @@ -1441,7 +1442,7 @@ func TestPreferredTopologies(t *testing.T) {
if requirements == nil {
t.Fatalf("expected preferred to be %v but requirements is nil", expectedPreferred)
}
if !equality.Semantic.DeepEqual(requirements.Preferred, expectedPreferred) {
if !cmp.Equal(requirements.Preferred, expectedPreferred, protocmp.Transform()) {
t.Errorf("expected requisite %v; got: %v", tc.expectedPreferred, requirements.Preferred)
}
}
Expand Down Expand Up @@ -1603,7 +1604,7 @@ func requisiteEqual(t1, t2 []*csi.Topology) bool {
for _, topology := range t2 {
found := false
for i := range unchecked {
if equality.Semantic.DeepEqual(t1[i], topology) {
if cmp.Equal(t1[i], topology, protocmp.Transform()) {
found = true
unchecked.Delete(i)
break
Expand Down
185 changes: 185 additions & 0 deletions vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e26da09

Please sign in to comment.