Skip to content

Commit d535f55

Browse files
committed
client-go/consistencydetector: refactor TestDataConsistencyChecker to work with unstructured data
1 parent 9e2075b commit d535f55

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

staging/src/k8s.io/client-go/util/consistencydetector/data_consistency_detector_test.go

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,24 @@ func TestDataConsistencyChecker(t *testing.T) {
3434
scenarios := []struct {
3535
name string
3636

37-
listResponse *v1.PodList
38-
retrievedItems []*v1.Pod
39-
requestOptions metav1.ListOptions
37+
lastSyncedResourceVersion string
38+
listResponse runtime.Object
39+
retrievedItems []runtime.Object
40+
requestOptions metav1.ListOptions
4041

4142
expectedRequestOptions []metav1.ListOptions
4243
expectedListRequests int
4344
expectPanic bool
4445
}{
4546
{
46-
name: "data consistency check won't panic when data is consistent",
47+
name: "data consistency check won't panic when data is consistent",
48+
lastSyncedResourceVersion: "2",
4749
listResponse: &v1.PodList{
4850
ListMeta: metav1.ListMeta{ResourceVersion: "2"},
4951
Items: []v1.Pod{*makePod("p1", "1"), *makePod("p2", "2")},
5052
},
5153
requestOptions: metav1.ListOptions{TimeoutSeconds: ptr.To(int64(39))},
52-
retrievedItems: []*v1.Pod{makePod("p1", "1"), makePod("p2", "2")},
54+
retrievedItems: []runtime.Object{makePod("p1", "1"), makePod("p2", "2")},
5355
expectedListRequests: 1,
5456
expectedRequestOptions: []metav1.ListOptions{
5557
{
@@ -61,13 +63,14 @@ func TestDataConsistencyChecker(t *testing.T) {
6163
},
6264

6365
{
64-
name: "legacy, the limit is removed from the list options when it wasn't honored by the watch cache",
66+
name: "legacy, the limit is removed from the list options when it wasn't honored by the watch cache",
67+
lastSyncedResourceVersion: "2",
6568
listResponse: &v1.PodList{
6669
ListMeta: metav1.ListMeta{ResourceVersion: "2"},
6770
Items: []v1.Pod{*makePod("p1", "1"), *makePod("p2", "2"), *makePod("p3", "3")},
6871
},
6972
requestOptions: metav1.ListOptions{ResourceVersion: "0", Limit: 2},
70-
retrievedItems: []*v1.Pod{makePod("p1", "1"), makePod("p2", "2"), makePod("p3", "3")},
73+
retrievedItems: []runtime.Object{makePod("p1", "1"), makePod("p2", "2"), makePod("p3", "3")},
7174
expectedListRequests: 1,
7275
expectedRequestOptions: []metav1.ListOptions{
7376
{
@@ -78,13 +81,14 @@ func TestDataConsistencyChecker(t *testing.T) {
7881
},
7982

8083
{
81-
name: "the limit is NOT removed from the list options for non-legacy request",
84+
name: "the limit is NOT removed from the list options for non-legacy request",
85+
lastSyncedResourceVersion: "2",
8286
listResponse: &v1.PodList{
8387
ListMeta: metav1.ListMeta{ResourceVersion: "2"},
8488
Items: []v1.Pod{*makePod("p1", "1"), *makePod("p2", "2"), *makePod("p3", "3")},
8589
},
8690
requestOptions: metav1.ListOptions{ResourceVersion: "2", Limit: 2},
87-
retrievedItems: []*v1.Pod{makePod("p1", "1"), makePod("p2", "2"), makePod("p3", "3")},
91+
retrievedItems: []runtime.Object{makePod("p1", "1"), makePod("p2", "2"), makePod("p3", "3")},
8892
expectedListRequests: 1,
8993
expectedRequestOptions: []metav1.ListOptions{
9094
{
@@ -96,13 +100,14 @@ func TestDataConsistencyChecker(t *testing.T) {
96100
},
97101

98102
{
99-
name: "legacy, the limit is NOT removed from the list options when the watch cache is disabled",
103+
name: "legacy, the limit is NOT removed from the list options when the watch cache is disabled",
104+
lastSyncedResourceVersion: "2",
100105
listResponse: &v1.PodList{
101106
ListMeta: metav1.ListMeta{ResourceVersion: "2"},
102107
Items: []v1.Pod{*makePod("p1", "1"), *makePod("p2", "2"), *makePod("p3", "3")},
103108
},
104109
requestOptions: metav1.ListOptions{ResourceVersion: "0", Limit: 5},
105-
retrievedItems: []*v1.Pod{makePod("p1", "1"), makePod("p2", "2"), makePod("p3", "3")},
110+
retrievedItems: []runtime.Object{makePod("p1", "1"), makePod("p2", "2"), makePod("p3", "3")},
106111
expectedListRequests: 1,
107112
expectedRequestOptions: []metav1.ListOptions{
108113
{
@@ -114,7 +119,8 @@ func TestDataConsistencyChecker(t *testing.T) {
114119
},
115120

116121
{
117-
name: "data consistency check won't panic when there is no data",
122+
name: "data consistency check won't panic when there is no data",
123+
lastSyncedResourceVersion: "2",
118124
listResponse: &v1.PodList{
119125
ListMeta: metav1.ListMeta{ResourceVersion: "2"},
120126
},
@@ -136,7 +142,8 @@ func TestDataConsistencyChecker(t *testing.T) {
136142
},
137143

138144
{
139-
name: "data consistency check won't be performed when ResourceVersion was set to 0",
145+
name: "data consistency check won't be performed when ResourceVersion was set to 0",
146+
lastSyncedResourceVersion: "0",
140147
listResponse: &v1.PodList{
141148
ListMeta: metav1.ListMeta{ResourceVersion: "0"},
142149
Items: []v1.Pod{*makePod("p1", "1"), *makePod("p2", "2")},
@@ -146,13 +153,14 @@ func TestDataConsistencyChecker(t *testing.T) {
146153
},
147154

148155
{
149-
name: "data consistency panics when data is inconsistent",
156+
name: "data consistency panics when data is inconsistent",
157+
lastSyncedResourceVersion: "2",
150158
listResponse: &v1.PodList{
151159
ListMeta: metav1.ListMeta{ResourceVersion: "2"},
152160
Items: []v1.Pod{*makePod("p1", "1"), *makePod("p2", "2"), *makePod("p3", "3")},
153161
},
154162
requestOptions: metav1.ListOptions{TimeoutSeconds: ptr.To(int64(39))},
155-
retrievedItems: []*v1.Pod{makePod("p1", "1"), makePod("p2", "2")},
163+
retrievedItems: []runtime.Object{makePod("p1", "1"), makePod("p2", "2")},
156164
expectedListRequests: 1,
157165
expectedRequestOptions: []metav1.ListOptions{
158166
{
@@ -172,16 +180,16 @@ func TestDataConsistencyChecker(t *testing.T) {
172180
scenario.listResponse = &v1.PodList{}
173181
}
174182
fakeLister := &listWrapper{response: scenario.listResponse}
175-
retrievedItemsFunc := func() []*v1.Pod {
183+
retrievedItemsFunc := func() []runtime.Object {
176184
return scenario.retrievedItems
177185
}
178186

179187
if scenario.expectPanic {
180188
require.Panics(t, func() {
181-
CheckDataConsistency(ctx, "", scenario.listResponse.ResourceVersion, fakeLister.List, scenario.requestOptions, retrievedItemsFunc)
189+
CheckDataConsistency(ctx, "", scenario.lastSyncedResourceVersion, fakeLister.List, scenario.requestOptions, retrievedItemsFunc)
182190
})
183191
} else {
184-
CheckDataConsistency(ctx, "", scenario.listResponse.ResourceVersion, fakeLister.List, scenario.requestOptions, retrievedItemsFunc)
192+
CheckDataConsistency(ctx, "", scenario.lastSyncedResourceVersion, fakeLister.List, scenario.requestOptions, retrievedItemsFunc)
185193
}
186194

187195
require.Equal(t, fakeLister.counter, scenario.expectedListRequests)
@@ -218,10 +226,10 @@ func (lw *errorLister) List(_ context.Context, _ metav1.ListOptions) (runtime.Ob
218226
type listWrapper struct {
219227
counter int
220228
requestOptions []metav1.ListOptions
221-
response *v1.PodList
229+
response runtime.Object
222230
}
223231

224-
func (lw *listWrapper) List(_ context.Context, opts metav1.ListOptions) (*v1.PodList, error) {
232+
func (lw *listWrapper) List(_ context.Context, opts metav1.ListOptions) (runtime.Object, error) {
225233
lw.counter++
226234
lw.requestOptions = append(lw.requestOptions, opts)
227235
return lw.response, nil

0 commit comments

Comments
 (0)