import asyncio
import logging
+from unittest.mock import Mock
+
+
import asynctest
from n2vc.n2vc_juju_conn import N2VCJujuConnector
from osm_common import fslocal
class N2VCJujuConnTestCase(asynctest.TestCase):
+ @asynctest.mock.patch("n2vc.libjuju.Libjuju._create_health_check_task")
@asynctest.mock.patch("juju.controller.Controller.update_endpoints")
@asynctest.mock.patch("juju.client.connector.Connector.connect")
@asynctest.mock.patch("juju.controller.Controller.connection")
mock_connection=None,
mock_connect=None,
mock_update_endpoints=None,
+ mock__create_health_check_task=None,
):
+ mock__get_api_endpoints_db.return_value = ["2.2.2.2:17070"]
loop = asyncio.get_event_loop()
db = {}
vca_config = {
logging.disable(logging.CRITICAL)
+ N2VCJujuConnector.get_public_key = Mock()
self.n2vc = N2VCJujuConnector(
db=db,
fs=fslocal.FsLocal(),
vca_config=vca_config,
on_update_db=None,
)
+ N2VCJujuConnector.get_public_key.assert_not_called()
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.get_metrics")
+class GetMetricssTest(N2VCJujuConnTestCase):
+ def setUp(self):
+ super(GetMetricssTest, self).setUp()
+ def test_success(self, mock_get_metrics):
+ _ = self.loop.run_until_complete(self.n2vc.get_metrics("model", "application"))
+ mock_get_metrics.assert_called_once()
+ def test_except(self, mock_get_metrics):
+ mock_get_metrics.side_effect = Exception()
+ with self.assertRaises(Exception):
+ _ = self.loop.run_until_complete(
+ self.n2vc.get_metrics("model", "application")
+ )
+ mock_get_metrics.assert_called_once()
+
+
+@asynctest.mock.patch("n2vc.libjuju.Libjuju.model_exists")
@asynctest.mock.patch("osm_common.fslocal.FsLocal.file_exists")
@asynctest.mock.patch(
"osm_common.fslocal.FsLocal.path", new_callable=asynctest.PropertyMock, create=True
super(K8sProxyCharmsTest, self).setUp()
def test_success(
- self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists,
+ self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists
):
+ mock_model_exists.return_value = None
mock_file_exists.return_value = True
mock_path.return_value = "/path"
ee_id = self.loop.run_until_complete(
)
)
- mock_add_model.assert_called_once_with("ns-id-k8s", "k8s_cloud")
+ mock_add_model.assert_called_once_with(
+ "ns-id-k8s",
+ cloud_name=self.n2vc.k8s_cloud,
+ credential_name=self.n2vc.k8s_cloud
+ )
mock_deploy_charm.assert_called_once_with(
model_name="ns-id-k8s",
application_name="app-vnf-vnf-id-vdu-vdu",
mock_deploy_charm,
mock_path,
mock_file_exists,
+ mock_model_exists,
):
mock_k8s_cloud.return_value = None
with self.assertRaises(JujuK8sProxycharmNotSupported):
self.assertIsNone(ee_id)
def test_no_artifact_path(
- self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists,
+ self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists,
):
with self.assertRaises(N2VCBadArgumentsException):
ee_id = self.loop.run_until_complete(
self.assertIsNone(ee_id)
def test_no_db(
- self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists,
+ self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists,
):
with self.assertRaises(N2VCBadArgumentsException):
ee_id = self.loop.run_until_complete(
self.assertIsNone(ee_id)
def test_file_not_exists(
- self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists,
+ self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists,
):
mock_file_exists.return_value = False
with self.assertRaises(N2VCBadArgumentsException):
self.assertIsNone(ee_id)
def test_exception(
- self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists,
+ self, mock_add_model, mock_deploy_charm, mock_path, mock_file_exists, mock_model_exists,
):
+ mock_model_exists.return_value = None
mock_file_exists.return_value = True
mock_path.return_value = "/path"
mock_deploy_charm.side_effect = Exception()