X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=n2vc%2Ftests%2Funit%2Ftest_n2vc_juju_conn.py;h=4fef1f26a50a2ed907e7dc80099462aefcf3985b;hb=8070c3c8260010f052ee9fe546c85bed4aa6b2eb;hp=2475d016d9d7c22564f222d50aec3097fb68a388;hpb=582b923b8f3f7104411c39ebdba63949d606ecd1;p=osm%2FN2VC.git diff --git a/n2vc/tests/unit/test_n2vc_juju_conn.py b/n2vc/tests/unit/test_n2vc_juju_conn.py index 2475d01..4fef1f2 100644 --- a/n2vc/tests/unit/test_n2vc_juju_conn.py +++ b/n2vc/tests/unit/test_n2vc_juju_conn.py @@ -16,6 +16,7 @@ import asyncio import logging from unittest.mock import Mock +from unittest.mock import patch import asynctest @@ -25,6 +26,7 @@ from osm_common import fslocal from n2vc.exceptions import ( N2VCBadArgumentsException, N2VCException, + JujuApplicationNotFound, ) from n2vc.tests.unit.utils import AsyncMock from n2vc.vca.connection_data import ConnectionData @@ -144,8 +146,13 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.n2vc.libjuju.deploy_charm = AsyncMock() self.n2vc.libjuju.model_exists.return_value = False + @patch( + "n2vc.n2vc_juju_conn.generate_random_alfanum_string", + **{"return_value": "random"} + ) def test_success( self, + mock_generate_random_alfanum_string, mock_path, mock_file_exists, ): @@ -163,7 +170,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): self.n2vc.libjuju.add_model.assert_called_once() self.n2vc.libjuju.deploy_charm.assert_called_once_with( model_name="ns-id-k8s", - application_name="app-vnf-vnf-id-vdu-vdu", + application_name="app-vnf-vnf-id-vdu-vdu-random", path="/path/path/", machine_id=None, db_dict={}, @@ -171,7 +178,7 @@ class K8sProxyCharmsTest(N2VCJujuConnTestCase): total_timeout=None, config=None, ) - self.assertEqual(ee_id, "ns-id-k8s.app-vnf-vnf-id-vdu-vdu.k8s") + self.assertEqual(ee_id, "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s") def test_no_artifact_path( self, @@ -285,3 +292,88 @@ class AddRelationTest(N2VCJujuConnTestCase): self.loop.run_until_complete( self.n2vc.add_relation(relation_endpoint_1, relation_endpoint_2) ) + + +class UpgradeCharmTest(N2VCJujuConnTestCase): + def setUp(self): + super(UpgradeCharmTest, self).setUp() + self.n2vc._get_libjuju = AsyncMock(return_value=self.n2vc.libjuju) + N2VCJujuConnector._get_ee_id_components = Mock() + self.n2vc.libjuju.upgrade_charm = AsyncMock() + + def test_empty_ee_id(self): + with self.assertRaises(N2VCBadArgumentsException): + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "", "/sample_charm_path", "sample_charm_id", "native-charm", None + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_not_called() + self.n2vc.libjuju.upgrade_charm.assert_not_called() + + def test_wrong_ee_id(self): + N2VCJujuConnector._get_ee_id_components.side_effect = Exception + with self.assertRaises(N2VCBadArgumentsException): + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s", + "/sample_charm_path", + "sample_charm_id", + "native-charm", + 500, + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_called() + self.n2vc.libjuju.upgrade_charm.assert_not_called() + + def test_charm_upgrade_succeded(self): + N2VCJujuConnector._get_ee_id_components.return_value = ( + "sample_model", + "sample_app", + "sample_machine_id", + ) + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s", + "/sample_charm_path", + "sample_charm_id", + "native-charm", + 500, + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_called() + self.n2vc.libjuju.upgrade_charm.assert_called_with( + application_name="sample_app", + path="/sample_charm_path", + model_name="sample_model", + total_timeout=500, + ) + + def test_charm_upgrade_failed(self): + N2VCJujuConnector._get_ee_id_components.return_value = ( + "sample_model", + "sample_app", + "sample_machine_id", + ) + self.n2vc.libjuju.upgrade_charm.side_effect = JujuApplicationNotFound + with self.assertRaises(N2VCException): + self.loop.run_until_complete( + self.n2vc.upgrade_charm( + "ns-id-k8s.app-vnf-vnf-id-vdu-vdu-random.k8s", + "/sample_charm_path", + "sample_charm_id", + "native-charm", + None, + ) + ) + self.n2vc._get_libjuju.assert_called() + self.n2vc._get_ee_id_components.assert_called() + self.n2vc.libjuju.upgrade_charm.assert_called_with( + application_name="sample_app", + path="/sample_charm_path", + model_name="sample_model", + total_timeout=None, + )