diff options
Diffstat (limited to 'conductor/conductor/tests/unit/data/plugins')
12 files changed, 430 insertions, 0 deletions
diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/final_nst_candidate.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/final_nst_candidate.json new file mode 100644 index 0000000..ab7aefd --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/final_nst_candidate.json @@ -0,0 +1,35 @@ +[{ + "candidate_id":"5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "inventory_provider":"aai", + "inventory_type":"nst", + "uniqueness":"True", + "cost":1.0, + + "model_invariant_id":"f0aa2f5c-a022-4947-80bf-fc05a1502d82", + "model_type":"service", + "model_role":"NST", + + "model_version_id":"5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "model_name":"EmbbNst", + "model_version":"1.0", + "distribution_status":"DISTRIBUTION_COMPLETE_OK", + "model_description":"EmbbNst", + + "creation_cost": 1, + + "ueMobilityLevel":"stationary", + "skip_post_instantiation_configuration":true, + "controller_actor":"SO-REF-DATA", + "areaTrafficCapDL":300, + "maxNumberofUEs":1000000, + "latency":30, + "expDataRateUL":300, + "availability":0.6, + "plmnIdList":"39-00|39-01", + "sST":"embb", + "areaTrafficCapUL":300, + "expDataRateDL":1000, + "activityFactor":60, + "resourceSharingLevel":"shared" + +}]
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver.json new file mode 100644 index 0000000..1f1c640 --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver.json @@ -0,0 +1,43 @@ + { + "model-version-id":"5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "model-name":"EmbbNst", + "model-version":"1.0", + "distribution-status":"DISTRIBUTION_COMPLETE_OK", + "model-description":"EmbbNst", + "resource-version":"1609762782080", + "model-elements":{ + "model-element":[ + { + "model-element-uuid":"5c7f04ca-a3b6-4ef9-9b9e-f887121276b0", + "new-data-del-flag":"T", + "cardinality":"unbounded", + "resource-version":"1609762578458", + "relationship-list":{ + "relationship":[ + { + "related-to":"model-ver", + "relationship-label":"org.onap.relationships.inventory.IsA", + "related-link":"/aai/v21/service-design-and-creation/models/model/82194af1-3c2c-485a-8f44-420e22a9eaa4/model-vers/model-ver/46b92144-923a-4d20-b85a-3cbd847668a9", + "relationship-data":[ + { + "relationship-key":"model.model-invariant-id", + "relationship-value":"82194af1-3c2c-485a-8f44-420e22a9eaa4" + }, + { + "relationship-key":"model-ver.model-version-id", + "relationship-value":"46b92144-923a-4d20-b85a-3cbd847668a9" + } + ], + "related-to-property":[ + { + "property-key":"model-ver.model-name", + "property-value":"service-instance" + } + ] + } + ] + } + } + ] + } + }
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver_response.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver_response.json new file mode 100644 index 0000000..a3f6167 --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver_response.json @@ -0,0 +1,8 @@ +{ + "model-version-id": "5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "model-name": "EmbbNst", + "model-version": "1.0", + "distribution-status": "DISTRIBUTION_COMPLETE_OK", + "model-description": "EmbbNst", + "resource-version": "1609762782080" +}
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/newembbnst.csar b/conductor/conductor/tests/unit/data/plugins/inventory_provider/newembbnst.csar Binary files differnew file mode 100644 index 0000000..d5c4270 --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/newembbnst.csar diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_candidate.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_candidate.json new file mode 100644 index 0000000..f6e9dde --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_candidate.json @@ -0,0 +1,28 @@ +[ + { + + "candidate_id": "5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "inventory_provider": "aai", + "inventory_type": "nst", + "uniqueness": "True", + "cost": 1.0, + "nst_info": { + "model_invariant_id": "f0aa2f5c-a022-4947-80bf-fc05a1502d82", + "model_type": "service", + "model_role": "NST" + }, + "model_ver": { + "model_version_id": "5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "model_name": "EmbbNst", + "model_version": "1.0", + "distribution_status": "DISTRIBUTION_COMPLETE_OK", + "model_description": "EmbbNst" + }, + "default_fields": { + "creation_cost": 1 + }, + "profile_info": { + + } + } +] diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_demand_list.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_demand_list.json new file mode 100644 index 0000000..5b5d63c --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_demand_list.json @@ -0,0 +1,13 @@ +{ + "embb_nst": [{ + "inventory_provider": "aai", + "inventory_type": "nst", + "unique": "true", + "filtering_attributes": { + "model-role": "NST" + }, + "default_attributes": { + "creation-cost": 1 + } + }] +}
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_prop_dict.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_prop_dict.json new file mode 100644 index 0000000..1761655 --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_prop_dict.json @@ -0,0 +1,16 @@ +{ + "ueMobilityLevel":"stationary", + "skip_post_instantiation_configuration":true, + "controller_actor":"SO-REF-DATA", + "areaTrafficCapDL":300, + "maxNumberofUEs":1000000, + "latency":30, + "expDataRateUL":300, + "availability":0.6, + "plmnIdList":"39-00|39-01", + "sST":"embb", + "areaTrafficCapUL":300, + "expDataRateDL":1000, + "activityFactor":60, + "resourceSharingLevel":"shared" +}
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_properties.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_properties.json new file mode 100644 index 0000000..05cca18 --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_properties.json @@ -0,0 +1,84 @@ +{ + "ueMobilityLevel":{ + "default":"stationary", + "type":"string", + "required":false + }, + "skip_post_instantiation_configuration":{ + "default":true, + "type":"boolean", + "required":false + }, + "controller_actor":{ + "default":"SO-REF-DATA", + "type":"string", + "required":false + }, + "areaTrafficCapDL":{ + "default":300, + "type":"integer", + "required":false + }, + "maxNumberofUEs":{ + "default":1000000, + "type":"integer", + "required":false + }, + "latency":{ + "default":30, + "type":"integer", + "required":false + }, + "expDataRateUL":{ + "default":300, + "type":"integer", + "required":false + }, + "availability":{ + "default":0.6, + "type":"float", + "required":false + }, + "additionalSystemFeature":{ + "type":"string", + "required":false + }, + "plmnIdList":{ + "default":"39-00|39-01", + "type":"string", + "required":false + }, + "sST":{ + "default":"embb", + "type":"string", + "required":false + }, + "areaTrafficCapUL":{ + "default":300, + "type":"integer", + "required":false + }, + "cds_model_version":{ + "type":"string", + "required":false + }, + "cds_model_name":{ + "type":"string", + "required":false + }, + "expDataRateDL":{ + "default":1000, + "type":"integer", + "required":false + }, + "activityFactor":{ + "default":60, + "type":"integer", + "required":false + }, + "resourceSharingLevel":{ + "default":"shared", + "type":"string", + "required":false + } +}
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_response.json b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_response.json new file mode 100644 index 0000000..2c075e3 --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_response.json @@ -0,0 +1,59 @@ +{ + "model":[ + { + "model-invariant-id":"f0aa2f5c-a022-4947-80bf-fc05a1502d82", + "model-type":"service", + "model-role":"NST", + "resource-version":"1609762578458", + "model-vers":{ + "model-ver":[ + { + "model-version-id":"5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", + "model-name":"EmbbNst", + "model-version":"1.0", + "distribution-status":"DISTRIBUTION_COMPLETE_OK", + "model-description":"EmbbNst", + "resource-version":"1609762782080", + "model-elements":{ + "model-element":[ + { + "model-element-uuid":"5c7f04ca-a3b6-4ef9-9b9e-f887121276b0", + "new-data-del-flag":"T", + "cardinality":"unbounded", + "resource-version":"1609762578458", + "relationship-list":{ + "relationship":[ + { + "related-to":"model-ver", + "relationship-label":"org.onap.relationships.inventory.IsA", + "related-link":"/aai/v21/service-design-and-creation/models/model/82194af1-3c2c-485a-8f44-420e22a9eaa4/model-vers/model-ver/46b92144-923a-4d20-b85a-3cbd847668a9", + "relationship-data":[ + { + "relationship-key":"model.model-invariant-id", + "relationship-value":"82194af1-3c2c-485a-8f44-420e22a9eaa4" + }, + { + "relationship-key":"model-ver.model-version-id", + "relationship-value":"46b92144-923a-4d20-b85a-3cbd847668a9" + } + ], + "related-to-property":[ + { + "property-key":"model-ver.model-name", + "property-value":"service-instance" + } + ] + } + ] + } + } + ] + } + } + ] + } + } + + + ] +}
\ No newline at end of file diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai.py b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai.py index 484806e..54789f2 100644 --- a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai.py +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai.py @@ -21,11 +21,13 @@ import copy import json import mock import unittest +from unittest.mock import patch from oslo_config import cfg import conductor.data.plugins.inventory_provider.aai as aai from conductor.data.plugins.inventory_provider.aai import AAI +from conductor.data.plugins.inventory_provider.sdc import SDC from conductor.data.plugins.inventory_provider.hpa_utils import match_hpa from conductor.data.plugins.triage_translator.triage_translator import TraigeTranslator @@ -830,3 +832,61 @@ tenant/3c6c471ada7747fe8ff7f28e100b61e8/vservers/vserver/00bddefc-126e-4e4f-a18d self.maxDiff = None self.assertEqual(result, self.aai_ep.resolve_demands(demands_list, plan_info=plan_info, triage_translator_data=triage_translator_data)) + + + def test_get_nst_candidates(self): + nst_response_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_response.json' + nst_response = json.loads(open(nst_response_file).read()) + + + + second_level_filter=None + + default_attributes = dict() + default_attributes['creation_cost'] = 1 + self.assertEqual("5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7", self.aai_ep.get_nst_candidates(nst_response, second_level_filter, + default_attributes, "true", "nst").__getitem__(0).__getattribute__('candidate_id')) + + + def test_resolve_demands_inventory_type_nst(self): + self.aai_ep.conf.HPA_enabled = True + TraigeTranslator.getPlanIdNAme = mock.MagicMock(return_value=None) + TraigeTranslator.addDemandsTriageTranslator = mock.MagicMock(return_value=None) + + plan_info = { + 'plan_name': 'name', + 'plan_id': 'id' + } + triage_translator_data = None + + demands_list_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_demand_list.json' + demands_list = json.loads(open(demands_list_file).read()) + + nst_response_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_response.json' + nst_response = json.loads(open(nst_response_file).read()) + final_nst_candidates_file = './conductor/tests/unit/data/plugins/inventory_provider/final_nst_candidate.json' + final_nst_candidates = json.loads(open(final_nst_candidates_file).read()) + result = dict() + result['embb_nst'] = final_nst_candidates + + self.mock_get_nst_candidates = mock.patch.object(AAI, 'get_nst_response', + return_value=nst_response) + self.mock_get_final_nst_candidates = mock.patch.object(SDC, 'update_candidates', + return_value=final_nst_candidates) + self.mock_get_nst_candidates.start() + self.mock_get_final_nst_candidates.start() + self.maxDiff = None + self.assertEqual(result, self.aai_ep.resolve_demands(demands_list, plan_info=plan_info, + triage_translator_data=triage_translator_data)) + + def test_get_aai_data(self): + nst_response_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_response.json' + nst_response = json.loads(open(nst_response_file).read()) + response = mock.MagicMock() + response.status_code = 200 + response.ok = True + response.json.return_value = nst_response + self.mock_get_request = mock.patch.object(AAI, '_request', return_value=response) + self.mock_get_request.start() + filtering_attr={"model-role":"NST"} + self.assertEquals(nst_response, self.aai_ep.get_nst_response(filtering_attr)) diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai_utils.py b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai_utils.py index 23b6640..54da12e 100644 --- a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai_utils.py +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai_utils.py @@ -93,3 +93,11 @@ class TestUtils(unittest.TestCase): inventory_attribute = {'service-role': 'nssi'} self.assertEqual(inventory_attribute, aai_utils.get_inv_values_for_second_level_filter(second_level_filter, nssi_instance)) + + def test_get_model_ver_info(self): + model_ver_file = './conductor/tests/unit/data/plugins/inventory_provider/model_ver.json' + model_ver = json.loads(open(model_ver_file).read()) + model_ver_res_file = './conductor/tests/unit/data/plugins/inventory_provider/model_ver_response.json' + model_ver_res = json.loads(open(model_ver_res_file).read()) + self.assertEqual(model_ver_res, aai_utils.get_model_ver_info(model_ver)) + diff --git a/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_sdc.py b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_sdc.py new file mode 100644 index 0000000..054fabe --- /dev/null +++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/test_sdc.py @@ -0,0 +1,76 @@ +import json +import mock +import unittest + + + +from oslo_config import cfg +import conductor.data.plugins.inventory_provider.sdc as sdc +from conductor.data.plugins.inventory_provider.sdc import SDC +from conductor.data.plugins.inventory_provider.candidates.nst_candidate import NST + + + +class TestSDC(unittest.TestCase): + + def setUp(self): + cfg.CONF.set_override('password', '4HyU6sI+Tw0YMXgSHr5sJ5C0UTkeBaxXoxQqWuSVFugls7sQnaAXp4zMfJ8FKFrH', 'aai') + CONF = cfg.CONF + CONF.register_opts(sdc.SDC_OPTS, group='sdc') + self.conf = CONF + self.sdc_ep = SDC() + + def tearDown(self): + mock.patch.stopall() + + def test_get_sdc_response(self): + nst_candidates_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_candidate.json' + nst_candidates = json.loads(open(nst_candidates_file).read()) + info={} + candidates=[] + for nst_candidate in nst_candidates: + info["candidate_id"]=nst_candidate.get("candidate_id") + info['inventory_provider']=nst_candidate.get("inventory_provider") + info['inventory_type']=nst_candidate.get("inventory_type") + info['uniqueness']=nst_candidate.get("uniqueness") + info['cost']=nst_candidate.get("cost") + candidate= NST(model_info=nst_candidate.get('nst_info'), model_ver=nst_candidate.get('model_ver'), info=info, + default_fields=nst_candidate.get('default_fields'),profile_info=nst_candidate.get('profile_info')) + candidates.append(candidate) + final_nst_candidates_file = './conductor/tests/unit/data/plugins/inventory_provider/final_nst_candidate.json' + final_nst_candidates = json.loads(open(final_nst_candidates_file).read()) + response = mock.MagicMock() + response.content = None + ff = open('./conductor/tests/unit/data/plugins/inventory_provider/newembbnst.csar',"rb") + file_res = ff.read() + response.status_code = 200 + response.ok = True + response.content=file_res + self.mock_get_request = mock.patch.object(SDC, 'get_nst_template', + return_value=response) + self.mock_get_request.start() + self.maxDiff=None + self.assertEqual(final_nst_candidates, + self.sdc_ep.update_candidates(candidates)) + + + + + def test_get_nst_prop_dict(self): + nst_properties_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_properties.json' + nst_candidates = json.loads(open(nst_properties_file).read()) + nst_output_file = './conductor/tests/unit/data/plugins/inventory_provider/nst_prop_dict.json' + nst_output = json.loads(open(nst_output_file).read()) + self.assertEqual(nst_output, + self.sdc_ep.get_nst_prop_dict(nst_candidates)) + + + def test_sdc_versioned_path(self): + + self.assertEqual("/{}/catalog/services/5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7/toscaModel".format(self.conf.sdc.server_url_version), + self.sdc_ep._sdc_versioned_path("/catalog/services/5d345ca8-1f8e-4f1e-aac7-6c8b33cc33e7/toscaModel")) + + + + + |