X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=installers%2Fcharm%2Fro%2Ftests%2Ftest_pod_spec.py;fp=installers%2Fcharm%2Fro%2Ftests%2Ftest_pod_spec.py;h=0000000000000000000000000000000000000000;hb=e93311d0d1e614b2ee73cc88d8a04fdec217cff8;hp=e6162420fadc223e5faacb16aeb864259b14c30c;hpb=b26337f4b399b8d2307002aa7ca98c23e2d3a1ed;p=osm%2Fdevops.git diff --git a/installers/charm/ro/tests/test_pod_spec.py b/installers/charm/ro/tests/test_pod_spec.py deleted file mode 100644 index e6162420..00000000 --- a/installers/charm/ro/tests/test_pod_spec.py +++ /dev/null @@ -1,389 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2020 Canonical Ltd. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# -# For those usages not covered by the Apache License, Version 2.0 please -# contact: legal@canonical.com -# -# To get in touch with the maintainers, please contact: -# osm-charmers@lists.launchpad.net -## - -from typing import NoReturn -import unittest - -import pod_spec - - -class TestPodSpec(unittest.TestCase): - """Pod spec unit tests.""" - - def test_make_pod_ports(self) -> NoReturn: - """Testing make pod ports.""" - port = 9090 - - expected_result = [ - { - "name": "ro", - "containerPort": port, - "protocol": "TCP", - } - ] - - pod_ports = pod_spec._make_pod_ports(port) - - self.assertListEqual(expected_result, pod_ports) - - def test_make_pod_envconfig_ng_ro(self) -> NoReturn: - """Teting make pod envconfig.""" - config = { - "enable_ng_ro": True, - "database_commonkey": "osm", - "log_level": "INFO", - } - relation_state = { - "kafka_host": "kafka", - "kafka_port": "9090", - "mongodb_connection_string": "mongodb://mongo", - } - - expected_result = { - "OSMRO_LOG_LEVEL": config["log_level"], - "OSMRO_MESSAGE_DRIVER": "kafka", - "OSMRO_MESSAGE_HOST": relation_state["kafka_host"], - "OSMRO_MESSAGE_PORT": relation_state["kafka_port"], - "OSMRO_DATABASE_DRIVER": "mongo", - "OSMRO_DATABASE_URI": relation_state["mongodb_connection_string"], - "OSMRO_DATABASE_COMMONKEY": config["database_commonkey"], - } - - pod_envconfig = pod_spec._make_pod_envconfig(config, relation_state) - - self.assertDictEqual(expected_result, pod_envconfig) - - def test_make_pod_envconfig_no_ng_ro(self) -> NoReturn: - """Teting make pod envconfig.""" - config = { - "log_level": "INFO", - "enable_ng_ro": False, - "vim_database": "mano_vim_db", - "ro_database": "mano_db", - "openmano_tenant": "osm", - } - relation_state = { - "mysql_host": "mysql", - "mysql_port": 3306, - "mysql_user": "mano", - "mysql_password": "manopw", - "mysql_root_password": "rootmanopw", - } - - expected_result = { - "OSMRO_LOG_LEVEL": config["log_level"], - "RO_DB_HOST": relation_state["mysql_host"], - "RO_DB_OVIM_HOST": relation_state["mysql_host"], - "RO_DB_PORT": relation_state["mysql_port"], - "RO_DB_OVIM_PORT": relation_state["mysql_port"], - "RO_DB_USER": relation_state["mysql_user"], - "RO_DB_OVIM_USER": relation_state["mysql_user"], - "RO_DB_PASSWORD": relation_state["mysql_password"], - "RO_DB_OVIM_PASSWORD": relation_state["mysql_password"], - "RO_DB_ROOT_PASSWORD": relation_state["mysql_root_password"], - "RO_DB_OVIM_ROOT_PASSWORD": relation_state["mysql_root_password"], - "RO_DB_NAME": config["ro_database"], - "RO_DB_OVIM_NAME": config["vim_database"], - "OPENMANO_TENANT": config["openmano_tenant"], - } - - pod_envconfig = pod_spec._make_pod_envconfig(config, relation_state) - - self.assertDictEqual(expected_result, pod_envconfig) - - def test_make_startup_probe(self) -> NoReturn: - """Testing make startup probe.""" - expected_result = { - "exec": {"command": ["/usr/bin/pgrep", "python3"]}, - "initialDelaySeconds": 60, - "timeoutSeconds": 5, - } - - startup_probe = pod_spec._make_startup_probe() - - self.assertDictEqual(expected_result, startup_probe) - - def test_make_readiness_probe(self) -> NoReturn: - """Testing make readiness probe.""" - port = 9090 - - expected_result = { - "httpGet": { - "path": "/openmano/tenants", - "port": port, - }, - "periodSeconds": 10, - "timeoutSeconds": 5, - "successThreshold": 1, - "failureThreshold": 3, - } - - readiness_probe = pod_spec._make_readiness_probe(port) - - self.assertDictEqual(expected_result, readiness_probe) - - def test_make_liveness_probe(self) -> NoReturn: - """Testing make liveness probe.""" - port = 9090 - - expected_result = { - "httpGet": { - "path": "/openmano/tenants", - "port": port, - }, - "initialDelaySeconds": 600, - "periodSeconds": 10, - "timeoutSeconds": 5, - "successThreshold": 1, - "failureThreshold": 3, - } - - liveness_probe = pod_spec._make_liveness_probe(port) - - self.assertDictEqual(expected_result, liveness_probe) - - def test_make_pod_spec_ng_ro(self) -> NoReturn: - """Testing make pod spec.""" - image_info = {"upstream-source": "opensourcemano/ro:8"} - config = { - "database_commonkey": "osm", - "log_level": "INFO", - "enable_ng_ro": True, - } - relation_state = { - "kafka_host": "kafka", - "kafka_port": "9090", - "mongodb_connection_string": "mongodb://mongo", - } - app_name = "ro" - port = 9090 - - expected_result = { - "version": 3, - "containers": [ - { - "name": app_name, - "imageDetails": image_info, - "imagePullPolicy": "Always", - "ports": [ - { - "name": app_name, - "containerPort": port, - "protocol": "TCP", - } - ], - "envConfig": { - "OSMRO_LOG_LEVEL": config["log_level"], - "OSMRO_MESSAGE_DRIVER": "kafka", - "OSMRO_MESSAGE_HOST": relation_state["kafka_host"], - "OSMRO_MESSAGE_PORT": relation_state["kafka_port"], - "OSMRO_DATABASE_DRIVER": "mongo", - "OSMRO_DATABASE_URI": relation_state[ - "mongodb_connection_string" - ], - "OSMRO_DATABASE_COMMONKEY": config["database_commonkey"], - }, - "kubernetes": { - "startupProbe": { - "exec": {"command": ["/usr/bin/pgrep", "python3"]}, - "initialDelaySeconds": 60, - "timeoutSeconds": 5, - }, - "readinessProbe": { - "httpGet": { - "path": "/openmano/tenants", - "port": port, - }, - "periodSeconds": 10, - "timeoutSeconds": 5, - "successThreshold": 1, - "failureThreshold": 3, - }, - "livenessProbe": { - "httpGet": { - "path": "/openmano/tenants", - "port": port, - }, - "initialDelaySeconds": 600, - "periodSeconds": 10, - "timeoutSeconds": 5, - "successThreshold": 1, - "failureThreshold": 3, - }, - }, - } - ], - "kubernetesResources": {"ingressResources": []}, - } - - spec = pod_spec.make_pod_spec( - image_info, config, relation_state, app_name, port - ) - - self.assertDictEqual(expected_result, spec) - - def test_make_pod_spec_no_ng_ro(self) -> NoReturn: - """Testing make pod spec.""" - image_info = {"upstream-source": "opensourcemano/ro:8"} - config = { - "log_level": "INFO", - "enable_ng_ro": False, - "vim_database": "mano_vim_db", - "ro_database": "mano_db", - "openmano_tenant": "osm", - } - relation_state = { - "mysql_host": "mysql", - "mysql_port": 3306, - "mysql_user": "mano", - "mysql_password": "manopw", - "mysql_root_password": "rootmanopw", - } - app_name = "ro" - port = 9090 - - expected_result = { - "version": 3, - "containers": [ - { - "name": app_name, - "imageDetails": image_info, - "imagePullPolicy": "Always", - "ports": [ - { - "name": app_name, - "containerPort": port, - "protocol": "TCP", - } - ], - "envConfig": { - "OSMRO_LOG_LEVEL": config["log_level"], - "RO_DB_HOST": relation_state["mysql_host"], - "RO_DB_OVIM_HOST": relation_state["mysql_host"], - "RO_DB_PORT": relation_state["mysql_port"], - "RO_DB_OVIM_PORT": relation_state["mysql_port"], - "RO_DB_USER": relation_state["mysql_user"], - "RO_DB_OVIM_USER": relation_state["mysql_user"], - "RO_DB_PASSWORD": relation_state["mysql_password"], - "RO_DB_OVIM_PASSWORD": relation_state["mysql_password"], - "RO_DB_ROOT_PASSWORD": relation_state["mysql_root_password"], - "RO_DB_OVIM_ROOT_PASSWORD": relation_state[ - "mysql_root_password" - ], - "RO_DB_NAME": config["ro_database"], - "RO_DB_OVIM_NAME": config["vim_database"], - "OPENMANO_TENANT": config["openmano_tenant"], - }, - "kubernetes": { - "startupProbe": { - "exec": {"command": ["/usr/bin/pgrep", "python3"]}, - "initialDelaySeconds": 60, - "timeoutSeconds": 5, - }, - "readinessProbe": { - "httpGet": { - "path": "/openmano/tenants", - "port": port, - }, - "periodSeconds": 10, - "timeoutSeconds": 5, - "successThreshold": 1, - "failureThreshold": 3, - }, - "livenessProbe": { - "httpGet": { - "path": "/openmano/tenants", - "port": port, - }, - "initialDelaySeconds": 600, - "periodSeconds": 10, - "timeoutSeconds": 5, - "successThreshold": 1, - "failureThreshold": 3, - }, - }, - } - ], - "kubernetesResources": {"ingressResources": []}, - } - - spec = pod_spec.make_pod_spec( - image_info, config, relation_state, app_name, port - ) - - self.assertDictEqual(expected_result, spec) - - def test_make_pod_spec_without_image_info(self) -> NoReturn: - """Testing make pod spec without image_info.""" - image_info = None - config = { - "enable_ng_ro": True, - "database_commonkey": "osm", - "log_level": "INFO", - } - relation_state = { - "kafka_host": "kafka", - "kafka_port": 9090, - "mongodb_connection_string": "mongodb://mongo", - } - app_name = "ro" - port = 9090 - - spec = pod_spec.make_pod_spec( - image_info, config, relation_state, app_name, port - ) - - self.assertIsNone(spec) - - def test_make_pod_spec_without_config(self) -> NoReturn: - """Testing make pod spec without config.""" - image_info = {"upstream-source": "opensourcemano/ro:8"} - config = {} - relation_state = { - "kafka_host": "kafka", - "kafka_port": 9090, - "mongodb_connection_string": "mongodb://mongo", - } - app_name = "ro" - port = 9090 - - with self.assertRaises(ValueError): - pod_spec.make_pod_spec(image_info, config, relation_state, app_name, port) - - def test_make_pod_spec_without_relation_state(self) -> NoReturn: - """Testing make pod spec without relation_state.""" - image_info = {"upstream-source": "opensourcemano/ro:8"} - config = { - "enable_ng_ro": True, - "database_commonkey": "osm", - "log_level": "INFO", - } - relation_state = {} - app_name = "ro" - port = 9090 - - with self.assertRaises(ValueError): - pod_spec.make_pod_spec(image_info, config, relation_state, app_name, port) - - -if __name__ == "__main__": - unittest.main()