From 9467b9b836e3213ad0792f4d1991ffa1b3fb0078 Mon Sep 17 00:00:00 2001 From: Fabian von Feilitzsch Date: Thu, 23 Mar 2017 14:39:07 -0400 Subject: [PATCH 1/3] add functional tests for persistent volume creation/removal --- .../examples/v1_persistent_volume.yml | 6 ++ test/functional/test_v1_persistent_volume.py | 76 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 openshift/ansiblegen/examples/v1_persistent_volume.yml create mode 100644 test/functional/test_v1_persistent_volume.py diff --git a/openshift/ansiblegen/examples/v1_persistent_volume.yml b/openshift/ansiblegen/examples/v1_persistent_volume.yml new file mode 100644 index 00000000..2712815a --- /dev/null +++ b/openshift/ansiblegen/examples/v1_persistent_volume.yml @@ -0,0 +1,6 @@ +# v1_persistent_volume.yml +--- + +- create: + name: mypv + name: Create persitent volume diff --git a/test/functional/test_v1_persistent_volume.py b/test/functional/test_v1_persistent_volume.py new file mode 100644 index 00000000..7c59108d --- /dev/null +++ b/test/functional/test_v1_persistent_volume.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import print_function + +import pytest + +from openshift.helper.exceptions import OpenShiftException + + + +@pytest.fixture() +def host_dir(tmpdir_factory): + host_dir = tmpdir_factory.mktemp('volume') + return host_dir.strpath + + +@pytest.fixture() +def create_params(create_tasks, project, object_name, host_dir): + parameters = create_tasks['create'] + parameters.update({ + "name": object_name, + "capacity": { + 'storage': '1Gi', + }, + "access_modes": ['ReadWriteOnce'], + "persistent_volume_reclaim_policy": 'Recycle', + "host_path_path": host_dir + }) + return parameters + + +@pytest.fixture() +def patch_params(patch_tasks, project, object_name): + parameters = patch_tasks['patch'] + parameters['name'] = object_name + return parameters + + +@pytest.fixture() +def replace_params(replace_tasks, project, object_name): + parameters = replace_tasks['replace'] + parameters['name'] = object_name + return parameters + + +@pytest.fixture() +def persistent_volume(ansible_helper, create_params): + request_body = ansible_helper.request_body_from_params(create_params) + name = create_params.get('name') + k8s_obj = ansible_helper.create_object(None, body=request_body) + + yield k8s_obj + + try: + ansible_helper.delete_object(name, None) + except OpenShiftException as ex: + # Swallow exception if object is already removed + if ex.value.get('status') != 404 and ex.value.get('status') != 403: + raise + + +def test_create_persistent_volume(ansible_helper, create_params, persistent_volume, obj_compare): + obj_compare(ansible_helper, persistent_volume, create_params) + + +def test_get_persistent_volume(ansible_helper, persistent_volume): + name = persistent_volume.metadata.name + k8s_obj = ansible_helper.get_object(name, None) + assert k8s_obj is not None + + +def test_remove_persistent_volume(ansible_helper, persistent_volume): + name = persistent_volume.metadata.name + ansible_helper.delete_object(name, None) + k8s_obj = ansible_helper.get_object(name, None) + assert k8s_obj is None From d51a1876835eafbaf00cee93088e3d75548a0146 Mon Sep 17 00:00:00 2001 From: Fabian von Feilitzsch Date: Thu, 23 Mar 2017 14:59:35 -0400 Subject: [PATCH 2/3] add tests for pvc --- .../examples/v1_persistent_volume_claim.yml | 6 ++ .../test_v1_persistent_volume_claim.py | 71 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 openshift/ansiblegen/examples/v1_persistent_volume_claim.yml create mode 100644 test/functional/test_v1_persistent_volume_claim.py diff --git a/openshift/ansiblegen/examples/v1_persistent_volume_claim.yml b/openshift/ansiblegen/examples/v1_persistent_volume_claim.yml new file mode 100644 index 00000000..fec01d39 --- /dev/null +++ b/openshift/ansiblegen/examples/v1_persistent_volume_claim.yml @@ -0,0 +1,6 @@ +# v1_persistent_volume.yml +--- + +- create: + name: mypvc + name: Create persitent volume claim diff --git a/test/functional/test_v1_persistent_volume_claim.py b/test/functional/test_v1_persistent_volume_claim.py new file mode 100644 index 00000000..5306d2b0 --- /dev/null +++ b/test/functional/test_v1_persistent_volume_claim.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import print_function + +import pytest + +from openshift.helper.exceptions import OpenShiftException + + +@pytest.fixture() +def create_params(create_tasks, project, object_name): + parameters = create_tasks['create'] + parameters.update({ + "name": object_name, + "namespace": project, + "access_modes": ['ReadWriteOnce'], + "resources_requests": { + "storage": "1Gi" + } + }) + return parameters + + +@pytest.fixture() +def patch_params(patch_tasks, project, object_name): + parameters = patch_tasks['patch'] + parameters['name'] = object_name + return parameters + + +@pytest.fixture() +def replace_params(replace_tasks, project, object_name): + parameters = replace_tasks['replace'] + parameters['name'] = object_name + return parameters + + +@pytest.fixture() +def persistent_volume_claim(ansible_helper, create_params): + request_body = ansible_helper.request_body_from_params(create_params) + name = create_params.get('name') + namespace = create_params.get('namespace') + k8s_obj = ansible_helper.create_object(namespace, body=request_body) + + yield k8s_obj + + try: + ansible_helper.delete_object(name, namespace) + except OpenShiftException as ex: + # Swallow exception if object is already removed + if ex.value.get('status') != 404 and ex.value.get('status') != 403: + raise + + +def test_create_persistent_volume_claim(ansible_helper, create_params, persistent_volume_claim, obj_compare): + obj_compare(ansible_helper, persistent_volume_claim, create_params) + + +def test_get_persistent_volume_claim(ansible_helper, persistent_volume_claim): + name = persistent_volume_claim.metadata.name + namespace = persistent_volume_claim.metadata.namespace + k8s_obj = ansible_helper.get_object(name, namespace) + assert k8s_obj is not None + + +def test_remove_persistent_volume_claim(ansible_helper, persistent_volume_claim): + name = persistent_volume_claim.metadata.name + namespace = persistent_volume_claim.metadata.namespace + ansible_helper.delete_object(name, namespace) + k8s_obj = ansible_helper.get_object(name, namespace) + assert k8s_obj is None From 9009b42a41e0511f4adf40ef2c8a1690c504dfb9 Mon Sep 17 00:00:00 2001 From: Fabian von Feilitzsch Date: Thu, 23 Mar 2017 15:28:13 -0400 Subject: [PATCH 3/3] use admin helper for creating pvs --- test/functional/test_v1_persistent_volume.py | 22 ++++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/test/functional/test_v1_persistent_volume.py b/test/functional/test_v1_persistent_volume.py index 7c59108d..c7fb5257 100644 --- a/test/functional/test_v1_persistent_volume.py +++ b/test/functional/test_v1_persistent_volume.py @@ -44,33 +44,33 @@ def replace_params(replace_tasks, project, object_name): @pytest.fixture() -def persistent_volume(ansible_helper, create_params): - request_body = ansible_helper.request_body_from_params(create_params) +def persistent_volume(admin_ansible_helper, create_params): + request_body = admin_ansible_helper.request_body_from_params(create_params) name = create_params.get('name') - k8s_obj = ansible_helper.create_object(None, body=request_body) + k8s_obj = admin_ansible_helper.create_object(None, body=request_body) yield k8s_obj try: - ansible_helper.delete_object(name, None) + admin_ansible_helper.delete_object(name, None) except OpenShiftException as ex: # Swallow exception if object is already removed if ex.value.get('status') != 404 and ex.value.get('status') != 403: raise -def test_create_persistent_volume(ansible_helper, create_params, persistent_volume, obj_compare): - obj_compare(ansible_helper, persistent_volume, create_params) +def test_create_persistent_volume(admin_ansible_helper, create_params, persistent_volume, obj_compare): + obj_compare(admin_ansible_helper, persistent_volume, create_params) -def test_get_persistent_volume(ansible_helper, persistent_volume): +def test_get_persistent_volume(admin_ansible_helper, persistent_volume): name = persistent_volume.metadata.name - k8s_obj = ansible_helper.get_object(name, None) + k8s_obj = admin_ansible_helper.get_object(name, None) assert k8s_obj is not None -def test_remove_persistent_volume(ansible_helper, persistent_volume): +def test_remove_persistent_volume(admin_ansible_helper, persistent_volume): name = persistent_volume.metadata.name - ansible_helper.delete_object(name, None) - k8s_obj = ansible_helper.get_object(name, None) + admin_ansible_helper.delete_object(name, None) + k8s_obj = admin_ansible_helper.get_object(name, None) assert k8s_obj is None