@@ -12,6 +12,7 @@ See the License for the specific language governing permissions and
12
12
limitations under the License.
13
13
*/
14
14
15
+ //nolint:revive
15
16
package expectations
16
17
17
18
import (
@@ -48,20 +49,32 @@ const (
48
49
)
49
50
50
51
func ExpectPodExists (ctx context.Context , c client.Client , name string , namespace string ) * v1.Pod {
52
+ return ExpectPodExistsWithOffset (1 , ctx , c , name , namespace )
53
+ }
54
+
55
+ func ExpectPodExistsWithOffset (offset int , ctx context.Context , c client.Client , name string , namespace string ) * v1.Pod {
51
56
pod := & v1.Pod {}
52
- Expect ( c .Get (ctx , client.ObjectKey {Name : name , Namespace : namespace }, pod )).To (Succeed ())
57
+ ExpectWithOffset ( offset + 1 , c .Get (ctx , client.ObjectKey {Name : name , Namespace : namespace }, pod )).To (Succeed ())
53
58
return pod
54
59
}
55
60
56
61
func ExpectNodeExists (ctx context.Context , c client.Client , name string ) * v1.Node {
62
+ return ExpectNodeExistsWithOffset (1 , ctx , c , name )
63
+ }
64
+
65
+ func ExpectNodeExistsWithOffset (offset int , ctx context.Context , c client.Client , name string ) * v1.Node {
57
66
node := & v1.Node {}
58
- Expect ( c .Get (ctx , client.ObjectKey {Name : name }, node )).To (Succeed ())
67
+ ExpectWithOffset ( offset + 1 , c .Get (ctx , client.ObjectKey {Name : name }, node )).To (Succeed ())
59
68
return node
60
69
}
61
70
62
71
func ExpectNotFound (ctx context.Context , c client.Client , objects ... client.Object ) {
72
+ ExpectNotFoundWithOffset (1 , ctx , c , objects ... )
73
+ }
74
+
75
+ func ExpectNotFoundWithOffset (offset int , ctx context.Context , c client.Client , objects ... client.Object ) {
63
76
for _ , object := range objects {
64
- EventuallyWithOffset (1 , func () bool {
77
+ EventuallyWithOffset (offset + 1 , func () bool {
65
78
return errors .IsNotFound (c .Get (ctx , types.NamespacedName {Name : object .GetName (), Namespace : object .GetNamespace ()}, object ))
66
79
}, ReconcilerPropagationTime , RequestInterval ).Should (BeTrue (), func () string {
67
80
return fmt .Sprintf ("expected %s to be deleted, but it still exists" , client .ObjectKeyFromObject (object ))
@@ -70,61 +83,65 @@ func ExpectNotFound(ctx context.Context, c client.Client, objects ...client.Obje
70
83
}
71
84
72
85
func ExpectScheduled (ctx context.Context , c client.Client , pod * v1.Pod ) * v1.Node {
73
- p := ExpectPodExists ( ctx , c , pod .Name , pod .Namespace )
86
+ p := ExpectPodExistsWithOffset ( 1 , ctx , c , pod .Name , pod .Namespace )
74
87
Expect (p .Spec .NodeName ).ToNot (BeEmpty (), fmt .Sprintf ("expected %s/%s to be scheduled" , pod .Namespace , pod .Name ))
75
- return ExpectNodeExists ( ctx , c , p .Spec .NodeName )
88
+ return ExpectNodeExistsWithOffset ( 1 , ctx , c , p .Spec .NodeName )
76
89
}
77
90
78
91
func ExpectNotScheduled (ctx context.Context , c client.Client , pod * v1.Pod ) * v1.Pod {
79
- p := ExpectPodExists ( ctx , c , pod .Name , pod .Namespace )
80
- Eventually ( p .Spec .NodeName ).Should (BeEmpty (), fmt .Sprintf ("expected %s/%s to not be scheduled" , pod .Namespace , pod .Name ))
92
+ p := ExpectPodExistsWithOffset ( 1 , ctx , c , pod .Name , pod .Namespace )
93
+ EventuallyWithOffset ( 1 , p .Spec .NodeName ).Should (BeEmpty (), fmt .Sprintf ("expected %s/%s to not be scheduled" , pod .Namespace , pod .Name ))
81
94
return p
82
95
}
83
96
84
97
func ExpectApplied (ctx context.Context , c client.Client , objects ... client.Object ) {
98
+ ExpectAppliedWithOffset (1 , ctx , c , objects ... )
99
+ }
100
+
101
+ func ExpectAppliedWithOffset (offset int , ctx context.Context , c client.Client , objects ... client.Object ) {
85
102
for _ , object := range objects {
86
103
current := object .DeepCopyObject ().(client.Object )
87
104
statuscopy := object .DeepCopyObject ().(client.Object ) // Snapshot the status, since create/update may override
88
105
deletecopy := object .DeepCopyObject ().(client.Object ) // Snapshot the status, since create/update may override
89
106
// Create or Update
90
107
if err := c .Get (ctx , client .ObjectKeyFromObject (current ), current ); err != nil {
91
108
if errors .IsNotFound (err ) {
92
- ExpectWithOffset (1 , c .Create (ctx , object )).To (Succeed ())
109
+ ExpectWithOffset (offset + 1 , c .Create (ctx , object )).To (Succeed ())
93
110
} else {
94
- ExpectWithOffset (1 , err ).ToNot (HaveOccurred ())
111
+ ExpectWithOffset (offset + 1 , err ).ToNot (HaveOccurred ())
95
112
}
96
113
} else {
97
114
object .SetResourceVersion (current .GetResourceVersion ())
98
- ExpectWithOffset (1 , c .Update (ctx , object )).To (Succeed ())
115
+ ExpectWithOffset (offset + 1 , c .Update (ctx , object )).To (Succeed ())
99
116
}
100
117
// Update status
101
118
statuscopy .SetResourceVersion (object .GetResourceVersion ())
102
- ExpectWithOffset (1 , c .Status ().Update (ctx , statuscopy )).To (Or (Succeed (), MatchError ("the server could not find the requested resource" ))) // Some objects do not have a status
119
+ ExpectWithOffset (offset + 1 , c .Status ().Update (ctx , statuscopy )).To (Or (Succeed (), MatchError ("the server could not find the requested resource" ))) // Some objects do not have a status
103
120
// Delete if timestamp set
104
121
if deletecopy .GetDeletionTimestamp () != nil {
105
- ExpectWithOffset (1 , c .Delete (ctx , deletecopy )).To (Succeed ())
122
+ ExpectWithOffset (offset + 1 , c .Delete (ctx , deletecopy )).To (Succeed ())
106
123
}
107
124
}
108
125
}
109
126
110
127
func ExpectDeleted (ctx context.Context , c client.Client , objects ... client.Object ) {
111
128
for _ , object := range objects {
112
129
if err := c .Delete (ctx , object , & client.DeleteOptions {GracePeriodSeconds : ptr .Int64 (0 )}); ! errors .IsNotFound (err ) {
113
- Expect ( err ).To (BeNil ())
130
+ ExpectWithOffset ( 1 , err ).To (BeNil ())
114
131
}
115
- ExpectNotFound ( ctx , c , object )
132
+ ExpectNotFoundWithOffset ( 1 , ctx , c , object )
116
133
}
117
134
}
118
135
119
136
func ExpectCleanedUp (ctx context.Context , c client.Client ) {
120
137
wg := sync.WaitGroup {}
121
138
namespaces := & v1.NamespaceList {}
122
- Expect ( c .List (ctx , namespaces )).To (Succeed ())
139
+ ExpectWithOffset ( 1 , c .List (ctx , namespaces )).To (Succeed ())
123
140
nodes := & v1.NodeList {}
124
- Expect ( c .List (ctx , nodes )).To (Succeed ())
141
+ ExpectWithOffset ( 1 , c .List (ctx , nodes )).To (Succeed ())
125
142
for i := range nodes .Items {
126
143
nodes .Items [i ].SetFinalizers ([]string {})
127
- Expect ( c .Update (ctx , & nodes .Items [i ])).To (Succeed ())
144
+ ExpectWithOffset ( 1 , c .Update (ctx , & nodes .Items [i ])).To (Succeed ())
128
145
}
129
146
for _ , object := range []client.Object {
130
147
& v1.Pod {},
@@ -139,7 +156,7 @@ func ExpectCleanedUp(ctx context.Context, c client.Client) {
139
156
for _ , namespace := range namespaces .Items {
140
157
wg .Add (1 )
141
158
go func (object client.Object , namespace string ) {
142
- Expect ( c .DeleteAllOf (ctx , object , client .InNamespace (namespace ),
159
+ ExpectWithOffset ( 1 , c .DeleteAllOf (ctx , object , client .InNamespace (namespace ),
143
160
& client.DeleteAllOfOptions {DeleteOptions : client.DeleteOptions {GracePeriodSeconds : ptr .Int64 (0 )}})).ToNot (HaveOccurred ())
144
161
wg .Done ()
145
162
}(object , namespace .Name )
@@ -149,26 +166,30 @@ func ExpectCleanedUp(ctx context.Context, c client.Client) {
149
166
}
150
167
151
168
func ExpectProvisioned (ctx context.Context , c client.Client , controller * provisioning.Controller , pods ... * v1.Pod ) (result []* v1.Pod ) {
152
- ExpectProvisionedNoBinding ( ctx , c , controller , pods ... )
169
+ ExpectProvisionedNoBindingWithOffset ( 1 , ctx , c , controller , pods ... )
153
170
154
171
recorder := controller .Recorder ().(* test.EventRecorder )
155
172
recorder .ForEachBinding (func (pod * v1.Pod , node * v1.Node ) {
156
- ExpectManualBinding ( ctx , c , pod , node )
173
+ ExpectManualBindingWithOffset ( 1 , ctx , c , pod , node )
157
174
})
158
175
// reset bindings so we don't try to bind these same pods again if a new provisioning is performed in the same test
159
176
recorder .ResetBindings ()
160
177
161
178
// Update objects after reconciling
162
179
for _ , pod := range pods {
163
- result = append (result , ExpectPodExists ( ctx , c , pod .GetName (), pod .GetNamespace ()))
180
+ result = append (result , ExpectPodExistsWithOffset ( 1 , ctx , c , pod .GetName (), pod .GetNamespace ()))
164
181
}
165
182
return
166
183
}
167
184
168
185
func ExpectProvisionedNoBinding (ctx context.Context , c client.Client , controller * provisioning.Controller , pods ... * v1.Pod ) (result []* v1.Pod ) {
186
+ return ExpectProvisionedNoBindingWithOffset (1 , ctx , c , controller , pods ... )
187
+ }
188
+
189
+ func ExpectProvisionedNoBindingWithOffset (offset int , ctx context.Context , c client.Client , controller * provisioning.Controller , pods ... * v1.Pod ) (result []* v1.Pod ) {
169
190
// Persist objects
170
191
for _ , pod := range pods {
171
- ExpectApplied ( ctx , c , pod )
192
+ ExpectAppliedWithOffset ( offset + 1 , ctx , c , pod )
172
193
}
173
194
174
195
// shuffle the pods to try to detect any issues where we rely on pod order within a batch, we shuffle a copy of
@@ -184,31 +205,36 @@ func ExpectProvisionedNoBinding(ctx context.Context, c client.Client, controller
184
205
185
206
// Update objects after reconciling
186
207
for _ , pod := range pods {
187
- result = append (result , ExpectPodExists ( ctx , c , pod .GetName (), pod .GetNamespace ()))
208
+ result = append (result , ExpectPodExistsWithOffset ( offset + 1 , ctx , c , pod .GetName (), pod .GetNamespace ()))
188
209
}
189
210
return
190
211
}
191
212
192
213
func ExpectReconcileSucceeded (ctx context.Context , reconciler reconcile.Reconciler , key client.ObjectKey ) reconcile.Result {
193
214
result , err := reconciler .Reconcile (ctx , reconcile.Request {NamespacedName : key })
194
- Expect ( err ).ToNot (HaveOccurred ())
215
+ ExpectWithOffset ( 1 , err ).ToNot (HaveOccurred ())
195
216
return result
196
217
}
197
218
198
219
func ExpectMetric (prefix string ) * prometheus.MetricFamily {
199
220
metrics , err := metrics .Registry .Gather ()
200
- Expect ( err ).To (BeNil ())
221
+ ExpectWithOffset ( 1 , err ).To (BeNil ())
201
222
var selected * prometheus.MetricFamily
202
223
for _ , mf := range metrics {
203
224
if mf .GetName () == prefix {
204
225
selected = mf
205
226
}
206
227
}
207
- Expect ( selected ).ToNot (BeNil (), fmt .Sprintf ("expected to find a '%s' metric" , prefix ))
228
+ ExpectWithOffset ( 1 , selected ).ToNot (BeNil (), fmt .Sprintf ("expected to find a '%s' metric" , prefix ))
208
229
return selected
209
230
}
231
+
210
232
func ExpectManualBinding (ctx context.Context , c client.Client , pod * v1.Pod , node * v1.Node ) {
211
- ExpectWithOffset (1 , c .Create (ctx , & v1.Binding {
233
+ ExpectManualBindingWithOffset (1 , ctx , c , pod , node )
234
+ }
235
+
236
+ func ExpectManualBindingWithOffset (offset int , ctx context.Context , c client.Client , pod * v1.Pod , node * v1.Node ) {
237
+ ExpectWithOffset (offset + 1 , c .Create (ctx , & v1.Binding {
212
238
TypeMeta : pod .TypeMeta ,
213
239
ObjectMeta : metav1.ObjectMeta {
214
240
Name : pod .ObjectMeta .Name ,
@@ -223,9 +249,9 @@ func ExpectManualBinding(ctx context.Context, c client.Client, pod *v1.Pod, node
223
249
224
250
func ExpectSkew (ctx context.Context , c client.Client , namespace string , constraint * v1.TopologySpreadConstraint ) Assertion {
225
251
nodes := & v1.NodeList {}
226
- Expect ( c .List (ctx , nodes )).To (Succeed ())
252
+ ExpectWithOffset ( 1 , c .List (ctx , nodes )).To (Succeed ())
227
253
pods := & v1.PodList {}
228
- Expect ( c .List (ctx , pods , scheduling .TopologyListOptions (namespace , constraint .LabelSelector ))).To (Succeed ())
254
+ ExpectWithOffset ( 1 , c .List (ctx , pods , scheduling .TopologyListOptions (namespace , constraint .LabelSelector ))).To (Succeed ())
229
255
skew := map [string ]int {}
230
256
for i , pod := range pods .Items {
231
257
if scheduling .IgnoredForTopology (& pods .Items [i ]) {
@@ -244,5 +270,5 @@ func ExpectSkew(ctx context.Context, c client.Client, namespace string, constrai
244
270
}
245
271
}
246
272
}
247
- return Expect ( skew )
273
+ return ExpectWithOffset ( 1 , skew )
248
274
}
0 commit comments