26
26
import org .junit .jupiter .api .Test ;
27
27
import org .mockito .ArgumentCaptor ;
28
28
import org .mockito .Mock ;
29
+ import org .mockito .Mockito ;
29
30
import org .mockito .stubbing .Answer ;
30
31
31
32
import java .util .ArrayList ;
@@ -60,17 +61,26 @@ public class KubernetesAgentInstancesIntegrationTest {
60
61
@ Mock
61
62
private MixedOperation <Pod , PodList , PodResource > pods ;
62
63
64
+ @ Mock
65
+ private PodResource mockedPodResource ;
66
+
63
67
@ Mock
64
68
private ConsoleLogAppender consoleLogAppender ;
65
69
70
+
66
71
@ BeforeEach
67
72
public void setUp () {
68
73
openMocks (this );
69
74
kubernetesAgentInstances = new KubernetesAgentInstances (mockedKubernetesClientFactory );
70
75
when (mockedKubernetesClientFactory .client (any ())).thenReturn (mockKubernetesClient );
71
- when (pods .create (any (Pod .class ))).thenAnswer ((Answer <Pod >) invocation -> {
76
+
77
+ when (pods .resource (any (Pod .class ))).thenAnswer ((Answer <PodResource >) invocation -> {
72
78
Object [] args = invocation .getArguments ();
73
- return (Pod ) args [0 ];
79
+ Pod pod = (Pod ) args [0 ];
80
+
81
+ when (mockedPodResource .create ()).thenReturn (pod );
82
+
83
+ return mockedPodResource ;
74
84
});
75
85
76
86
when (pods .list ()).thenReturn (new PodList ());
@@ -91,7 +101,7 @@ public void shouldCreateKubernetesPodForCreateAgentRequest() {
91
101
public void shouldCreateKubernetesPodWithContainerSpecification () {
92
102
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
93
103
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
94
- verify (pods ).create (argumentCaptor .capture ());
104
+ verify (pods ).resource (argumentCaptor .capture ());
95
105
Pod elasticAgentPod = argumentCaptor .getValue ();
96
106
97
107
List <Container > containers = elasticAgentPod .getSpec ().getContainers ();
@@ -104,14 +114,16 @@ public void shouldCreateKubernetesPodWithContainerSpecification() {
104
114
assertThat (gocdAgentContainer .getImage ()).isEqualTo ("gocd/custom-gocd-agent-alpine:latest" );
105
115
assertThat (gocdAgentContainer .getImagePullPolicy ()).isEqualTo ("IfNotPresent" );
106
116
assertThat (gocdAgentContainer .getSecurityContext ().getPrivileged ()).isEqualTo (false );
117
+
118
+ verify (mockedPodResource ).create ();
107
119
}
108
120
109
121
@ Test
110
122
public void shouldCreateKubernetesPodWithPrivilegedMod () {
111
123
createAgentRequest .properties ().put (PRIVILEGED .getKey (), "true" );
112
124
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
113
125
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
114
- verify (pods ).create (argumentCaptor .capture ());
126
+ verify (pods ).resource (argumentCaptor .capture ());
115
127
Pod elasticAgentPod = argumentCaptor .getValue ();
116
128
117
129
List <Container > containers = elasticAgentPod .getSpec ().getContainers ();
@@ -121,13 +133,15 @@ public void shouldCreateKubernetesPodWithPrivilegedMod() {
121
133
122
134
assertThat (gocdAgentContainer .getName ()).isEqualTo (instance .name ());
123
135
assertThat (gocdAgentContainer .getSecurityContext ().getPrivileged ()).isEqualTo (true );
136
+
137
+ verify (mockedPodResource ).create ();
124
138
}
125
139
126
140
@ Test
127
141
public void shouldCreateKubernetesPodWithResourcesLimitSpecificationOnGoCDAgentContainer () {
128
142
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
129
143
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
130
- verify (pods ).create (argumentCaptor .capture ());
144
+ verify (pods ).resource (argumentCaptor .capture ());
131
145
Pod elasticAgentPod = argumentCaptor .getValue ();
132
146
133
147
List <Container > containers = elasticAgentPod .getSpec ().getContainers ();
@@ -139,37 +153,43 @@ public void shouldCreateKubernetesPodWithResourcesLimitSpecificationOnGoCDAgentC
139
153
140
154
assertThat (resources .getLimits ().get ("memory" ).getAmount ()).isEqualTo (String .valueOf (1024 * 1024 * 1024 ));
141
155
assertThat (resources .getLimits ().get ("cpu" ).getAmount ()).isEqualTo ("2" );
156
+
157
+ verify (mockedPodResource ).create ();
142
158
}
143
159
144
160
@ Test
145
161
public void shouldCreateKubernetesPodWithPodMetadata () {
146
162
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
147
163
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
148
- verify (pods ).create (argumentCaptor .capture ());
164
+ verify (pods ).resource (argumentCaptor .capture ());
149
165
150
166
Pod elasticAgentPod = argumentCaptor .getValue ();
151
167
152
168
assertNotNull (elasticAgentPod .getMetadata ());
153
169
assertThat (elasticAgentPod .getMetadata ().getName ()).isEqualTo (instance .name ());
170
+
171
+ verify (mockedPodResource ).create ();
154
172
}
155
173
156
174
@ Test
157
175
public void shouldCreateKubernetesPodWithTimeStamp () {
158
176
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
159
177
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
160
- verify (pods ).create (argumentCaptor .capture ());
178
+ verify (pods ).resource (argumentCaptor .capture ());
161
179
162
180
Pod elasticAgentPod = argumentCaptor .getValue ();
163
181
164
182
assertNotNull (elasticAgentPod .getMetadata ());
165
183
assertNotNull (elasticAgentPod .getMetadata ().getCreationTimestamp ());
184
+
185
+ verify (mockedPodResource ).create ();
166
186
}
167
187
168
188
@ Test
169
189
public void shouldCreateKubernetesPodWithGoCDElasticAgentContainerContainingEnvironmentVariables () {
170
190
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
171
191
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
172
- verify (pods ).create (argumentCaptor .capture ());
192
+ verify (pods ).resource (argumentCaptor .capture ());
173
193
Pod elasticAgentPod = argumentCaptor .getValue ();
174
194
175
195
ArrayList <EnvVar > expectedEnvVars = new ArrayList <>();
@@ -187,13 +207,15 @@ public void shouldCreateKubernetesPodWithGoCDElasticAgentContainerContainingEnvi
187
207
assertThat (containers .size ()).isEqualTo (1 );
188
208
189
209
assertThat (containers .get (0 ).getEnv ()).isEqualTo (expectedEnvVars );
210
+
211
+ verify (mockedPodResource ).create ();
190
212
}
191
213
192
214
@ Test
193
215
public void shouldCreateKubernetesPodWithPodAnnotations () {
194
216
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
195
217
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
196
- verify (pods ).create (argumentCaptor .capture ());
218
+ verify (pods ).resource (argumentCaptor .capture ());
197
219
Pod elasticAgentPod = argumentCaptor .getValue ();
198
220
199
221
assertNotNull (elasticAgentPod .getMetadata ());
@@ -202,13 +224,15 @@ public void shouldCreateKubernetesPodWithPodAnnotations() {
202
224
expectedAnnotations .putAll (createAgentRequest .properties ());
203
225
expectedAnnotations .put (Constants .JOB_IDENTIFIER_LABEL_KEY , new Gson ().toJson (createAgentRequest .jobIdentifier ()));
204
226
assertThat (elasticAgentPod .getMetadata ().getAnnotations ()).isEqualTo (expectedAnnotations );
227
+
228
+ verify (mockedPodResource ).create ();
205
229
}
206
230
207
231
@ Test
208
232
public void shouldCreateKubernetesPodWithPodLabels () {
209
233
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
210
234
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
211
- verify (pods ).create (argumentCaptor .capture ());
235
+ verify (pods ).resource (argumentCaptor .capture ());
212
236
Pod elasticAgentPod = argumentCaptor .getValue ();
213
237
214
238
assertNotNull (elasticAgentPod .getMetadata ());
@@ -220,6 +244,8 @@ public void shouldCreateKubernetesPodWithPodLabels() {
220
244
labels .put (Constants .ENVIRONMENT_LABEL_KEY , createAgentRequest .environment ());
221
245
222
246
assertThat (elasticAgentPod .getMetadata ().getLabels ()).isEqualTo (labels );
247
+
248
+ verify (mockedPodResource ).create ();
223
249
}
224
250
225
251
//Tests Using Pod Yaml
@@ -238,7 +264,7 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithContainerSpe
238
264
239
265
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
240
266
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
241
- verify (pods ).create (argumentCaptor .capture ());
267
+ verify (pods ).resource (argumentCaptor .capture ());
242
268
Pod elasticAgentPod = argumentCaptor .getValue ();
243
269
244
270
List <Container > containers = elasticAgentPod .getSpec ().getContainers ();
@@ -249,6 +275,8 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithContainerSpe
249
275
assertThat (gocdAgentContainer .getName ()).isEqualTo ("gocd-agent-container" );
250
276
assertThat (gocdAgentContainer .getImage ()).isEqualTo ("gocd/gocd-agent-alpine-3.5:v17.12.0" );
251
277
assertThat (gocdAgentContainer .getImagePullPolicy ()).isEqualTo ("Always" );
278
+
279
+ verify (mockedPodResource ).create ();
252
280
}
253
281
254
282
@ Test
@@ -257,14 +285,16 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithPodMetadata(
257
285
258
286
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
259
287
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
260
- verify (pods ).create (argumentCaptor .capture ());
288
+ verify (pods ).resource (argumentCaptor .capture ());
261
289
262
290
Pod elasticAgentPod = argumentCaptor .getValue ();
263
291
264
292
assertNotNull (elasticAgentPod .getMetadata ());
265
293
assertThat (elasticAgentPod .getMetadata ().getName ()).contains ("test-pod-yaml" );
266
294
267
295
assertThat (elasticAgentPod .getMetadata ().getName ()).isEqualTo (instance .name ());
296
+
297
+ verify (mockedPodResource ).create ();
268
298
}
269
299
270
300
@ Test
@@ -273,12 +303,14 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithTimestamp()
273
303
274
304
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
275
305
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
276
- verify (pods ).create (argumentCaptor .capture ());
306
+ verify (pods ).resource (argumentCaptor .capture ());
277
307
278
308
Pod elasticAgentPod = argumentCaptor .getValue ();
279
309
280
310
assertNotNull (elasticAgentPod .getMetadata ());
281
311
assertNotNull (elasticAgentPod .getMetadata ().getCreationTimestamp ());
312
+
313
+ verify (mockedPodResource ).create ();
282
314
}
283
315
284
316
@ Test
@@ -287,7 +319,7 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithGoCDElasticA
287
319
288
320
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
289
321
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
290
- verify (pods ).create (argumentCaptor .capture ());
322
+ verify (pods ).resource (argumentCaptor .capture ());
291
323
Pod elasticAgentPod = argumentCaptor .getValue ();
292
324
293
325
ArrayList <EnvVar > expectedEnvVars = new ArrayList <>();
@@ -303,6 +335,8 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithGoCDElasticA
303
335
assertThat (containers .size ()).isEqualTo (1 );
304
336
305
337
assertThat (containers .get (0 ).getEnv ()).isEqualTo (expectedEnvVars );
338
+
339
+ verify (mockedPodResource ).create ();
306
340
}
307
341
308
342
@ Test
@@ -311,7 +345,7 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithPodAnnotatio
311
345
312
346
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
313
347
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
314
- verify (pods ).create (argumentCaptor .capture ());
348
+ verify (pods ).resource (argumentCaptor .capture ());
315
349
Pod elasticAgentPod = argumentCaptor .getValue ();
316
350
317
351
assertNotNull (elasticAgentPod .getMetadata ());
@@ -322,6 +356,8 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithPodAnnotatio
322
356
expectedAnnotations .put (Constants .JOB_IDENTIFIER_LABEL_KEY , new Gson ().toJson (createAgentRequest .jobIdentifier ()));
323
357
324
358
assertThat (elasticAgentPod .getMetadata ().getAnnotations ()).isEqualTo (expectedAnnotations );
359
+
360
+ verify (mockedPodResource ).create ();
325
361
}
326
362
327
363
@ Test
@@ -330,7 +366,7 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithPodLabels()
330
366
331
367
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
332
368
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
333
- verify (pods ).create (argumentCaptor .capture ());
369
+ verify (pods ).resource (argumentCaptor .capture ());
334
370
Pod elasticAgentPod = argumentCaptor .getValue ();
335
371
336
372
assertNotNull (elasticAgentPod .getMetadata ());
@@ -344,6 +380,8 @@ public void usingPodYamlConfigurations_shouldCreateKubernetesPodWithPodLabels()
344
380
labels .put ("app" , "gocd-agent" );
345
381
346
382
assertThat (elasticAgentPod .getMetadata ().getLabels ()).isEqualTo (labels );
383
+
384
+ verify (mockedPodResource ).create ();
347
385
}
348
386
349
387
//Tests Using Remote File
@@ -362,7 +400,7 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithContainerSpecification(
362
400
363
401
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
364
402
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
365
- verify (pods ).create (argumentCaptor .capture ());
403
+ verify (pods ).resource (argumentCaptor .capture ());
366
404
Pod elasticAgentPod = argumentCaptor .getValue ();
367
405
368
406
List <Container > containers = elasticAgentPod .getSpec ().getContainers ();
@@ -373,6 +411,8 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithContainerSpecification(
373
411
assertThat (gocdAgentContainer .getName ()).isEqualTo ("gocd-agent-container" );
374
412
assertThat (gocdAgentContainer .getImage ()).isEqualTo ("gocd/gocd-agent-alpine-3.8:v19.1.0" );
375
413
assertThat (gocdAgentContainer .getImagePullPolicy ()).isEqualTo ("Always" );
414
+
415
+ verify (mockedPodResource ).create ();
376
416
}
377
417
378
418
@ Test
@@ -381,14 +421,16 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithPodMetadata() {
381
421
382
422
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
383
423
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
384
- verify (pods ).create (argumentCaptor .capture ());
424
+ verify (pods ).resource (argumentCaptor .capture ());
385
425
386
426
Pod elasticAgentPod = argumentCaptor .getValue ();
387
427
388
428
assertNotNull (elasticAgentPod .getMetadata ());
389
429
assertThat (elasticAgentPod .getMetadata ().getName ()).contains ("test-pod-json" );
390
430
391
431
assertThat (elasticAgentPod .getMetadata ().getName ()).isEqualTo (instance .name ());
432
+
433
+ verify (mockedPodResource ).create ();
392
434
}
393
435
394
436
@ Test
@@ -397,12 +439,14 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithTimestamp() {
397
439
398
440
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
399
441
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
400
- verify (pods ).create (argumentCaptor .capture ());
442
+ verify (pods ).resource (argumentCaptor .capture ());
401
443
402
444
Pod elasticAgentPod = argumentCaptor .getValue ();
403
445
404
446
assertNotNull (elasticAgentPod .getMetadata ());
405
447
assertNotNull (elasticAgentPod .getMetadata ().getCreationTimestamp ());
448
+
449
+ verify (mockedPodResource ).create ();
406
450
}
407
451
408
452
@ Test
@@ -411,7 +455,7 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithGoCDElasticAgentContain
411
455
412
456
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
413
457
KubernetesInstance instance = kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
414
- verify (pods ).create (argumentCaptor .capture ());
458
+ verify (pods ).resource (argumentCaptor .capture ());
415
459
Pod elasticAgentPod = argumentCaptor .getValue ();
416
460
417
461
ArrayList <EnvVar > expectedEnvVars = new ArrayList <>();
@@ -427,6 +471,8 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithGoCDElasticAgentContain
427
471
assertThat (containers .size ()).isEqualTo (1 );
428
472
429
473
assertThat (containers .get (0 ).getEnv ()).isEqualTo (expectedEnvVars );
474
+
475
+ verify (mockedPodResource ).create ();
430
476
}
431
477
432
478
@ Test
@@ -435,7 +481,7 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithPodAnnotations() {
435
481
436
482
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
437
483
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
438
- verify (pods ).create (argumentCaptor .capture ());
484
+ verify (pods ).resource (argumentCaptor .capture ());
439
485
Pod elasticAgentPod = argumentCaptor .getValue ();
440
486
441
487
assertNotNull (elasticAgentPod .getMetadata ());
@@ -446,6 +492,8 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithPodAnnotations() {
446
492
expectedAnnotations .put (Constants .JOB_IDENTIFIER_LABEL_KEY , new Gson ().toJson (createAgentRequest .jobIdentifier ()));
447
493
448
494
assertThat (elasticAgentPod .getMetadata ().getAnnotations ()).isEqualTo (expectedAnnotations );
495
+
496
+ verify (mockedPodResource ).create ();
449
497
}
450
498
451
499
@ Test
@@ -454,7 +502,7 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithPodLabels() {
454
502
455
503
ArgumentCaptor <Pod > argumentCaptor = ArgumentCaptor .forClass (Pod .class );
456
504
kubernetesAgentInstances .create (createAgentRequest , settings , mockedPluginRequest , consoleLogAppender );
457
- verify (pods ).create (argumentCaptor .capture ());
505
+ verify (pods ).resource (argumentCaptor .capture ());
458
506
Pod elasticAgentPod = argumentCaptor .getValue ();
459
507
460
508
assertNotNull (elasticAgentPod .getMetadata ());
@@ -468,6 +516,8 @@ public void usingRemoteFile_shouldCreateKubernetesPodWithPodLabels() {
468
516
labels .put ("app" , "gocd-agent" );
469
517
470
518
assertThat (elasticAgentPod .getMetadata ().getLabels ()).isEqualTo (labels );
519
+
520
+ verify (mockedPodResource ).create ();
471
521
}
472
522
473
523
}
0 commit comments