Skip to content

Commit

Permalink
Merge pull request #2128 from Ananya2001-an/test-add-asserts
Browse files Browse the repository at this point in the history
test: add more assertions in `e2e tests`
  • Loading branch information
k8s-ci-robot committed Oct 16, 2023
2 parents c6acb1f + 20c9ca5 commit 36cfbe6
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:

- name: Upload coverage to Codecov
if: "matrix.use_coverage"
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v3
with:
fail_ci_if_error: false
verbose: true
20 changes: 16 additions & 4 deletions kubernetes/e2e_test/test_apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,21 @@ def test_create_deployment(self):
ports:
- containerPort: 80
'''
resp = api.create_namespaced_deployment(
api.create_namespaced_deployment(
body=yaml.safe_load(deployment % name),
namespace="default")
resp = api.read_namespaced_deployment(name, 'default')
self.assertIsNotNone(resp)
self.assertEqual(resp.metadata.name, name)
self.assertEqual(resp.spec.replicas, 3)
self.assertEqual(resp.spec.selector.match_labels['app'], 'nginx')
self.assertEqual(resp.spec.template.metadata.labels['app'], 'nginx')
self.assertEqual(resp.spec.template.spec.containers[0].name, 'nginx')
self.assertEqual(resp.spec.template.spec.containers[0].image, 'nginx:1.15.4')
self.assertEqual(resp.spec.template.spec.containers[0].ports[0].container_port, 80)

options = v1_delete_options.V1DeleteOptions()
resp = api.delete_namespaced_deployment(name, 'default', body=options)
api.delete_namespaced_deployment(name, 'default', body=options)

def test_create_daemonset(self):
client = api_client.ApiClient(configuration=self.config)
Expand Down Expand Up @@ -92,9 +99,14 @@ def test_create_daemonset(self):
},
}
}
resp = api.create_namespaced_daemon_set('default', body=daemonset)
api.create_namespaced_daemon_set('default', body=daemonset)
resp = api.read_namespaced_daemon_set(name, 'default')
self.assertIsNotNone(resp)
self.assertEqual(resp.metadata.name, name)
self.assertEqual(resp.spec.selector.match_labels['app'], 'nginx')
self.assertEqual(resp.spec.template.metadata.labels['app'], 'nginx')
self.assertEqual(resp.spec.template.spec.containers[0].name, 'nginx-app')
self.assertEqual(resp.spec.template.spec.containers[0].image, 'nginx:1.15.4')

options = v1_delete_options.V1DeleteOptions()
resp = api.delete_namespaced_daemon_set(name, 'default', body=options)
api.delete_namespaced_daemon_set(name, 'default', body=options)
12 changes: 9 additions & 3 deletions kubernetes/e2e_test/test_batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,19 @@ def test_job_apis(self):
'apiVersion': 'batch/v1',
'metadata': {'name': name}}

resp = api.create_namespaced_job(
create_job_resp = api.create_namespaced_job(
body=job_manifest, namespace='default')
self.assertEqual(name, resp.metadata.name)
self.assertEqual(name, create_job_resp.metadata.name)

resp = api.read_namespaced_job(
name=name, namespace='default')
self.assertEqual(name, resp.metadata.name)
self.assertEqual(name, resp.spec.template.spec.containers[0].name)
self.assertEqual('busybox', resp.spec.template.spec.containers[0].image)
self.assertEqual('sh', resp.spec.template.spec.containers[0].command[0])
self.assertEqual('-c', resp.spec.template.spec.containers[0].command[1])
self.assertEqual('sleep 5', resp.spec.template.spec.containers[0].command[2])
self.assertEqual('Never', resp.spec.template.spec.restart_policy)

resp = api.delete_namespaced_job(
api.delete_namespaced_job(
name=name, namespace='default', propagation_policy='Background')
109 changes: 106 additions & 3 deletions kubernetes/e2e_test/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ def test_create_apps_deployment_from_yaml(self):
dep = app_api.read_namespaced_deployment(name="nginx-app",
namespace="default")
self.assertIsNotNone(dep)
self.assertEqual("nginx-app", dep.metadata.name)
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
self.assertEqual(80, dep.spec.template.spec.containers[0].ports[0].container_port)
self.assertEqual("nginx", dep.spec.template.spec.containers[0].name)
self.assertEqual("nginx", dep.spec.template.metadata.labels["app"])
self.assertEqual(3, dep.spec.replicas)

while True:
try:
app_api.delete_namespaced_deployment(
Expand All @@ -66,7 +73,7 @@ def test_create_apps_deployment_from_yaml(self):

def test_create_apps_deployment_from_yaml_object(self):
"""
Should be able to pass YAM objects directly to helper function.
Should be able to pass YAML objects directly to helper function.
"""
k8s_client = client.api_client.ApiClient(configuration=self.config)
_path = self.path_prefix + "apps-deployment.yaml"
Expand All @@ -80,6 +87,13 @@ def test_create_apps_deployment_from_yaml_object(self):
dep = app_api.read_namespaced_deployment(name="nginx-app",
namespace="default")
self.assertIsNotNone(dep)
self.assertEqual("nginx-app", dep.metadata.name)
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
self.assertEqual(80, dep.spec.template.spec.containers[0].ports[0].container_port)
self.assertEqual("nginx", dep.spec.template.spec.containers[0].name)
self.assertEqual("nginx", dep.spec.template.metadata.labels["app"])
self.assertEqual(3, dep.spec.replicas)

while True:
try:
app_api.delete_namespaced_deployment(
Expand All @@ -102,6 +116,13 @@ def test_create_apps_deployment_from_yaml_obj(self):
dep = app_api.read_namespaced_deployment(name="nginx-app-3",
namespace="default")
self.assertIsNotNone(dep)
self.assertEqual("nginx-app-3", dep.metadata.name)
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
self.assertEqual(80, dep.spec.template.spec.containers[0].ports[0].container_port)
self.assertEqual("nginx", dep.spec.template.spec.containers[0].name)
self.assertEqual("nginx", dep.spec.template.metadata.labels["app"])
self.assertEqual(3, dep.spec.replicas)

app_api.delete_namespaced_deployment(
name="nginx-app-3", namespace="default",
body={})
Expand All @@ -117,6 +138,10 @@ def test_create_pod_from_yaml(self):
pod = core_api.read_namespaced_pod(name="myapp-pod",
namespace="default")
self.assertIsNotNone(pod)
self.assertEqual("myapp-pod", pod.metadata.name)
self.assertEqual("busybox", pod.spec.containers[0].image)
self.assertEqual("myapp-container", pod.spec.containers[0].name)

core_api.delete_namespaced_pod(
name="myapp-pod", namespace="default",
body={})
Expand All @@ -132,6 +157,9 @@ def test_create_service_from_yaml(self):
svc = core_api.read_namespaced_service(name="my-service",
namespace="default")
self.assertIsNotNone(svc)
self.assertEqual("my-service", svc.metadata.name)
self.assertEqual("MyApp", svc.spec.selector["app"])

core_api.delete_namespaced_service(
name="my-service", namespace="default",
body={})
Expand All @@ -145,12 +173,15 @@ def test_create_namespace_from_yaml(self):
k8s_client, self.path_prefix + "core-namespace.yaml")
core_api = client.CoreV1Api(k8s_client)
nmsp = core_api.read_namespace(name="development")

self.assertIsNotNone(nmsp)
self.assertEqual("development", nmsp.metadata.name)

core_api.delete_namespace(name="development", body={})

def test_create_rbac_role_from_yaml(self):
"""
Should be able to create an rbac role.
Should be able to create a rbac role.
"""
k8s_client = client.api_client.ApiClient(configuration=self.config)
utils.create_from_yaml(
Expand All @@ -159,12 +190,15 @@ def test_create_rbac_role_from_yaml(self):
rbac_role = rbac_api.read_namespaced_role(
name="pod-reader", namespace="default")
self.assertIsNotNone(rbac_role)
self.assertEqual("pod-reader", rbac_role.metadata.name)
self.assertEqual("pods", rbac_role.rules[0].resources[0])

rbac_api.delete_namespaced_role(
name="pod-reader", namespace="default", body={})

def test_create_rbac_role_from_yaml_with_verbose_enabled(self):
"""
Should be able to create an rbac role with verbose enabled.
Should be able to create a rbac role with verbose enabled.
"""
k8s_client = client.api_client.ApiClient(configuration=self.config)
utils.create_from_yaml(
Expand All @@ -173,6 +207,9 @@ def test_create_rbac_role_from_yaml_with_verbose_enabled(self):
rbac_role = rbac_api.read_namespaced_role(
name="pod-reader", namespace="default")
self.assertIsNotNone(rbac_role)
self.assertEqual("pod-reader", rbac_role.metadata.name)
self.assertEqual("pods", rbac_role.rules[0].resources[0])

rbac_api.delete_namespaced_role(
name="pod-reader", namespace="default", body={})

Expand All @@ -190,6 +227,8 @@ def test_create_deployment_non_default_namespace_from_yaml(self):
ext_api = client.AppsV1Api(k8s_client)
nmsp = core_api.read_namespace(name="dep")
self.assertIsNotNone(nmsp)
self.assertEqual("dep", nmsp.metadata.name)

dep = ext_api.read_namespaced_deployment(name="nginx-deployment",
namespace="dep")
self.assertIsNotNone(dep)
Expand All @@ -211,6 +250,10 @@ def test_create_apiservice_from_yaml_with_conflict(self):
svc = reg_api.read_api_service(
name="v1alpha1.wardle.k8s.io")
self.assertIsNotNone(svc)
self.assertEqual("v1alpha1.wardle.k8s.io", svc.metadata.name)
self.assertEqual("wardle.k8s.io", svc.spec.group)
self.assertEqual("v1alpha1", svc.spec.version)

with self.assertRaises(utils.FailToCreateError) as cm:
utils.create_from_yaml(
k8s_client, "kubernetes/e2e_test/test_yaml/api-service.yaml")
Expand Down Expand Up @@ -243,9 +286,16 @@ def test_create_general_list_from_yaml(self):
svc = core_api.read_namespaced_service(name="list-service-test",
namespace="default")
self.assertIsNotNone(svc)
self.assertEqual("list-service-test", svc.metadata.name)
self.assertEqual("list-deployment-test", svc.spec.selector["app"])

dep = ext_api.read_namespaced_deployment(name="list-deployment-test",
namespace="default")
self.assertIsNotNone(dep)
self.assertEqual("list-deployment-test", dep.metadata.name)
self.assertEqual("nginx:1.15.4", dep.spec.template.spec.containers[0].image)
self.assertEqual(1, dep.spec.replicas)

core_api.delete_namespaced_service(name="list-service-test",
namespace="default", body={})
ext_api.delete_namespaced_deployment(name="list-deployment-test",
Expand All @@ -262,8 +312,14 @@ def test_create_namespace_list_from_yaml(self):
core_api = client.CoreV1Api(k8s_client)
nmsp_1 = core_api.read_namespace(name="mock-1")
self.assertIsNotNone(nmsp_1)
self.assertEqual("mock-1", nmsp_1.metadata.name)
self.assertEqual("mock-1", nmsp_1.metadata.labels["name"])

nmsp_2 = core_api.read_namespace(name="mock-2")
self.assertIsNotNone(nmsp_2)
self.assertEqual("mock-2", nmsp_2.metadata.name)
self.assertEqual("mock-2", nmsp_2.metadata.labels["name"])

core_api.delete_namespace(name="mock-1", body={})
core_api.delete_namespace(name="mock-2", body={})

Expand All @@ -280,9 +336,15 @@ def test_create_implicit_service_list_from_yaml_with_conflict(self):
svc_3 = core_api.read_namespaced_service(name="mock-3",
namespace="default")
self.assertIsNotNone(svc_3)
self.assertEqual("mock-3", svc_3.metadata.name)
self.assertEqual("mock-3", svc_3.metadata.labels["app"])

svc_4 = core_api.read_namespaced_service(name="mock-4",
namespace="default")
self.assertIsNotNone(svc_4)
self.assertEqual("mock-4", svc_4.metadata.name)
self.assertEqual("mock-4", svc_4.metadata.labels["app"])

core_api.delete_namespaced_service(name="mock-3",
namespace="default", body={})
core_api.delete_namespaced_service(name="mock-4",
Expand All @@ -302,9 +364,20 @@ def test_create_multi_resource_from_directory(self):
svc = core_api.read_namespaced_service(name="mock",
namespace="default")
self.assertIsNotNone(svc)
self.assertEqual("mock", svc.metadata.name)
self.assertEqual("mock", svc.metadata.labels["app"])
self.assertEqual("mock", svc.spec.selector["app"])

ctr = core_api.read_namespaced_replication_controller(
name="mock", namespace="default")
self.assertIsNotNone(ctr)
self.assertEqual("mock", ctr.metadata.name)
self.assertEqual("mock", ctr.spec.template.metadata.labels["app"])
self.assertEqual("mock", ctr.spec.selector["app"])
self.assertEqual(1, ctr.spec.replicas)
self.assertEqual("k8s.gcr.io/pause:2.0", ctr.spec.template.spec.containers[0].image)
self.assertEqual("mock-container", ctr.spec.template.spec.containers[0].name)

core_api.delete_namespaced_replication_controller(
name="mock", namespace="default", propagation_policy="Background")
core_api.delete_namespaced_service(name="mock",
Expand All @@ -324,9 +397,20 @@ def test_create_from_multi_resource_yaml(self):
svc = core_api.read_namespaced_service(name="mock",
namespace="default")
self.assertIsNotNone(svc)
self.assertEqual("mock", svc.metadata.name)
self.assertEqual("mock", svc.metadata.labels["app"])
self.assertEqual("mock", svc.spec.selector["app"])

ctr = core_api.read_namespaced_replication_controller(
name="mock", namespace="default")
self.assertIsNotNone(ctr)
self.assertEqual("mock", ctr.metadata.name)
self.assertEqual("mock", ctr.spec.template.metadata.labels["app"])
self.assertEqual("mock", ctr.spec.selector["app"])
self.assertEqual(1, ctr.spec.replicas)
self.assertEqual("k8s.gcr.io/pause:2.0", ctr.spec.template.spec.containers[0].image)
self.assertEqual("mock-container", ctr.spec.template.spec.containers[0].name)

core_api.delete_namespaced_replication_controller(
name="mock", namespace="default", propagation_policy="Background")
core_api.delete_namespaced_service(name="mock",
Expand All @@ -345,12 +429,26 @@ def test_create_from_list_in_multi_resource_yaml(self):
pod_0 = core_api.read_namespaced_pod(
name="mock-pod-0", namespace="default")
self.assertIsNotNone(pod_0)
self.assertEqual("mock-pod-0", pod_0.metadata.name)
self.assertEqual("mock-pod-0", pod_0.metadata.labels["app"])
self.assertEqual("mock-pod-0", pod_0.spec.containers[0].name)
self.assertEqual("busybox", pod_0.spec.containers[0].image)

pod_1 = core_api.read_namespaced_pod(
name="mock-pod-1", namespace="default")
self.assertIsNotNone(pod_1)
self.assertEqual("mock-pod-1", pod_1.metadata.name)
self.assertEqual("mock-pod-1", pod_1.metadata.labels["app"])
self.assertEqual("mock-pod-1", pod_1.spec.containers[0].name)
self.assertEqual("busybox", pod_1.spec.containers[0].image)

dep = app_api.read_namespaced_deployment(
name="mock", namespace="default")
self.assertIsNotNone(dep)
self.assertEqual("mock", dep.metadata.name)
self.assertEqual("mock", dep.spec.template.metadata.labels["app"])
self.assertEqual(3, dep.spec.replicas)

core_api.delete_namespaced_pod(
name="mock-pod-0", namespace="default", body={})
core_api.delete_namespaced_pod(
Expand All @@ -372,6 +470,11 @@ def test_create_from_multi_resource_yaml_with_conflict(self):
svc = core_api.read_namespaced_service(name="mock-2",
namespace="default")
self.assertIsNotNone(svc)
self.assertEqual("mock-2", svc.metadata.name)
self.assertEqual("mock-2", svc.metadata.labels["app"])
self.assertEqual("mock-2", svc.spec.selector["app"])
self.assertEqual(99, svc.spec.ports[0].port)

with self.assertRaises(utils.FailToCreateError) as cm:
utils.create_from_yaml(
k8s_client, self.path_prefix + "yaml-conflict-multi.yaml")
Expand Down

0 comments on commit 36cfbe6

Please sign in to comment.