Merge pull request #108495 from stevekuznetsov/skuznets/better-rv-math

test/integration: improve TestTransform
This commit is contained in:
Kubernetes Prow Robot 2022-03-14 13:03:11 -07:00 committed by GitHub
commit c6c4915dd7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1417,6 +1417,12 @@ func TestTransform(t *testing.T) {
crdGVR := schema.GroupVersionResource{Group: fooCRD.Spec.Group, Version: fooCRD.Spec.Versions[0].Name, Resource: "foos"} crdGVR := schema.GroupVersionResource{Group: fooCRD.Spec.Group, Version: fooCRD.Spec.Versions[0].Name, Resource: "foos"}
crclient := dynamicClient.Resource(crdGVR).Namespace(testNamespace) crclient := dynamicClient.Resource(crdGVR).Namespace(testNamespace)
previousList, err := crclient.List(context.TODO(), metav1.ListOptions{})
if err != nil {
t.Fatalf("failed to list CRs before test: %v", err)
}
previousRV := previousList.GetResourceVersion()
testcases := []struct { testcases := []struct {
name string name string
accept string accept string
@ -1957,21 +1963,29 @@ func TestTransform(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
rv, _ := strconv.Atoi(obj.GetResourceVersion()) var rv string
if rv < 1 { if obj.GetResourceVersion() == "" || obj.GetResourceVersion() == "0" {
rv = 1 // no object was created in the preamble to the test, so get recent data
rv = "0"
} else {
// we created an object, and need to list+watch from some time before the creation to see it
rv = previousRV
} }
ctx, cancel := context.WithTimeout(context.Background(), wait.ForeverTestTimeout)
t.Cleanup(func() {
cancel()
})
w, err := client.Get(). w, err := client.Get().
Resource(resource).NamespaceIfScoped(obj.GetNamespace(), len(obj.GetNamespace()) > 0). Resource(resource).NamespaceIfScoped(obj.GetNamespace(), len(obj.GetNamespace()) > 0).
SetHeader("Accept", tc.accept). SetHeader("Accept", tc.accept).
VersionedParams(&metav1.ListOptions{ VersionedParams(&metav1.ListOptions{
ResourceVersion: strconv.Itoa(rv - 1), ResourceVersion: rv,
Watch: true, Watch: true,
FieldSelector: fields.OneTermEqualSelector("metadata.name", obj.GetName()).String(), FieldSelector: fields.OneTermEqualSelector("metadata.name", obj.GetName()).String(),
}, metav1.ParameterCodec). }, metav1.ParameterCodec).
Param("includeObject", string(tc.includeObject)). Param("includeObject", string(tc.includeObject)).
Stream(context.TODO()) Stream(ctx)
if (tc.wantErr != nil) != (err != nil) { if (tc.wantErr != nil) != (err != nil) {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }