# http://www.apache.org/licenses/LICENSE-2.0
+import multiprocessing
# 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
# For those usages not covered by the Apache License, Version 2.0 please
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##
-import asyncio
-import random
import unittest
+from unittest import mock
-from mock import mock
+from osm_mon.collector.collector import Collector
+from osm_mon.collector.collectors.juju import VCACollector
+from osm_mon.collector.collectors.openstack import OpenstackCollector
+from osm_mon.core.database import VimCredentials
-from osm_mon.collector.collector import MonCollector
-
-class MonCollectorTest(unittest.TestCase):
+class CollectorTest(unittest.TestCase):
def setUp(self):
super().setUp()
- self.loop = asyncio.new_event_loop()
- asyncio.set_event_loop(None)
-
- def test_generate_vca_vdu_name(self):
- vdur_name = 'test-juju-metrics01-1-ubuntuvdu1-1'
- expected = 'test-juju-metricsab-b-ubuntuvdub'
- result = self.loop.run_until_complete(MonCollector._generate_vca_vdu_name(vdur_name))
- self.assertEqual(result, expected)
-
- @mock.patch.object(random, 'randint')
- def test_generate_read_metric_payload(self, randint):
- randint.return_value = 1
- metric_name = 'cpu_utilization'
- nsr_id = 'test_id'
- vdu_name = 'test_vdu'
- vnf_member_index = 1
- expected_payload = {
- 'correlation_id': 1,
- 'metric_name': metric_name,
- 'ns_id': nsr_id,
- 'vnf_member_index': vnf_member_index,
- 'vdu_name': vdu_name,
- 'collection_period': 1,
- 'collection_unit': 'DAY',
- }
- result = self.loop.run_until_complete(
- MonCollector._generate_read_metric_payload(metric_name, nsr_id, vdu_name, vnf_member_index))
- self.assertEqual(result, expected_payload)
+
+ @mock.patch("osm_mon.collector.collector.CommonDbClient", autospec=True)
+ def test_get_vim_id(self, common_db):
+ common_db.return_value.get_vnfr.return_value = {'_id': 'a314c865-aee7-4d9b-9c9d-079d7f857f01',
+ '_admin': {
+ 'projects_read': ['admin'], 'created': 1526044312.102287,
+ 'modified': 1526044312.102287, 'projects_write': ['admin']
+ },
+ 'vim-account-id': 'c1740601-7287-48c8-a2c9-bce8fee459eb',
+ 'nsr-id-ref': '5ec3f571-d540-4cb0-9992-971d1b08312e',
+ 'vdur': [
+ {
+ 'internal-connection-point': [],
+ 'vdu-id-ref': 'ubuntuvnf_vnfd-VM',
+ 'id': 'ffd73f33-c8bb-4541-a977-44dcc3cbe28d',
+ 'vim-id': '27042672-5190-4209-b844-95bbaeea7ea7',
+ 'name': 'ubuntuvnf_vnfd-VM'
+ }
+ ],
+ 'vnfd-ref': 'ubuntuvnf_vnfd',
+ 'member-vnf-index-ref': '1',
+ 'created-time': 1526044312.0999322,
+ 'vnfd-id': 'a314c865-aee7-4d9b-9c9d-079d7f857f01',
+ 'id': 'a314c865-aee7-4d9b-9c9d-079d7f857f01'}
+ collector = Collector()
+ vim_account_id = collector._get_vim_account_id('5ec3f571-d540-4cb0-9992-971d1b08312e', 1)
+ self.assertEqual(vim_account_id, 'c1740601-7287-48c8-a2c9-bce8fee459eb')
+
+ @mock.patch("osm_mon.collector.collector.CommonDbClient", mock.Mock())
+ @mock.patch("osm_mon.collector.collector.DatabaseManager", autospec=True)
+ def test_get_vim_type(self, database_manager):
+ mock_creds = VimCredentials()
+ mock_creds.id = 'test_id'
+ mock_creds.user = 'user'
+ mock_creds.url = 'url'
+ mock_creds.password = 'password'
+ mock_creds.tenant_name = 'tenant_name'
+ mock_creds.type = 'openstack'
+
+ database_manager.return_value.get_credentials.return_value = mock_creds
+ collector = Collector()
+ vim_type = collector._get_vim_type('test_id')
+ self.assertEqual(vim_type, 'openstack')
+
+ @mock.patch("osm_mon.collector.collector.CommonDbClient", mock.Mock())
+ @mock.patch.object(OpenstackCollector, "__init__", lambda *args, **kwargs: None)
+ @mock.patch.object(OpenstackCollector, "collect")
+ @mock.patch.object(Collector, "_get_vim_type")
+ def test_init_vim_collector_and_collect_openstack(self, _get_vim_type, collect):
+ _get_vim_type.return_value = 'openstack'
+ collector = Collector()
+ queue = multiprocessing.Queue()
+ collector._init_vim_collector_and_collect({}, 'test_vim_account_id', queue)
+ collect.assert_called_once_with({}, queue)
+
+ @mock.patch("osm_mon.collector.collector.CommonDbClient", mock.Mock())
+ @mock.patch.object(OpenstackCollector, "collect")
+ @mock.patch.object(Collector, "_get_vim_type")
+ def test_init_vim_collector_and_collect_unknown(self, _get_vim_type, openstack_collect):
+ _get_vim_type.return_value = 'unknown'
+ collector = Collector()
+ queue = multiprocessing.Queue()
+ collector._init_vim_collector_and_collect({}, 'test_vim_account_id', queue)
+ openstack_collect.assert_not_called()
+
+ @mock.patch("osm_mon.collector.collector.CommonDbClient", mock.Mock())
+ @mock.patch("osm_mon.collector.collector.VCACollector", autospec=True)
+ def test_init_vca_collector_and_collect(self, vca_collector):
+ collector = Collector()
+ queue = multiprocessing.Queue()
+ collector._init_vca_collector_and_collect({}, queue)
+ vca_collector.assert_called_once_with()
+ vca_collector.return_value.collect.assert_called_once_with({}, queue)