Skip to content

Commit 36cfbe6

Browse files
authored
Merge pull request #2128 from Ananya2001-an/test-add-asserts
test: add more assertions in `e2e tests`
2 parents c6acb1f + 20c9ca5 commit 36cfbe6

File tree

4 files changed

+132
-11
lines changed

4 files changed

+132
-11
lines changed

.github/workflows/test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444

4545
- name: Upload coverage to Codecov
4646
if: "matrix.use_coverage"
47-
uses: codecov/codecov-action@v4
47+
uses: codecov/codecov-action@v3
4848
with:
4949
fail_ci_if_error: false
5050
verbose: true

kubernetes/e2e_test/test_apps.py

+16-4
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,21 @@ def test_create_deployment(self):
5252
ports:
5353
- containerPort: 80
5454
'''
55-
resp = api.create_namespaced_deployment(
55+
api.create_namespaced_deployment(
5656
body=yaml.safe_load(deployment % name),
5757
namespace="default")
5858
resp = api.read_namespaced_deployment(name, 'default')
5959
self.assertIsNotNone(resp)
60+
self.assertEqual(resp.metadata.name, name)
61+
self.assertEqual(resp.spec.replicas, 3)
62+
self.assertEqual(resp.spec.selector.match_labels['app'], 'nginx')
63+
self.assertEqual(resp.spec.template.metadata.labels['app'], 'nginx')
64+
self.assertEqual(resp.spec.template.spec.containers[0].name, 'nginx')
65+
self.assertEqual(resp.spec.template.spec.containers[0].image, 'nginx:1.15.4')
66+
self.assertEqual(resp.spec.template.spec.containers[0].ports[0].container_port, 80)
6067

6168
options = v1_delete_options.V1DeleteOptions()
62-
resp = api.delete_namespaced_deployment(name, 'default', body=options)
69+
api.delete_namespaced_deployment(name, 'default', body=options)
6370

6471
def test_create_daemonset(self):
6572
client = api_client.ApiClient(configuration=self.config)
@@ -92,9 +99,14 @@ def test_create_daemonset(self):
9299
},
93100
}
94101
}
95-
resp = api.create_namespaced_daemon_set('default', body=daemonset)
102+
api.create_namespaced_daemon_set('default', body=daemonset)
96103
resp = api.read_namespaced_daemon_set(name, 'default')
97104
self.assertIsNotNone(resp)
105+
self.assertEqual(resp.metadata.name, name)
106+
self.assertEqual(resp.spec.selector.match_labels['app'], 'nginx')
107+
self.assertEqual(resp.spec.template.metadata.labels['app'], 'nginx')
108+
self.assertEqual(resp.spec.template.spec.containers[0].name, 'nginx-app')
109+
self.assertEqual(resp.spec.template.spec.containers[0].image, 'nginx:1.15.4')
98110

99111
options = v1_delete_options.V1DeleteOptions()
100-
resp = api.delete_namespaced_daemon_set(name, 'default', body=options)
112+
api.delete_namespaced_daemon_set(name, 'default', body=options)

kubernetes/e2e_test/test_batch.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,19 @@ def test_job_apis(self):
4646
'apiVersion': 'batch/v1',
4747
'metadata': {'name': name}}
4848

49-
resp = api.create_namespaced_job(
49+
create_job_resp = api.create_namespaced_job(
5050
body=job_manifest, namespace='default')
51-
self.assertEqual(name, resp.metadata.name)
51+
self.assertEqual(name, create_job_resp.metadata.name)
5252

5353
resp = api.read_namespaced_job(
5454
name=name, namespace='default')
5555
self.assertEqual(name, resp.metadata.name)
56+
self.assertEqual(name, resp.spec.template.spec.containers[0].name)
57+
self.assertEqual('busybox', resp.spec.template.spec.containers[0].image)
58+
self.assertEqual('sh', resp.spec.template.spec.containers[0].command[0])
59+
self.assertEqual('-c', resp.spec.template.spec.containers[0].command[1])
60+
self.assertEqual('sleep 5', resp.spec.template.spec.containers[0].command[2])
61+
self.assertEqual('Never', resp.spec.template.spec.restart_policy)
5662

57-
resp = api.delete_namespaced_job(
63+
api.delete_namespaced_job(
5864
name=name, namespace='default', propagation_policy='Background')

kubernetes/e2e_test/test_utils.py

+106-3
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ def test_create_apps_deployment_from_yaml(self):
5555
dep = app_api.read_namespaced_deployment(name="nginx-app",
5656
namespace="default")
5757
self.assertIsNotNone(dep)
58+
self.assertEqual("nginx-app", dep.metadata.name)
59+
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
60+
self.assertEqual(80, dep.spec.template.spec.containers[0].ports[0].container_port)
61+
self.assertEqual("nginx", dep.spec.template.spec.containers[0].name)
62+
self.assertEqual("nginx", dep.spec.template.metadata.labels["app"])
63+
self.assertEqual(3, dep.spec.replicas)
64+
5865
while True:
5966
try:
6067
app_api.delete_namespaced_deployment(
@@ -66,7 +73,7 @@ def test_create_apps_deployment_from_yaml(self):
6673

6774
def test_create_apps_deployment_from_yaml_object(self):
6875
"""
69-
Should be able to pass YAM objects directly to helper function.
76+
Should be able to pass YAML objects directly to helper function.
7077
"""
7178
k8s_client = client.api_client.ApiClient(configuration=self.config)
7279
_path = self.path_prefix + "apps-deployment.yaml"
@@ -80,6 +87,13 @@ def test_create_apps_deployment_from_yaml_object(self):
8087
dep = app_api.read_namespaced_deployment(name="nginx-app",
8188
namespace="default")
8289
self.assertIsNotNone(dep)
90+
self.assertEqual("nginx-app", dep.metadata.name)
91+
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
92+
self.assertEqual(80, dep.spec.template.spec.containers[0].ports[0].container_port)
93+
self.assertEqual("nginx", dep.spec.template.spec.containers[0].name)
94+
self.assertEqual("nginx", dep.spec.template.metadata.labels["app"])
95+
self.assertEqual(3, dep.spec.replicas)
96+
8397
while True:
8498
try:
8599
app_api.delete_namespaced_deployment(
@@ -102,6 +116,13 @@ def test_create_apps_deployment_from_yaml_obj(self):
102116
dep = app_api.read_namespaced_deployment(name="nginx-app-3",
103117
namespace="default")
104118
self.assertIsNotNone(dep)
119+
self.assertEqual("nginx-app-3", dep.metadata.name)
120+
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
121+
self.assertEqual(80, dep.spec.template.spec.containers[0].ports[0].container_port)
122+
self.assertEqual("nginx", dep.spec.template.spec.containers[0].name)
123+
self.assertEqual("nginx", dep.spec.template.metadata.labels["app"])
124+
self.assertEqual(3, dep.spec.replicas)
125+
105126
app_api.delete_namespaced_deployment(
106127
name="nginx-app-3", namespace="default",
107128
body={})
@@ -117,6 +138,10 @@ def test_create_pod_from_yaml(self):
117138
pod = core_api.read_namespaced_pod(name="myapp-pod",
118139
namespace="default")
119140
self.assertIsNotNone(pod)
141+
self.assertEqual("myapp-pod", pod.metadata.name)
142+
self.assertEqual("busybox", pod.spec.containers[0].image)
143+
self.assertEqual("myapp-container", pod.spec.containers[0].name)
144+
120145
core_api.delete_namespaced_pod(
121146
name="myapp-pod", namespace="default",
122147
body={})
@@ -132,6 +157,9 @@ def test_create_service_from_yaml(self):
132157
svc = core_api.read_namespaced_service(name="my-service",
133158
namespace="default")
134159
self.assertIsNotNone(svc)
160+
self.assertEqual("my-service", svc.metadata.name)
161+
self.assertEqual("MyApp", svc.spec.selector["app"])
162+
135163
core_api.delete_namespaced_service(
136164
name="my-service", namespace="default",
137165
body={})
@@ -145,12 +173,15 @@ def test_create_namespace_from_yaml(self):
145173
k8s_client, self.path_prefix + "core-namespace.yaml")
146174
core_api = client.CoreV1Api(k8s_client)
147175
nmsp = core_api.read_namespace(name="development")
176+
148177
self.assertIsNotNone(nmsp)
178+
self.assertEqual("development", nmsp.metadata.name)
179+
149180
core_api.delete_namespace(name="development", body={})
150181

151182
def test_create_rbac_role_from_yaml(self):
152183
"""
153-
Should be able to create an rbac role.
184+
Should be able to create a rbac role.
154185
"""
155186
k8s_client = client.api_client.ApiClient(configuration=self.config)
156187
utils.create_from_yaml(
@@ -159,12 +190,15 @@ def test_create_rbac_role_from_yaml(self):
159190
rbac_role = rbac_api.read_namespaced_role(
160191
name="pod-reader", namespace="default")
161192
self.assertIsNotNone(rbac_role)
193+
self.assertEqual("pod-reader", rbac_role.metadata.name)
194+
self.assertEqual("pods", rbac_role.rules[0].resources[0])
195+
162196
rbac_api.delete_namespaced_role(
163197
name="pod-reader", namespace="default", body={})
164198

165199
def test_create_rbac_role_from_yaml_with_verbose_enabled(self):
166200
"""
167-
Should be able to create an rbac role with verbose enabled.
201+
Should be able to create a rbac role with verbose enabled.
168202
"""
169203
k8s_client = client.api_client.ApiClient(configuration=self.config)
170204
utils.create_from_yaml(
@@ -173,6 +207,9 @@ def test_create_rbac_role_from_yaml_with_verbose_enabled(self):
173207
rbac_role = rbac_api.read_namespaced_role(
174208
name="pod-reader", namespace="default")
175209
self.assertIsNotNone(rbac_role)
210+
self.assertEqual("pod-reader", rbac_role.metadata.name)
211+
self.assertEqual("pods", rbac_role.rules[0].resources[0])
212+
176213
rbac_api.delete_namespaced_role(
177214
name="pod-reader", namespace="default", body={})
178215

@@ -190,6 +227,8 @@ def test_create_deployment_non_default_namespace_from_yaml(self):
190227
ext_api = client.AppsV1Api(k8s_client)
191228
nmsp = core_api.read_namespace(name="dep")
192229
self.assertIsNotNone(nmsp)
230+
self.assertEqual("dep", nmsp.metadata.name)
231+
193232
dep = ext_api.read_namespaced_deployment(name="nginx-deployment",
194233
namespace="dep")
195234
self.assertIsNotNone(dep)
@@ -211,6 +250,10 @@ def test_create_apiservice_from_yaml_with_conflict(self):
211250
svc = reg_api.read_api_service(
212251
name="v1alpha1.wardle.k8s.io")
213252
self.assertIsNotNone(svc)
253+
self.assertEqual("v1alpha1.wardle.k8s.io", svc.metadata.name)
254+
self.assertEqual("wardle.k8s.io", svc.spec.group)
255+
self.assertEqual("v1alpha1", svc.spec.version)
256+
214257
with self.assertRaises(utils.FailToCreateError) as cm:
215258
utils.create_from_yaml(
216259
k8s_client, "kubernetes/e2e_test/test_yaml/api-service.yaml")
@@ -243,9 +286,16 @@ def test_create_general_list_from_yaml(self):
243286
svc = core_api.read_namespaced_service(name="list-service-test",
244287
namespace="default")
245288
self.assertIsNotNone(svc)
289+
self.assertEqual("list-service-test", svc.metadata.name)
290+
self.assertEqual("list-deployment-test", svc.spec.selector["app"])
291+
246292
dep = ext_api.read_namespaced_deployment(name="list-deployment-test",
247293
namespace="default")
248294
self.assertIsNotNone(dep)
295+
self.assertEqual("list-deployment-test", dep.metadata.name)
296+
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
297+
self.assertEqual(1, dep.spec.replicas)
298+
249299
core_api.delete_namespaced_service(name="list-service-test",
250300
namespace="default", body={})
251301
ext_api.delete_namespaced_deployment(name="list-deployment-test",
@@ -262,8 +312,14 @@ def test_create_namespace_list_from_yaml(self):
262312
core_api = client.CoreV1Api(k8s_client)
263313
nmsp_1 = core_api.read_namespace(name="mock-1")
264314
self.assertIsNotNone(nmsp_1)
315+
self.assertEqual("mock-1", nmsp_1.metadata.name)
316+
self.assertEqual("mock-1", nmsp_1.metadata.labels["name"])
317+
265318
nmsp_2 = core_api.read_namespace(name="mock-2")
266319
self.assertIsNotNone(nmsp_2)
320+
self.assertEqual("mock-2", nmsp_2.metadata.name)
321+
self.assertEqual("mock-2", nmsp_2.metadata.labels["name"])
322+
267323
core_api.delete_namespace(name="mock-1", body={})
268324
core_api.delete_namespace(name="mock-2", body={})
269325

@@ -280,9 +336,15 @@ def test_create_implicit_service_list_from_yaml_with_conflict(self):
280336
svc_3 = core_api.read_namespaced_service(name="mock-3",
281337
namespace="default")
282338
self.assertIsNotNone(svc_3)
339+
self.assertEqual("mock-3", svc_3.metadata.name)
340+
self.assertEqual("mock-3", svc_3.metadata.labels["app"])
341+
283342
svc_4 = core_api.read_namespaced_service(name="mock-4",
284343
namespace="default")
285344
self.assertIsNotNone(svc_4)
345+
self.assertEqual("mock-4", svc_4.metadata.name)
346+
self.assertEqual("mock-4", svc_4.metadata.labels["app"])
347+
286348
core_api.delete_namespaced_service(name="mock-3",
287349
namespace="default", body={})
288350
core_api.delete_namespaced_service(name="mock-4",
@@ -302,9 +364,20 @@ def test_create_multi_resource_from_directory(self):
302364
svc = core_api.read_namespaced_service(name="mock",
303365
namespace="default")
304366
self.assertIsNotNone(svc)
367+
self.assertEqual("mock", svc.metadata.name)
368+
self.assertEqual("mock", svc.metadata.labels["app"])
369+
self.assertEqual("mock", svc.spec.selector["app"])
370+
305371
ctr = core_api.read_namespaced_replication_controller(
306372
name="mock", namespace="default")
307373
self.assertIsNotNone(ctr)
374+
self.assertEqual("mock", ctr.metadata.name)
375+
self.assertEqual("mock", ctr.spec.template.metadata.labels["app"])
376+
self.assertEqual("mock", ctr.spec.selector["app"])
377+
self.assertEqual(1, ctr.spec.replicas)
378+
self.assertEqual("k8s.gcr.io/pause:2.0", ctr.spec.template.spec.containers[0].image)
379+
self.assertEqual("mock-container", ctr.spec.template.spec.containers[0].name)
380+
308381
core_api.delete_namespaced_replication_controller(
309382
name="mock", namespace="default", propagation_policy="Background")
310383
core_api.delete_namespaced_service(name="mock",
@@ -324,9 +397,20 @@ def test_create_from_multi_resource_yaml(self):
324397
svc = core_api.read_namespaced_service(name="mock",
325398
namespace="default")
326399
self.assertIsNotNone(svc)
400+
self.assertEqual("mock", svc.metadata.name)
401+
self.assertEqual("mock", svc.metadata.labels["app"])
402+
self.assertEqual("mock", svc.spec.selector["app"])
403+
327404
ctr = core_api.read_namespaced_replication_controller(
328405
name="mock", namespace="default")
329406
self.assertIsNotNone(ctr)
407+
self.assertEqual("mock", ctr.metadata.name)
408+
self.assertEqual("mock", ctr.spec.template.metadata.labels["app"])
409+
self.assertEqual("mock", ctr.spec.selector["app"])
410+
self.assertEqual(1, ctr.spec.replicas)
411+
self.assertEqual("k8s.gcr.io/pause:2.0", ctr.spec.template.spec.containers[0].image)
412+
self.assertEqual("mock-container", ctr.spec.template.spec.containers[0].name)
413+
330414
core_api.delete_namespaced_replication_controller(
331415
name="mock", namespace="default", propagation_policy="Background")
332416
core_api.delete_namespaced_service(name="mock",
@@ -345,12 +429,26 @@ def test_create_from_list_in_multi_resource_yaml(self):
345429
pod_0 = core_api.read_namespaced_pod(
346430
name="mock-pod-0", namespace="default")
347431
self.assertIsNotNone(pod_0)
432+
self.assertEqual("mock-pod-0", pod_0.metadata.name)
433+
self.assertEqual("mock-pod-0", pod_0.metadata.labels["app"])
434+
self.assertEqual("mock-pod-0", pod_0.spec.containers[0].name)
435+
self.assertEqual("busybox", pod_0.spec.containers[0].image)
436+
348437
pod_1 = core_api.read_namespaced_pod(
349438
name="mock-pod-1", namespace="default")
350439
self.assertIsNotNone(pod_1)
440+
self.assertEqual("mock-pod-1", pod_1.metadata.name)
441+
self.assertEqual("mock-pod-1", pod_1.metadata.labels["app"])
442+
self.assertEqual("mock-pod-1", pod_1.spec.containers[0].name)
443+
self.assertEqual("busybox", pod_1.spec.containers[0].image)
444+
351445
dep = app_api.read_namespaced_deployment(
352446
name="mock", namespace="default")
353447
self.assertIsNotNone(dep)
448+
self.assertEqual("mock", dep.metadata.name)
449+
self.assertEqual("mock", dep.spec.template.metadata.labels["app"])
450+
self.assertEqual(3, dep.spec.replicas)
451+
354452
core_api.delete_namespaced_pod(
355453
name="mock-pod-0", namespace="default", body={})
356454
core_api.delete_namespaced_pod(
@@ -372,6 +470,11 @@ def test_create_from_multi_resource_yaml_with_conflict(self):
372470
svc = core_api.read_namespaced_service(name="mock-2",
373471
namespace="default")
374472
self.assertIsNotNone(svc)
473+
self.assertEqual("mock-2", svc.metadata.name)
474+
self.assertEqual("mock-2", svc.metadata.labels["app"])
475+
self.assertEqual("mock-2", svc.spec.selector["app"])
476+
self.assertEqual(99, svc.spec.ports[0].port)
477+
375478
with self.assertRaises(utils.FailToCreateError) as cm:
376479
utils.create_from_yaml(
377480
k8s_client, self.path_prefix + "yaml-conflict-multi.yaml")

0 commit comments

Comments
 (0)