Skip to content

Commit 55dda02

Browse files
authored
Merge pull request #12527 from sbueringer/pr-improve-e2e-test-stable
🌱 Print the entire object diff if resource versions are not stable in e2e tests
2 parents b9808f7 + 05ed9ae commit 55dda02

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

test/framework/resourceversion_helpers.go

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,40 +24,40 @@ import (
2424

2525
"github.com/google/go-cmp/cmp"
2626
. "github.com/onsi/gomega"
27-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2828
"k8s.io/apimachinery/pkg/util/sets"
2929
"sigs.k8s.io/controller-runtime/pkg/client"
3030
"sigs.k8s.io/yaml"
3131

3232
clusterctlcluster "sigs.k8s.io/cluster-api/cmd/clusterctl/client/cluster"
3333
)
3434

35-
// ValidateResourceVersionStable checks that resource versions are stable.
35+
// ValidateResourceVersionStable checks that resourceVersions are stable.
3636
func ValidateResourceVersionStable(ctx context.Context, proxy ClusterProxy, namespace string, ownerGraphFilterFunction clusterctlcluster.GetOwnerGraphFilterFunction) {
37-
// Wait until resource versions are stable for a bit.
38-
byf("Check Resource versions are stable")
37+
// Wait until resourceVersions are stable for a bit.
38+
byf("Check resourceVersions are stable")
3939
var previousResourceVersions map[string]string
4040
var previousObjects map[string]client.Object
4141
Eventually(func(g Gomega) {
4242
objectsWithResourceVersion, objects, err := getObjectsWithResourceVersion(ctx, proxy, namespace, ownerGraphFilterFunction)
4343
g.Expect(err).ToNot(HaveOccurred())
4444

4545
defer func() {
46-
// Set current resource versions as previous resource versions for the next try.
46+
// Set current resourceVersions as previous resourceVersions for the next try.
4747
previousResourceVersions = objectsWithResourceVersion
4848
previousObjects = objects
4949
}()
5050
// This is intentionally failing on the first run.
5151
g.Expect(objectsWithResourceVersion).To(BeComparableTo(previousResourceVersions))
52-
}, 1*time.Minute, 15*time.Second).Should(Succeed(), "Resource versions never became stable")
52+
}, 1*time.Minute, 15*time.Second).Should(Succeed(), "resourceVersions never became stable")
5353

54-
// Verify resource versions are stable for a while.
55-
byf("Check Resource versions remain stable")
54+
// Verify resourceVersions are stable for a while.
55+
byf("Check resourceVersions remain stable")
5656
Consistently(func(g Gomega) {
5757
objectsWithResourceVersion, objects, err := getObjectsWithResourceVersion(ctx, proxy, namespace, ownerGraphFilterFunction)
5858
g.Expect(err).ToNot(HaveOccurred())
5959
g.Expect(objectsWithResourceVersion).To(BeComparableTo(previousResourceVersions), printObjectDiff(previousObjects, objects))
60-
}, 2*time.Minute, 15*time.Second).Should(Succeed(), "Resource versions didn't stay stable")
60+
}, 2*time.Minute, 15*time.Second).Should(Succeed(), "resourceVersions didn't stay stable")
6161
}
6262

6363
func printObjectDiff(previousObjects, newObjects map[string]client.Object) func() string {
@@ -123,16 +123,13 @@ func getObjectsWithResourceVersion(ctx context.Context, proxy ClusterProxy, name
123123
objects := map[string]client.Object{}
124124
for _, node := range graph {
125125
nodeNamespacedName := client.ObjectKey{Namespace: node.Object.Namespace, Name: node.Object.Name}
126-
obj := &metav1.PartialObjectMetadata{
127-
TypeMeta: metav1.TypeMeta{
128-
APIVersion: node.Object.APIVersion,
129-
Kind: node.Object.Kind,
130-
},
131-
}
126+
obj := &unstructured.Unstructured{}
127+
obj.SetAPIVersion(node.Object.APIVersion)
128+
obj.SetKind(node.Object.Kind)
132129
if err := proxy.GetClient().Get(ctx, nodeNamespacedName, obj); err != nil {
133130
return nil, nil, err
134131
}
135-
objectsWithResourceVersion[fmt.Sprintf("%s/%s/%s", node.Object.Kind, node.Object.Namespace, node.Object.Name)] = obj.ResourceVersion
132+
objectsWithResourceVersion[fmt.Sprintf("%s/%s/%s", node.Object.Kind, node.Object.Namespace, node.Object.Name)] = obj.GetResourceVersion()
136133
objects[fmt.Sprintf("%s/%s/%s", node.Object.Kind, node.Object.Namespace, node.Object.Name)] = obj
137134
}
138135
return objectsWithResourceVersion, objects, nil

0 commit comments

Comments
 (0)