diff options
author | denilson.l65 <denilson.l65@wipro.com> | 2021-08-24 11:08:00 +0000 |
---|---|---|
committer | denilson.l65 <denilson.l65@wipro.com> | 2021-08-28 05:43:10 +0000 |
commit | 7363faa6243e3428d20a3be1800df9aa641ed3ba (patch) | |
tree | 61fa58760a0642dcf8a28c1d18dcedf023f792de /components/slice-analysis-ms | |
parent | 1972718be2da50d09ea3284a7ab1746952be4cbb (diff) |
DCAE SliceAnalysis MS - Cps Integration1.1.1-datalake-handler-admin-ui1.0.6-slice-analysis-ms
Issue-ID: DCAEGEN2-2885
Signed-off-by: denilson.l65 <denilson.l65@wipro.com>
Change-Id: Iea7a675e5dc2f182dda14f0ccf14f2864a5991e5
Diffstat (limited to 'components/slice-analysis-ms')
7 files changed, 1162 insertions, 5 deletions
diff --git a/components/slice-analysis-ms/ChangeLog.md b/components/slice-analysis-ms/ChangeLog.md new file mode 100644 index 00000000..5d64d124 --- /dev/null +++ b/components/slice-analysis-ms/ChangeLog.md @@ -0,0 +1,11 @@ +# Change Log +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) +and this project adheres to [Semantic Versioning](http://semver.org/). + +## [1.0.6] - 2021/08/28 + - [DCAEGEN2-2885](https://jira.onap.org/browse/DCAEGEN2-2885) - DCAE SliceAnalysis MS - CPS Integration + + - [DCAEGEN2-2811](https://jira.onap.org/browse/DCAEGEN2-2811) - Remove security vulnerabilities + diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java index f0c27e19..389a75d9 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/configdb/CpsService.java @@ -22,12 +22,18 @@ package org.onap.slice.analysis.ms.configdb; import java.util.List; import java.util.Map; +import java.util.HashMap; +import java.util.ArrayList; +import org.json.JSONArray; +import org.json.JSONObject; import org.onap.slice.analysis.ms.models.Configuration; import org.onap.slice.analysis.ms.restclients.CpsRestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.core.ParameterizedTypeReference; import org.springframework.stereotype.Service; /** @@ -48,22 +54,84 @@ public class CpsService implements CpsInterface { * Fetches the current configuration of RIC from CPS */ public Map<String, Map<String, Object>> fetchCurrentConfigurationOfRIC(String snssai) { - return null; + Map<String, Map<String, Object>> responseMap = new HashMap<String, Map<String, Object>>(); + String reqUrl = cpsBaseUrl +"/get-nearrtric-config"; + log.info("fetching current configuration of RIC from Cps: {s-NSSAI: "+snssai+"}"); + String requestBody = "{\"inputParameters\": {\"sNssai\":"+JSONObject.quote(snssai)+"}}"; + try { + String response = restclient.sendPostRequest(reqUrl,requestBody, new ParameterizedTypeReference<String>() {}).getBody(); + JSONArray sliceArray = new JSONArray(response); + for (int i=0;i<sliceArray.length();i++) { + String nearRTTICid = sliceArray.getJSONObject(i).optString("idNearRTRIC"); + JSONArray pLMNInfoList = sliceArray.getJSONObject(i).getJSONObject("attributes").getJSONArray("pLMNInfoList"); + for (int j=0;j<pLMNInfoList.length();j++){ + JSONArray sNSSAIList = pLMNInfoList.getJSONObject(j).getJSONArray("sNSSAIList"); + for(int k=0;k<sNSSAIList.length();k++) { + Map<String,Object> map = new HashMap<String,Object>(); + JSONArray configDataArray = sNSSAIList.getJSONObject(k).getJSONArray("configData"); + for(int l=0;l<configDataArray.length();l++) { + JSONObject configData = configDataArray.getJSONObject(l); + map.put((String) configData.get("configParameter"), configData.get("configValue")); + } + responseMap.put(nearRTTICid, map); + } + } + } + }catch (Exception e) { + log.info("CPS fetches current configuration of RIC: " + e); + } + return responseMap; } /** * Fetches all the network functions of an S-NSSAI from CPS */ public List<String> fetchNetworkFunctionsOfSnssai(String snssai) { - return null; + List<String> responseList=new ArrayList<>(); + String reqUrl=cpsBaseUrl+"/get-gnbdufunction-by-snssai"; + log.info("fetching network functions of snssai from Cps: {s-NSSAI: "+snssai+"}"); + String requestBody = "{\"inputParameters\": {\"sNssai\":"+JSONObject.quote(snssai)+"}}"; + try { + String response=restclient.sendPostRequest(reqUrl,requestBody,new ParameterizedTypeReference<String>() {}).getBody(); + JSONArray networkFunctionJsonArry = new JSONArray(response); + for (int i=0;i<networkFunctionJsonArry.length();i++) { + JSONObject networkFunctionJson = networkFunctionJsonArry.getJSONObject(i); + responseList.add(networkFunctionJson.getJSONObject("attributes").optString("gNBDUId")); + } + } + catch (Exception e) { + log.info("Fetch network functions of S-NSSAI from CPS" + e); + } + return responseList; } /** * Fetches the RICS of an S-NSSAI from CPS */ public Map<String, List<String>> fetchRICsOfSnssai(String snssai) { - return null; + Map<String,List<String>> responseMap=new HashMap<>(); + String reqUrl=cpsBaseUrl + "/get-nrcelldu-by-snssai"; + log.info("fetching RIC of s-NSSAI from Cps: {s-NSSAI: "+snssai+"}"); + String requestBody = "{\"inputParameters\": {\"sNssai\":"+JSONObject.quote(snssai)+"}}"; + try { + String response=restclient.sendPostRequest(reqUrl,requestBody,new ParameterizedTypeReference<String>() {}).getBody(); + JSONArray sliceArray = new JSONArray(response); + for (int i=0;i<sliceArray.length();i++) { + String nearRTTICid = sliceArray.getJSONObject(i).optString("idNearRTRIC"); + JSONArray GNBDUFunctionArray = sliceArray.getJSONObject(i).getJSONArray("GNBDUFunction"); + for (int j=0;j<GNBDUFunctionArray.length();j++){ + JSONArray NRCellDUArray = GNBDUFunctionArray.getJSONObject(j).getJSONArray("NRCellDU"); + List<String> cellslist=new ArrayList<>(); + for(int k=0;k<NRCellDUArray.length();k++) { + cellslist.add(NRCellDUArray.getJSONObject(k).getJSONObject("attributes").optString("cellLocalId")); + } + responseMap.put(nearRTTICid,cellslist); + } + } + }catch (Exception e) { + log.info("Fetch RICS of S-NSSAI from CPS" + e); + } + return responseMap; } - } diff --git a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java index e8028200..6098142e 100644 --- a/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java +++ b/components/slice-analysis-ms/src/main/java/org/onap/slice/analysis/ms/service/ConsumerThread.java @@ -22,7 +22,9 @@ package org.onap.slice.analysis.ms.service; import java.util.List; +import java.util.Objects; +import org.onap.slice.analysis.ms.configdb.CpsInterface; import org.onap.slice.analysis.ms.configdb.IConfigDbService; import org.onap.slice.analysis.ms.models.Configuration; import org.onap.slice.analysis.ms.models.SubCounter; @@ -38,6 +40,7 @@ public class ConsumerThread extends Thread { private PmDataQueue pmDataQueue; private IConfigDbService configDbService; private SnssaiSamplesProcessor snssaiSamplesProcessor; + private CpsInterface cpsInterface; private long initialDelaySec; private int samples; @@ -50,6 +53,7 @@ public class ConsumerThread extends Thread { this.configDbService = BeanUtil.getBean(IConfigDbService.class); this.initialDelaySec = Configuration.getInstance().getInitialDelaySeconds(); this.samples = Configuration.getInstance().getSamples(); + this.cpsInterface = BeanUtil.getBean(CpsInterface.class); } /** @@ -57,6 +61,8 @@ public class ConsumerThread extends Thread { */ @Override public void run() { + Boolean isConfigDbEnabled = (Objects.isNull(Configuration.getInstance().getConfigDbEnabled())) ? true + : Configuration.getInstance().getConfigDbEnabled(); boolean done = false; boolean result = false; String snssai = ""; @@ -69,7 +75,12 @@ public class ConsumerThread extends Thread { if (!snssai.equals("")) { log.info("Consumer thread processing data for s-nssai {}",snssai); try { - nfs = configDbService.fetchNetworkFunctionsOfSnssai(snssai); + if (isConfigDbEnabled) { + nfs = configDbService.fetchNetworkFunctionsOfSnssai(snssai); + } + else { + nfs = cpsInterface.fetchNetworkFunctionsOfSnssai(snssai); + } } catch(Exception e) { pmDataQueue.putSnssaiToQueue(snssai); diff --git a/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/configdb/CpsInterfaceServiceTest.java b/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/configdb/CpsInterfaceServiceTest.java new file mode 100644 index 00000000..008736d3 --- /dev/null +++ b/components/slice-analysis-ms/src/test/java/org/onap/slice/analysis/ms/configdb/CpsInterfaceServiceTest.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * slice-analysis-ms + * ================================================================================ + * Copyright (C) 2021 Wipro Limited. + * ============================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + *******************************************************************************/ +package org.onap.slice.analysis.ms.configdb; + +import static org.junit.Assert.assertEquals; + +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.slice.analysis.ms.models.Configuration; +import org.onap.slice.analysis.ms.restclients.CpsRestClient; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(PowerMockRunner.class) +@PowerMockRunnerDelegate(SpringRunner.class) +@PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "javax.management.*"}) +@PrepareForTest({ CpsService.class,Configuration.class }) +@SpringBootTest(classes = CpsInterfaceServiceTest.class) +public class CpsInterfaceServiceTest { + @InjectMocks + CpsService cpsService; + + @Mock + CpsRestClient restClient; + + @Test + public void fetchCurrentConfigurationOfRICTest() { + Map<String, Object> map = new HashMap<>(); + map.put("dLThptPerSlice", 10); + map.put("uLThptPerSlice", 10); + map.put("maxNumberOfConns", 10); + Map<String, Map<String, Object>> responseMap = new HashMap<>(); + responseMap.put("11", map); + try { + String serviceInstance = new String( + Files.readAllBytes(Paths.get("src/test/resources/sliceConfig.json"))); + Mockito.when(restClient.sendPostRequest(Mockito.anyString(), Mockito.anyString(), Mockito.any())).thenReturn(new ResponseEntity<>(serviceInstance, HttpStatus.OK)); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(responseMap, cpsService.fetchCurrentConfigurationOfRIC("111-1111")); + } + + @Test + public void fetchNetworkFunctionsOfSnssaiTest() { + List<String> responseList=new ArrayList<>(); + responseList.add("22"); + responseList.add("23"); + try { + String serviceInstance = new String( + Files.readAllBytes(Paths.get("src/test/resources/DUList.json"))); + Mockito.when(restClient.sendPostRequest(Mockito.anyString(), Mockito.anyString(), Mockito.any())).thenReturn(new ResponseEntity<>(serviceInstance, HttpStatus.OK)); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(responseList, cpsService.fetchNetworkFunctionsOfSnssai("111-1111")); + } + + @Test + public void fetchRICsOfSnssaiTest() { + Map<String,List<String>> responseMap=new HashMap<>(); + List<String> cellslist=new ArrayList<>(); + cellslist.add("1599"); + cellslist.add("1598"); + responseMap.put("11",cellslist); + try { + String serviceInstance = new String( + Files.readAllBytes(Paths.get("src/test/resources/DUCellsList.json"))); + Mockito.when(restClient.sendPostRequest(Mockito.anyString(), Mockito.anyString(), Mockito.any())).thenReturn(new ResponseEntity<>(serviceInstance, HttpStatus.OK)); + } catch (Exception e) { + e.printStackTrace(); + } + assertEquals(responseMap, cpsService.fetchRICsOfSnssai("111-1111")); + } +} diff --git a/components/slice-analysis-ms/src/test/resources/DUCellsList.json b/components/slice-analysis-ms/src/test/resources/DUCellsList.json new file mode 100644 index 00000000..799e1e80 --- /dev/null +++ b/components/slice-analysis-ms/src/test/resources/DUCellsList.json @@ -0,0 +1,400 @@ +[ + { + "idNearRTRIC": 11, + "attributes": { + "near-rt-ric-url": "10.165.160.47:6080", + "trackingArea": "Kingston", + "rANNFNSSIList": [ + "e893-e93r-c0f2-kj76", + "m93ed-e93e-c0f2-9i7y" + ], + "RRMPolicyRatio": [ + { + "id": "33", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 33, + "mcc": "310", + "mnc": "410", + "sNSSAI": 101 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "310", + "mnc": "410", + "sNSSAIList": [ + { + "sNssai": "010", + "status": "ACTIVE", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 10 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 10 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 10 + } + ] + } + ] + } + ], + "sliceProfilesList": [ + { + "sliceProfileId": "b594-e98r-c7f2-ij79", + "sNSSAI": 101, + "maxNumberofUEs": 24, + "latency": 2, + "uLThptPerSlice": 30, + "dLThptPerSlice": 60, + "maxNumberofConns": 22, + "uEMobilityLevel": "high", + "coverageAreaList": [ + "CA1", + "CA2" + ], + "resourceSharingLevel": "Shared" + } + ] + }, + "GNBDUFunction": [ + { + "idGNBDUFunction": "22", + "attributes": { + "gNBDUFunction-url": "10.165.160.13:6080", + "gNBIdLength": 23, + "gNBDUName": "gnbdu1", + "gNBDUId": 22, + "gNBId": 98763, + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + }, + "NRCellDU": [ + { + "idNRCellDU": "1599", + "attributes": { + "nRCellDU-url": "10.165.160.15:8083", + "cellLocalId": 1599, + "operationalState": "ENABLED", + "administrativeState": "UNLOCKED", + "cellState": "ACTIVE", + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "211", + "mnc": "211", + "sNSSAIList": [ + { + "sNssai": "111-1111", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 20 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 20 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 20 + } + ] + } + ] + } + ], + "nRPCI": 11, + "nRTAC": 14777, + "arfcnDL": 1, + "arfcnUL": 2, + "arfcnSUL": 3, + "bSChannelBwDL": 4, + "bSChannelBwUL": 5, + "bSChannelBwSUL": 6, + "ssbFrequency": 7, + "ssbSubCarrierSpacing": 15, + "ssbOffset": 9, + "ssbDuration": 4, + "nRSectorCarrierRef": [ + "OU=Sales" + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + }, + { + "idNRCellDU": "1598", + "attributes": { + "nRCellDU-url": "10.165.160.15:8083", + "cellLocalId": 1598, + "operationalState": "ENABLED", + "administrativeState": "UNLOCKED", + "cellState": "ACTIVE", + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "211", + "mnc": "211", + "sNSSAIList": [ + { + "sNssai": "111-1111", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 20 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 20 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 20 + } + ] + } + ] + } + ], + "nRPCI": 11, + "nRTAC": 14777, + "arfcnDL": 1, + "arfcnUL": 2, + "arfcnSUL": 3, + "bSChannelBwDL": 4, + "bSChannelBwUL": 5, + "bSChannelBwSUL": 6, + "ssbFrequency": 7, + "ssbSubCarrierSpacing": 15, + "ssbOffset": 9, + "ssbDuration": 4, + "nRSectorCarrierRef": [ + "OU=Sales" + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ] + } + ], + "GNBCUUPFunction": [ + { + "idGNBCUUPFunction": "22", + "attributes": { + "gNBCUUPFunction-url": "10.165.160.13:6080", + "gNBId": 22, + "RRMPolicyRatio": [ + { + "id": "35", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 35, + "mcc": "212", + "mnc": "212", + "sNSSAI": 203 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ], + "GNBCUCPFunction": [ + { + "idGNBCUCPFunction": "32", + "attributes": { + "gNBCUCPFunction-url": "10.165.160.13:6080", + "gNBId": 32, + "gNBIdLength": 23, + "gNBCUName": "gnbcucp1", + "RRMPolicyRatio": [ + { + "id": "43", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 43, + "mcc": "310", + "mnc": "410", + "sNSSAI": 101 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + }, + "NRCellCU": [ + { + "idNRCellCU": "15199", + "attributes": { + "nRCellCU-url": "10.165.160.15:8083", + "cellLocalId": 15199, + "RRMPolicyRatio": [ + { + "id": "55", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 55, + "mcc": "550", + "mnc": "550", + "sNSSAI": 101 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "551", + "mnc": "550", + "sNSSAIList": [ + { + "sNssai": "501", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 10 + } + ] + } + ] + } + ], + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ] + } + ] + } +] diff --git a/components/slice-analysis-ms/src/test/resources/DUList.json b/components/slice-analysis-ms/src/test/resources/DUList.json new file mode 100644 index 00000000..26b96ed6 --- /dev/null +++ b/components/slice-analysis-ms/src/test/resources/DUList.json @@ -0,0 +1,236 @@ +[ + { + "idGNBDUFunction": "22", + "attributes": { + "gNBDUFunction-url": "10.165.160.13:6080", + "gNBIdLength": 23, + "gNBDUName": "gnbdu1", + "gNBDUId": 22, + "gNBId": 98763, + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + }, + "NRCellDU": [ + { + "idNRCellDU": "15299", + "attributes": { + "nRCellDU-url": "10.165.160.15:8083", + "cellLocalId": 15299, + "operationalState": "ENABLED", + "administrativeState": "UNLOCKED", + "cellState": "ACTIVE", + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "211", + "mnc": "211", + "sNSSAIList": [ + { + "sNssai": "111-1111", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 20 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 20 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 20 + } + ] + } + ] + } + ], + "nRPCI": 11, + "nRTAC": 14777, + "arfcnDL": 1, + "arfcnUL": 2, + "arfcnSUL": 3, + "bSChannelBwDL": 4, + "bSChannelBwUL": 5, + "bSChannelBwSUL": 6, + "ssbFrequency": 7, + "ssbSubCarrierSpacing": 15, + "ssbOffset": 9, + "ssbDuration": 4, + "nRSectorCarrierRef": [ + "OU=Sales" + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ] + }, + { + "idGNBDUFunction": "23", + "attributes": { + "gNBDUFunction-url": "10.165.160.13:6080", + "gNBIdLength": 23, + "gNBDUName": "gnbdu1", + "gNBDUId": 23, + "gNBId": 98763, + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + }, + "NRCellDU": [ + { + "idNRCellDU": "15299", + "attributes": { + "nRCellDU-url": "10.165.160.15:8083", + "cellLocalId": 15299, + "operationalState": "ENABLED", + "administrativeState": "UNLOCKED", + "cellState": "ACTIVE", + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "211", + "mnc": "211", + "sNSSAIList": [ + { + "sNssai": "111-1111", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 20 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 20 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 20 + } + ] + } + ] + } + ], + "nRPCI": 11, + "nRTAC": 14777, + "arfcnDL": 1, + "arfcnUL": 2, + "arfcnSUL": 3, + "bSChannelBwDL": 4, + "bSChannelBwUL": 5, + "bSChannelBwSUL": 6, + "ssbFrequency": 7, + "ssbSubCarrierSpacing": 15, + "ssbOffset": 9, + "ssbDuration": 4, + "nRSectorCarrierRef": [ + "OU=Sales" + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ] + } +] diff --git a/components/slice-analysis-ms/src/test/resources/sliceConfig.json b/components/slice-analysis-ms/src/test/resources/sliceConfig.json new file mode 100644 index 00000000..8e5e1886 --- /dev/null +++ b/components/slice-analysis-ms/src/test/resources/sliceConfig.json @@ -0,0 +1,322 @@ +[ + { + "idNearRTRIC": 11, + "attributes": { + "near-rt-ric-url": "10.165.160.47:6080", + "trackingArea": "Kingston", + "rANNFNSSIList": [ + "e893-e93r-c0f2-kj76", + "m93ed-e93e-c0f2-9i7y" + ], + "RRMPolicyRatio": [ + { + "id": "33", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 33, + "mcc": "310", + "mnc": "410", + "sNSSAI": 101 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "310", + "mnc": "410", + "sNSSAIList": [ + { + "sNssai": "111-1111", + "status": "ACTIVE", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 10 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 10 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 10 + } + ] + } + ] + } + ], + "sliceProfilesList": [ + { + "sliceProfileId": "b594-e98r-c7f2-ij79", + "sNSSAI": 101, + "maxNumberofUEs": 24, + "latency": 2, + "uLThptPerSlice": 30, + "dLThptPerSlice": 60, + "maxNumberofConns": 22, + "uEMobilityLevel": "high", + "coverageAreaList": [ + "CA1", + "CA2" + ], + "resourceSharingLevel": "Shared" + } + ] + }, + "GNBDUFunction": [ + { + "idGNBDUFunction": "22", + "attributes": { + "gNBDUFunction-url": "10.165.160.13:6080", + "gNBIdLength": 23, + "gNBDUName": "gnbdu1", + "gNBDUId": 22, + "gNBId": 98763, + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + }, + "NRCellDU": [ + { + "idNRCellDU": "15299", + "attributes": { + "nRCellDU-url": "10.165.160.15:8083", + "cellLocalId": 15299, + "operationalState": "ENABLED", + "administrativeState": "UNLOCKED", + "cellState": "ACTIVE", + "RRMPolicyRatio": [ + { + "id": "34", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 34, + "mcc": "211", + "mnc": "111", + "sNSSAI": 102 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 23, + "rRMPolicyMinRatio": 4, + "rRMPolicyDedicatedRatio": 5 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "211", + "mnc": "211", + "sNSSAIList": [ + { + "sNssai": "111-1111", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 20 + }, + { + "configParameter": "dLThptPerSlice", + "configValue": 20 + }, + { + "configParameter": "uLThptPerSlice", + "configValue": 20 + } + ] + } + ] + } + ], + "nRPCI": 11, + "nRTAC": 14777, + "arfcnDL": 1, + "arfcnUL": 2, + "arfcnSUL": 3, + "bSChannelBwDL": 4, + "bSChannelBwUL": 5, + "bSChannelBwSUL": 6, + "ssbFrequency": 7, + "ssbSubCarrierSpacing": 15, + "ssbOffset": 9, + "ssbDuration": 4, + "nRSectorCarrierRef": [ + "OU=Sales" + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ] + } + ], + "GNBCUUPFunction": [ + { + "idGNBCUUPFunction": "22", + "attributes": { + "gNBCUUPFunction-url": "10.165.160.13:6080", + "gNBId": 22, + "RRMPolicyRatio": [ + { + "id": "35", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 35, + "mcc": "212", + "mnc": "212", + "sNSSAI": 203 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ], + "GNBCUCPFunction": [ + { + "idGNBCUCPFunction": "32", + "attributes": { + "gNBCUCPFunction-url": "10.165.160.13:6080", + "gNBId": 32, + "gNBIdLength": 23, + "gNBCUName": "gnbcucp1", + "RRMPolicyRatio": [ + { + "id": "43", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 43, + "mcc": "310", + "mnc": "410", + "sNSSAI": 101 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "userLabel": "user", + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + }, + "NRCellCU": [ + { + "idNRCellCU": "15199", + "attributes": { + "nRCellCU-url": "10.165.160.15:8083", + "cellLocalId": 15199, + "RRMPolicyRatio": [ + { + "id": "55", + "attributes": { + "resourceType": "sharing", + "rRMPolicyMemberList": [ + { + "idx": 55, + "mcc": "550", + "mnc": "550", + "sNSSAI": 101 + } + ], + "quotaType": "STRICT", + "rRMPolicyMaxRatio": 22, + "rRMPolicyMinRatio": 3, + "rRMPolicyDedicatedRatio": 4 + } + } + ], + "pLMNInfoList": [ + { + "mcc": "551", + "mnc": "550", + "sNSSAIList": [ + { + "sNssai": "501", + "status": "active", + "configData": [ + { + "configParameter": "maxNumberOfConns", + "configValue": 10 + } + ] + } + ] + } + ], + "sAP": [ + { + "host": "localhost", + "port": 8080 + } + ] + } + } + ] + } + ] + } +] |