@@ -34,22 +34,24 @@ func TestDataConsistencyChecker(t *testing.T) {
34
34
scenarios := []struct {
35
35
name string
36
36
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
40
41
41
42
expectedRequestOptions []metav1.ListOptions
42
43
expectedListRequests int
43
44
expectPanic bool
44
45
}{
45
46
{
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" ,
47
49
listResponse : & v1.PodList {
48
50
ListMeta : metav1.ListMeta {ResourceVersion : "2" },
49
51
Items : []v1.Pod {* makePod ("p1" , "1" ), * makePod ("p2" , "2" )},
50
52
},
51
53
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" )},
53
55
expectedListRequests : 1 ,
54
56
expectedRequestOptions : []metav1.ListOptions {
55
57
{
@@ -61,13 +63,14 @@ func TestDataConsistencyChecker(t *testing.T) {
61
63
},
62
64
63
65
{
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" ,
65
68
listResponse : & v1.PodList {
66
69
ListMeta : metav1.ListMeta {ResourceVersion : "2" },
67
70
Items : []v1.Pod {* makePod ("p1" , "1" ), * makePod ("p2" , "2" ), * makePod ("p3" , "3" )},
68
71
},
69
72
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" )},
71
74
expectedListRequests : 1 ,
72
75
expectedRequestOptions : []metav1.ListOptions {
73
76
{
@@ -78,13 +81,14 @@ func TestDataConsistencyChecker(t *testing.T) {
78
81
},
79
82
80
83
{
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" ,
82
86
listResponse : & v1.PodList {
83
87
ListMeta : metav1.ListMeta {ResourceVersion : "2" },
84
88
Items : []v1.Pod {* makePod ("p1" , "1" ), * makePod ("p2" , "2" ), * makePod ("p3" , "3" )},
85
89
},
86
90
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" )},
88
92
expectedListRequests : 1 ,
89
93
expectedRequestOptions : []metav1.ListOptions {
90
94
{
@@ -96,13 +100,14 @@ func TestDataConsistencyChecker(t *testing.T) {
96
100
},
97
101
98
102
{
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" ,
100
105
listResponse : & v1.PodList {
101
106
ListMeta : metav1.ListMeta {ResourceVersion : "2" },
102
107
Items : []v1.Pod {* makePod ("p1" , "1" ), * makePod ("p2" , "2" ), * makePod ("p3" , "3" )},
103
108
},
104
109
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" )},
106
111
expectedListRequests : 1 ,
107
112
expectedRequestOptions : []metav1.ListOptions {
108
113
{
@@ -114,7 +119,8 @@ func TestDataConsistencyChecker(t *testing.T) {
114
119
},
115
120
116
121
{
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" ,
118
124
listResponse : & v1.PodList {
119
125
ListMeta : metav1.ListMeta {ResourceVersion : "2" },
120
126
},
@@ -136,7 +142,8 @@ func TestDataConsistencyChecker(t *testing.T) {
136
142
},
137
143
138
144
{
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" ,
140
147
listResponse : & v1.PodList {
141
148
ListMeta : metav1.ListMeta {ResourceVersion : "0" },
142
149
Items : []v1.Pod {* makePod ("p1" , "1" ), * makePod ("p2" , "2" )},
@@ -146,13 +153,14 @@ func TestDataConsistencyChecker(t *testing.T) {
146
153
},
147
154
148
155
{
149
- name : "data consistency panics when data is inconsistent" ,
156
+ name : "data consistency panics when data is inconsistent" ,
157
+ lastSyncedResourceVersion : "2" ,
150
158
listResponse : & v1.PodList {
151
159
ListMeta : metav1.ListMeta {ResourceVersion : "2" },
152
160
Items : []v1.Pod {* makePod ("p1" , "1" ), * makePod ("p2" , "2" ), * makePod ("p3" , "3" )},
153
161
},
154
162
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" )},
156
164
expectedListRequests : 1 ,
157
165
expectedRequestOptions : []metav1.ListOptions {
158
166
{
@@ -172,16 +180,16 @@ func TestDataConsistencyChecker(t *testing.T) {
172
180
scenario .listResponse = & v1.PodList {}
173
181
}
174
182
fakeLister := & listWrapper {response : scenario .listResponse }
175
- retrievedItemsFunc := func () []* v1. Pod {
183
+ retrievedItemsFunc := func () []runtime. Object {
176
184
return scenario .retrievedItems
177
185
}
178
186
179
187
if scenario .expectPanic {
180
188
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 )
182
190
})
183
191
} else {
184
- CheckDataConsistency (ctx , "" , scenario .listResponse . ResourceVersion , fakeLister .List , scenario .requestOptions , retrievedItemsFunc )
192
+ CheckDataConsistency (ctx , "" , scenario .lastSyncedResourceVersion , fakeLister .List , scenario .requestOptions , retrievedItemsFunc )
185
193
}
186
194
187
195
require .Equal (t , fakeLister .counter , scenario .expectedListRequests )
@@ -218,10 +226,10 @@ func (lw *errorLister) List(_ context.Context, _ metav1.ListOptions) (runtime.Ob
218
226
type listWrapper struct {
219
227
counter int
220
228
requestOptions []metav1.ListOptions
221
- response * v1. PodList
229
+ response runtime. Object
222
230
}
223
231
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 ) {
225
233
lw .counter ++
226
234
lw .requestOptions = append (lw .requestOptions , opts )
227
235
return lw .response , nil
0 commit comments