summaryrefslogtreecommitdiffstats
path: root/conductor/conductor/tests/unit/data/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'conductor/conductor/tests/unit/data/plugins')
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/final_nst_candidate.json35
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver.json43
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/model_ver_response.json8
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/newembbnst.csarbin0 -> 48090 bytes
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_candidate.json28
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_demand_list.json13
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_prop_dict.json16
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_properties.json84
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/nst_response.json59
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai.py60
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/test_aai_utils.py8
-rw-r--r--conductor/conductor/tests/unit/data/plugins/inventory_provider/test_sdc.py76
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
new file mode 100644
index 0000000..d5c4270
--- /dev/null
+++ b/conductor/conductor/tests/unit/data/plugins/inventory_provider/newembbnst.csar
Binary files differ
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"))
+
+
+
+
+