aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cps-application/src/test/java/org/onap/cps/architecture/CpsArchitectureTest.java6
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/CpsAnchorServiceImpl.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/CpsAnchorServiceImpl.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/CpsDataServiceImpl.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/CpsDataspaceServiceImpl.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/CpsDataspaceServiceImpl.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/CpsDeltaServiceImpl.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/CpsDeltaServiceImpl.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/CpsModuleServiceImpl.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/CpsQueryServiceImpl.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/CpsQueryServiceImpl.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/impl/YangTextSchemaSourceSetCache.java (renamed from cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java)2
-rw-r--r--cps-service/src/main/java/org/onap/cps/utils/PrefixResolver.java2
-rw-r--r--cps-service/src/main/java/org/onap/cps/utils/YangParser.java2
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/CpsAnchorServiceImplSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAnchorServiceImplSpec.groovy)3
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/CpsDataServiceImplSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy)2
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/CpsDataspaceServiceImplSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataspaceServiceImplSpec.groovy)3
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/CpsDeltaServiceImplSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDeltaServiceImplSpec.groovy)2
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/CpsModuleServiceImplSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy)2
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/CpsQueryServiceImplSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy)3
-rwxr-xr-xcps-service/src/test/groovy/org/onap/cps/impl/E2ENetworkSliceSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy)352
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/impl/YangTextSchemaSourceSetCacheSpec.groovy (renamed from cps-service/src/test/groovy/org/onap/cps/api/impl/YangTextSchemaSourceSetCacheSpec.groovy)2
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/PrefixResolverSpec.groovy2
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/YangParserSpec.groovy2
-rw-r--r--docs/api/swagger/ncmp/openapi.yaml50
21 files changed, 219 insertions, 228 deletions
diff --git a/cps-application/src/test/java/org/onap/cps/architecture/CpsArchitectureTest.java b/cps-application/src/test/java/org/onap/cps/architecture/CpsArchitectureTest.java
index e68343b364..06ca632f36 100644
--- a/cps-application/src/test/java/org/onap/cps/architecture/CpsArchitectureTest.java
+++ b/cps-application/src/test/java/org/onap/cps/architecture/CpsArchitectureTest.java
@@ -43,11 +43,9 @@ public class CpsArchitectureTest extends ArchitectureTestBase {
@ArchTest
static final ArchRule cpsServiceImplShouldDependOnServiceAndEventsAndPathParserPackages =
- // I think impl package should be moved from the api package.
- // So in a way this whole rule is breaking our architecture goals
- classes().that().resideInAPackage("org.onap.cps.api.impl..").should().onlyDependOnClassesThat()
+ classes().that().resideInAPackage("org.onap.cps.impl..").should().onlyDependOnClassesThat()
.resideInAnyPackage(commonAndListedPackages("org.onap.cps.api..",
- "org.onap.cps.api.impl..",
+ "org.onap.cps.impl..",
"org.onap.cps.events..",
"org.onap.cps.impl.utils..",
"org.onap.cps.spi..",
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsAnchorServiceImpl.java b/cps-service/src/main/java/org/onap/cps/impl/CpsAnchorServiceImpl.java
index 2a2ddc6c11..fb22311128 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsAnchorServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/CpsAnchorServiceImpl.java
@@ -18,7 +18,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import java.util.Collection;
import lombok.RequiredArgsConstructor;
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java b/cps-service/src/main/java/org/onap/cps/impl/CpsDataServiceImpl.java
index 3b5baf5e68..f2513173a6 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/CpsDataServiceImpl.java
@@ -22,7 +22,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import io.micrometer.core.annotation.Timed;
import java.io.Serializable;
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataspaceServiceImpl.java b/cps-service/src/main/java/org/onap/cps/impl/CpsDataspaceServiceImpl.java
index af48f202bb..15caa2276d 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDataspaceServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/CpsDataspaceServiceImpl.java
@@ -21,7 +21,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import java.util.Collection;
import lombok.RequiredArgsConstructor;
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDeltaServiceImpl.java b/cps-service/src/main/java/org/onap/cps/impl/CpsDeltaServiceImpl.java
index a515b5d65a..7a9d142506 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsDeltaServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/CpsDeltaServiceImpl.java
@@ -18,7 +18,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java b/cps-service/src/main/java/org/onap/cps/impl/CpsModuleServiceImpl.java
index 6740262bcc..7622ba5fe2 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/CpsModuleServiceImpl.java
@@ -21,7 +21,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import io.micrometer.core.annotation.Timed;
import java.util.Collection;
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsQueryServiceImpl.java b/cps-service/src/main/java/org/onap/cps/impl/CpsQueryServiceImpl.java
index 1d6f0c3ab6..e534e0aea1 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsQueryServiceImpl.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/CpsQueryServiceImpl.java
@@ -19,7 +19,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import io.micrometer.core.annotation.Timed;
import java.util.Collection;
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java b/cps-service/src/main/java/org/onap/cps/impl/YangTextSchemaSourceSetCache.java
index b893bcea09..688669c941 100644
--- a/cps-service/src/main/java/org/onap/cps/api/impl/YangTextSchemaSourceSetCache.java
+++ b/cps-service/src/main/java/org/onap/cps/impl/YangTextSchemaSourceSetCache.java
@@ -20,7 +20,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl;
+package org.onap.cps.impl;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import io.micrometer.core.instrument.Metrics;
diff --git a/cps-service/src/main/java/org/onap/cps/utils/PrefixResolver.java b/cps-service/src/main/java/org/onap/cps/utils/PrefixResolver.java
index 646ed556f5..bd348a25d1 100644
--- a/cps-service/src/main/java/org/onap/cps/utils/PrefixResolver.java
+++ b/cps-service/src/main/java/org/onap/cps/utils/PrefixResolver.java
@@ -21,11 +21,11 @@
package org.onap.cps.utils;
import lombok.RequiredArgsConstructor;
-import org.onap.cps.api.impl.YangTextSchemaSourceSetCache;
import org.onap.cps.api.model.Anchor;
import org.onap.cps.cpspath.parser.CpsPathPrefixType;
import org.onap.cps.cpspath.parser.CpsPathQuery;
import org.onap.cps.cpspath.parser.CpsPathUtil;
+import org.onap.cps.impl.YangTextSchemaSourceSetCache;
import org.onap.cps.yang.YangTextSchemaSourceSet;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
diff --git a/cps-service/src/main/java/org/onap/cps/utils/YangParser.java b/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
index 7fa10a134a..08f450e2f1 100644
--- a/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
+++ b/cps-service/src/main/java/org/onap/cps/utils/YangParser.java
@@ -29,8 +29,8 @@ import java.util.Map;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.onap.cps.api.exceptions.DataValidationException;
-import org.onap.cps.api.impl.YangTextSchemaSourceSetCache;
import org.onap.cps.api.model.Anchor;
+import org.onap.cps.impl.YangTextSchemaSourceSetCache;
import org.onap.cps.yang.TimedYangTextSchemaSourceSetBuilder;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAnchorServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/CpsAnchorServiceImplSpec.groovy
index 223ae71987..22f5c9f83e 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAnchorServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/CpsAnchorServiceImplSpec.groovy
@@ -18,7 +18,8 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
+
import org.onap.cps.impl.utils.CpsValidator
import org.onap.cps.spi.CpsAdminPersistenceService
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/CpsDataServiceImplSpec.groovy
index ff44cb20a2..3ea859ae6d 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/CpsDataServiceImplSpec.groovy
@@ -21,7 +21,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataspaceServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/CpsDataspaceServiceImplSpec.groovy
index ae68929c42..468fe76d41 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDataspaceServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/CpsDataspaceServiceImplSpec.groovy
@@ -18,7 +18,8 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
+
import org.onap.cps.impl.utils.CpsValidator
import org.onap.cps.spi.CpsAdminPersistenceService
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDeltaServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/CpsDeltaServiceImplSpec.groovy
index 65dac62710..d3dfcf8826 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsDeltaServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/CpsDeltaServiceImplSpec.groovy
@@ -18,7 +18,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
import org.onap.cps.api.model.DataNode
import spock.lang.Specification
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/CpsModuleServiceImplSpec.groovy
index d1101fc248..ce871621e5 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/CpsModuleServiceImplSpec.groovy
@@ -21,7 +21,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
import org.onap.cps.TestUtils
import org.onap.cps.api.CpsAnchorService
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/CpsQueryServiceImplSpec.groovy
index 7d2932570e..80db83b27a 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsQueryServiceImplSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/CpsQueryServiceImplSpec.groovy
@@ -19,7 +19,8 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
+
import org.onap.cps.impl.utils.CpsValidator
import org.onap.cps.spi.CpsDataPersistenceService
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/E2ENetworkSliceSpec.groovy
index f2fed7c899..4ab71f7228 100755
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/E2ENetworkSliceSpec.groovy
@@ -1,176 +1,176 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021-2024 Nordix Foundation.
- * Modifications Copyright (C) 2021-2022 Bell Canada.
- * Modifications Copyright (C) 2021 Pantheon.tech
- * Modifications Copyright (C) 2022-2024 TechMahindra Ltd.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.api.impl
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import org.onap.cps.TestUtils
-import org.onap.cps.api.CpsAnchorService
-import org.onap.cps.api.CpsDeltaService
-import org.onap.cps.events.CpsDataUpdateEventsService
-import org.onap.cps.impl.utils.CpsValidator
-import org.onap.cps.spi.CpsDataPersistenceService
-import org.onap.cps.spi.CpsModulePersistenceService
-import org.onap.cps.api.model.Anchor
-import org.onap.cps.utils.ContentType
-import org.onap.cps.utils.JsonObjectMapper
-import org.onap.cps.utils.PrefixResolver
-import org.onap.cps.utils.YangParser
-import org.onap.cps.utils.YangParserHelper
-import org.onap.cps.yang.TimedYangTextSchemaSourceSetBuilder
-import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
-import spock.lang.Specification
-
-class E2ENetworkSliceSpec extends Specification {
- def mockModuleStoreService = Mock(CpsModulePersistenceService)
- def mockDataStoreService = Mock(CpsDataPersistenceService)
- def mockCpsAnchorService = Mock(CpsAnchorService)
- def mockYangTextSchemaSourceSetCache = Mock(YangTextSchemaSourceSetCache)
- def mockCpsValidator = Mock(CpsValidator)
- def timedYangTextSchemaSourceSetBuilder = new TimedYangTextSchemaSourceSetBuilder()
- def yangParser = new YangParser(new YangParserHelper(), mockYangTextSchemaSourceSetCache, timedYangTextSchemaSourceSetBuilder)
- def mockCpsDeltaService = Mock(CpsDeltaService)
- def jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
- def mockPrefixResolver = Mock(PrefixResolver)
-
- def cpsModuleServiceImpl = new CpsModuleServiceImpl(mockModuleStoreService,
- mockYangTextSchemaSourceSetCache, mockCpsAnchorService, mockCpsValidator,timedYangTextSchemaSourceSetBuilder)
-
- def mockDataUpdateEventsService = Mock(CpsDataUpdateEventsService)
- def cpsDataServiceImpl = new CpsDataServiceImpl(mockDataStoreService, mockDataUpdateEventsService, mockCpsAnchorService, mockCpsValidator,
- yangParser, mockCpsDeltaService, jsonObjectMapper, mockPrefixResolver)
- def dataspaceName = 'someDataspace'
- def anchorName = 'someAnchor'
- def schemaSetName = 'someSchemaSet'
- def noTimestamp = null
-
- def 'E2E model can be parsed by CPS.'() {
- given: 'Valid yang resource as name-to-content map'
- def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
- 'ietf/ietf-inet-types@2013-07-15.yang',
- 'ietf/ietf-yang-types@2013-07-15.yang',
- 'e2e/basic/ran-network2020-08-06.yang'
- )
- when: 'Create schema set method is invoked'
- cpsModuleServiceImpl.createSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
- then: 'Parameters are validated and processing is delegated to persistence service'
- 1 * mockModuleStoreService.storeSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
- }
-
- def 'E2E Coverage Area-Tracking Area & TA-Cell mapping model can be parsed by CPS.'() {
- given: 'Valid yang resource as name-to-content map'
- def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
- 'e2e/basic/cps-cavsta-onap-internal2021-01-28.yang')
- when: 'Create schema set method is invoked'
- cpsModuleServiceImpl.createSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
- then: 'Parameters are validated and processing is delegated to persistence service'
- 1 * mockModuleStoreService.storeSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
- }
-
- def 'E2E Coverage Area-Tracking Area & TA-Cell mapping data can be parsed by CPS.'() {
- given: 'Valid yang resource as name-to-content map'
- def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
- 'e2e/basic/cps-cavsta-onap-internal2021-01-28.yang')
- def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
- def dataNodeStored
- and : 'a valid json is provided for the model'
- def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-Cavsta-Data.txt')
- and : 'all the further dependencies are mocked '
- mockCpsAnchorService.getAnchor(dataspaceName, anchorName) >>
- new Anchor().builder().name(anchorName).schemaSetName(schemaSetName).dataspaceName(dataspaceName).build()
- mockYangTextSchemaSourceSetCache.get(dataspaceName, schemaSetName) >>
- YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap)
- mockModuleStoreService.getYangSchemaResources(dataspaceName, schemaSetName) >> schemaContext
- when: 'saveData method is invoked'
- cpsDataServiceImpl.saveData(dataspaceName, anchorName, jsonData, noTimestamp)
- then: 'Parameters are validated and processing is delegated to persistence service'
- 1 * mockDataStoreService.storeDataNodes('someDataspace', 'someAnchor', _) >>
- { args -> dataNodeStored = args[2]}
- def child = dataNodeStored[0].childDataNodes[0]
- assert child.childDataNodes.size() == 1
- and: 'list of Tracking Area for a Coverage Area are stored with correct xpath and child nodes '
- def listOfTAForCoverageArea = child.childDataNodes[0]
- listOfTAForCoverageArea.xpath == '/ran-coverage-area/pLMNIdList[@mcc=\'310\' and @mnc=\'410\']/' +
- 'coverage-area[@coverageArea=\'Washington\']'
- listOfTAForCoverageArea.childDataNodes[0].leaves.get('nRTAC') == 234
- and: 'list of cells in a tracking area are stored with correct xpath and child nodes '
- def listOfCellsInTrackingArea = listOfTAForCoverageArea.childDataNodes[0]
- listOfCellsInTrackingArea.xpath == '/ran-coverage-area/pLMNIdList[@mcc=\'310\' and @mnc=\'410\']/' +
- 'coverage-area[@coverageArea=\'Washington\']/coverageAreaTAList[@nRTAC=\'234\']'
- listOfCellsInTrackingArea.childDataNodes[0].leaves.get('cellLocalId') == 15709
- }
-
- def 'E2E Coverage Area-Tracking Area & TA-Cell mapping data can be parsed for RAN inventory.'() {
- def dataNodeStored
- given: 'valid yang resource as name-to-content map'
- def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
- 'e2e/basic/cps-ran-inventory@2021-01-28.yang')
- def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
- and : 'a valid json is provided for the model'
- def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-ran-inventory-data.json')
- and : 'all the further dependencies are mocked '
- mockCpsAnchorService.getAnchor('someDataspace', 'someAnchor') >>
- new Anchor().builder().name('someAnchor').schemaSetName('someSchemaSet').dataspaceName(dataspaceName).build()
- mockYangTextSchemaSourceSetCache.get('someDataspace', 'someSchemaSet') >> YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap)
- mockModuleStoreService.getYangSchemaResources('someDataspace', 'someSchemaSet') >> schemaContext
- when: 'saveData method is invoked'
- cpsDataServiceImpl.saveData('someDataspace', 'someAnchor', jsonData, noTimestamp)
- then: 'parameters are validated and processing is delegated to persistence service'
- 1 * mockDataStoreService.storeDataNodes('someDataspace', 'someAnchor', _) >>
- { args -> dataNodeStored = args[2]}
- and: 'the size of the tree is correct'
- def cpsRanInventory = TestUtils.getFlattenMapByXpath(dataNodeStored[0])
- assert cpsRanInventory.size() == 4
- and: 'ran-inventory contains the correct child node'
- def ranInventory = cpsRanInventory.get('/ran-inventory')
- def ranSlices = cpsRanInventory.get('/ran-inventory/ran-slices[@rannfnssiid=\'14559ead-f4fe-4c1c-a94c-8015fad3ea35\']')
- def sliceProfilesList = cpsRanInventory.get('/ran-inventory/ran-slices[@rannfnssiid=\'14559ead-f4fe-4c1c-a94c-8015fad3ea35\']/sliceProfilesList[@sliceProfileId=\'f33a9dd8-ae51-4acf-8073-c9390c25f6f1\']')
- def pLMNIdList = cpsRanInventory.get('/ran-inventory/ran-slices[@rannfnssiid=\'14559ead-f4fe-4c1c-a94c-8015fad3ea35\']/sliceProfilesList[@sliceProfileId=\'f33a9dd8-ae51-4acf-8073-c9390c25f6f1\']/pLMNIdList[@mcc=\'310\' and @mnc=\'410\']')
- ranInventory.getChildDataNodes().size() == 1
- ranInventory.getChildDataNodes().find( {it.xpath == ranSlices.xpath})
- and: 'ranSlices contains the correct child node'
- ranSlices.getChildDataNodes().size() == 1
- ranSlices.getChildDataNodes().find( {it.xpath == sliceProfilesList.xpath})
- and: 'sliceProfilesList contains the correct child node'
- sliceProfilesList.getChildDataNodes().size() == 1
- sliceProfilesList.getChildDataNodes().find( {it.xpath == pLMNIdList.xpath})
- and: 'pLMNIdList contains no children'
- pLMNIdList.getChildDataNodes().size() == 0
-
- }
-
- def 'E2E RAN Schema Model.'(){
- given: 'yang resources'
- def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
- 'ietf/ietf-inet-types@2013-07-15.yang',
- 'ietf/ietf-yang-types@2013-07-15.yang',
- 'e2e/basic/cps-ran-schema-model@2021-05-19.yang'
- )
- and : 'json data'
- def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-ran-schema-model-data-v4.json')
- expect: 'schema context is built with no exception indicating the schema set being valid '
- def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
- and: 'data is parsed with no exception indicating the model match'
- new YangParserHelper().parseData(ContentType.JSON, jsonData, schemaContext, '', false) != null
- }
-}
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021-2024 Nordix Foundation.
+ * Modifications Copyright (C) 2021-2022 Bell Canada.
+ * Modifications Copyright (C) 2021 Pantheon.tech
+ * Modifications Copyright (C) 2022-2024 TechMahindra Ltd.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.impl
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.onap.cps.TestUtils
+import org.onap.cps.api.CpsAnchorService
+import org.onap.cps.api.CpsDeltaService
+import org.onap.cps.events.CpsDataUpdateEventsService
+import org.onap.cps.impl.utils.CpsValidator
+import org.onap.cps.spi.CpsDataPersistenceService
+import org.onap.cps.spi.CpsModulePersistenceService
+import org.onap.cps.api.model.Anchor
+import org.onap.cps.utils.ContentType
+import org.onap.cps.utils.JsonObjectMapper
+import org.onap.cps.utils.PrefixResolver
+import org.onap.cps.utils.YangParser
+import org.onap.cps.utils.YangParserHelper
+import org.onap.cps.yang.TimedYangTextSchemaSourceSetBuilder
+import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
+import spock.lang.Specification
+
+class E2ENetworkSliceSpec extends Specification {
+ def mockModuleStoreService = Mock(CpsModulePersistenceService)
+ def mockDataStoreService = Mock(CpsDataPersistenceService)
+ def mockCpsAnchorService = Mock(CpsAnchorService)
+ def mockYangTextSchemaSourceSetCache = Mock(YangTextSchemaSourceSetCache)
+ def mockCpsValidator = Mock(CpsValidator)
+ def timedYangTextSchemaSourceSetBuilder = new TimedYangTextSchemaSourceSetBuilder()
+ def yangParser = new YangParser(new YangParserHelper(), mockYangTextSchemaSourceSetCache, timedYangTextSchemaSourceSetBuilder)
+ def mockCpsDeltaService = Mock(CpsDeltaService)
+ def jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
+ def mockPrefixResolver = Mock(PrefixResolver)
+
+ def cpsModuleServiceImpl = new CpsModuleServiceImpl(mockModuleStoreService,
+ mockYangTextSchemaSourceSetCache, mockCpsAnchorService, mockCpsValidator,timedYangTextSchemaSourceSetBuilder)
+
+ def mockDataUpdateEventsService = Mock(CpsDataUpdateEventsService)
+ def cpsDataServiceImpl = new CpsDataServiceImpl(mockDataStoreService, mockDataUpdateEventsService, mockCpsAnchorService, mockCpsValidator,
+ yangParser, mockCpsDeltaService, jsonObjectMapper, mockPrefixResolver)
+ def dataspaceName = 'someDataspace'
+ def anchorName = 'someAnchor'
+ def schemaSetName = 'someSchemaSet'
+ def noTimestamp = null
+
+ def 'E2E model can be parsed by CPS.'() {
+ given: 'Valid yang resource as name-to-content map'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
+ 'ietf/ietf-inet-types@2013-07-15.yang',
+ 'ietf/ietf-yang-types@2013-07-15.yang',
+ 'e2e/basic/ran-network2020-08-06.yang'
+ )
+ when: 'Create schema set method is invoked'
+ cpsModuleServiceImpl.createSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
+ then: 'Parameters are validated and processing is delegated to persistence service'
+ 1 * mockModuleStoreService.storeSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
+ }
+
+ def 'E2E Coverage Area-Tracking Area & TA-Cell mapping model can be parsed by CPS.'() {
+ given: 'Valid yang resource as name-to-content map'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
+ 'e2e/basic/cps-cavsta-onap-internal2021-01-28.yang')
+ when: 'Create schema set method is invoked'
+ cpsModuleServiceImpl.createSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
+ then: 'Parameters are validated and processing is delegated to persistence service'
+ 1 * mockModuleStoreService.storeSchemaSet(dataspaceName, schemaSetName, yangResourcesNameToContentMap)
+ }
+
+ def 'E2E Coverage Area-Tracking Area & TA-Cell mapping data can be parsed by CPS.'() {
+ given: 'Valid yang resource as name-to-content map'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
+ 'e2e/basic/cps-cavsta-onap-internal2021-01-28.yang')
+ def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
+ def dataNodeStored
+ and : 'a valid json is provided for the model'
+ def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-Cavsta-Data.txt')
+ and : 'all the further dependencies are mocked '
+ mockCpsAnchorService.getAnchor(dataspaceName, anchorName) >>
+ new Anchor().builder().name(anchorName).schemaSetName(schemaSetName).dataspaceName(dataspaceName).build()
+ mockYangTextSchemaSourceSetCache.get(dataspaceName, schemaSetName) >>
+ YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap)
+ mockModuleStoreService.getYangSchemaResources(dataspaceName, schemaSetName) >> schemaContext
+ when: 'saveData method is invoked'
+ cpsDataServiceImpl.saveData(dataspaceName, anchorName, jsonData, noTimestamp)
+ then: 'Parameters are validated and processing is delegated to persistence service'
+ 1 * mockDataStoreService.storeDataNodes('someDataspace', 'someAnchor', _) >>
+ { args -> dataNodeStored = args[2]}
+ def child = dataNodeStored[0].childDataNodes[0]
+ assert child.childDataNodes.size() == 1
+ and: 'list of Tracking Area for a Coverage Area are stored with correct xpath and child nodes '
+ def listOfTAForCoverageArea = child.childDataNodes[0]
+ listOfTAForCoverageArea.xpath == '/ran-coverage-area/pLMNIdList[@mcc=\'310\' and @mnc=\'410\']/' +
+ 'coverage-area[@coverageArea=\'Washington\']'
+ listOfTAForCoverageArea.childDataNodes[0].leaves.get('nRTAC') == 234
+ and: 'list of cells in a tracking area are stored with correct xpath and child nodes '
+ def listOfCellsInTrackingArea = listOfTAForCoverageArea.childDataNodes[0]
+ listOfCellsInTrackingArea.xpath == '/ran-coverage-area/pLMNIdList[@mcc=\'310\' and @mnc=\'410\']/' +
+ 'coverage-area[@coverageArea=\'Washington\']/coverageAreaTAList[@nRTAC=\'234\']'
+ listOfCellsInTrackingArea.childDataNodes[0].leaves.get('cellLocalId') == 15709
+ }
+
+ def 'E2E Coverage Area-Tracking Area & TA-Cell mapping data can be parsed for RAN inventory.'() {
+ def dataNodeStored
+ given: 'valid yang resource as name-to-content map'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
+ 'e2e/basic/cps-ran-inventory@2021-01-28.yang')
+ def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
+ and : 'a valid json is provided for the model'
+ def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-ran-inventory-data.json')
+ and : 'all the further dependencies are mocked '
+ mockCpsAnchorService.getAnchor('someDataspace', 'someAnchor') >>
+ new Anchor().builder().name('someAnchor').schemaSetName('someSchemaSet').dataspaceName(dataspaceName).build()
+ mockYangTextSchemaSourceSetCache.get('someDataspace', 'someSchemaSet') >> YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap)
+ mockModuleStoreService.getYangSchemaResources('someDataspace', 'someSchemaSet') >> schemaContext
+ when: 'saveData method is invoked'
+ cpsDataServiceImpl.saveData('someDataspace', 'someAnchor', jsonData, noTimestamp)
+ then: 'parameters are validated and processing is delegated to persistence service'
+ 1 * mockDataStoreService.storeDataNodes('someDataspace', 'someAnchor', _) >>
+ { args -> dataNodeStored = args[2]}
+ and: 'the size of the tree is correct'
+ def cpsRanInventory = TestUtils.getFlattenMapByXpath(dataNodeStored[0])
+ assert cpsRanInventory.size() == 4
+ and: 'ran-inventory contains the correct child node'
+ def ranInventory = cpsRanInventory.get('/ran-inventory')
+ def ranSlices = cpsRanInventory.get('/ran-inventory/ran-slices[@rannfnssiid=\'14559ead-f4fe-4c1c-a94c-8015fad3ea35\']')
+ def sliceProfilesList = cpsRanInventory.get('/ran-inventory/ran-slices[@rannfnssiid=\'14559ead-f4fe-4c1c-a94c-8015fad3ea35\']/sliceProfilesList[@sliceProfileId=\'f33a9dd8-ae51-4acf-8073-c9390c25f6f1\']')
+ def pLMNIdList = cpsRanInventory.get('/ran-inventory/ran-slices[@rannfnssiid=\'14559ead-f4fe-4c1c-a94c-8015fad3ea35\']/sliceProfilesList[@sliceProfileId=\'f33a9dd8-ae51-4acf-8073-c9390c25f6f1\']/pLMNIdList[@mcc=\'310\' and @mnc=\'410\']')
+ ranInventory.getChildDataNodes().size() == 1
+ ranInventory.getChildDataNodes().find( {it.xpath == ranSlices.xpath})
+ and: 'ranSlices contains the correct child node'
+ ranSlices.getChildDataNodes().size() == 1
+ ranSlices.getChildDataNodes().find( {it.xpath == sliceProfilesList.xpath})
+ and: 'sliceProfilesList contains the correct child node'
+ sliceProfilesList.getChildDataNodes().size() == 1
+ sliceProfilesList.getChildDataNodes().find( {it.xpath == pLMNIdList.xpath})
+ and: 'pLMNIdList contains no children'
+ pLMNIdList.getChildDataNodes().size() == 0
+
+ }
+
+ def 'E2E RAN Schema Model.'(){
+ given: 'yang resources'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
+ 'ietf/ietf-inet-types@2013-07-15.yang',
+ 'ietf/ietf-yang-types@2013-07-15.yang',
+ 'e2e/basic/cps-ran-schema-model@2021-05-19.yang'
+ )
+ and : 'json data'
+ def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-ran-schema-model-data-v4.json')
+ expect: 'schema context is built with no exception indicating the schema set being valid '
+ def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
+ and: 'data is parsed with no exception indicating the model match'
+ new YangParserHelper().parseData(ContentType.JSON, jsonData, schemaContext, '', false) != null
+ }
+}
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/YangTextSchemaSourceSetCacheSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/impl/YangTextSchemaSourceSetCacheSpec.groovy
index 5b9d11f439..fe49d04f3c 100644
--- a/cps-service/src/test/groovy/org/onap/cps/api/impl/YangTextSchemaSourceSetCacheSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/impl/YangTextSchemaSourceSetCacheSpec.groovy
@@ -19,7 +19,7 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.api.impl
+package org.onap.cps.impl
import org.onap.cps.TestUtils
import org.onap.cps.impl.utils.CpsValidator
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/PrefixResolverSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/PrefixResolverSpec.groovy
index f80678f7d3..3198e54092 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/PrefixResolverSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/PrefixResolverSpec.groovy
@@ -23,7 +23,7 @@
package org.onap.cps.utils
import org.onap.cps.TestUtils
-import org.onap.cps.api.impl.YangTextSchemaSourceSetCache
+import org.onap.cps.impl.YangTextSchemaSourceSetCache
import org.onap.cps.api.model.Anchor
import org.onap.cps.yang.YangTextSchemaSourceSet
import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/YangParserSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/YangParserSpec.groovy
index 62c681eb07..a2fadb7e9f 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/YangParserSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/YangParserSpec.groovy
@@ -29,7 +29,7 @@ import org.onap.cps.yang.YangTextSchemaSourceSet
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode
import org.opendaylight.yangtools.yang.model.api.SchemaContext
import spock.lang.Specification
-import org.onap.cps.api.impl.YangTextSchemaSourceSetCache
+import org.onap.cps.impl.YangTextSchemaSourceSetCache
class YangParserSpec extends Specification {
diff --git a/docs/api/swagger/ncmp/openapi.yaml b/docs/api/swagger/ncmp/openapi.yaml
index 4e369f5dce..692266183b 100644
--- a/docs/api/swagger/ncmp/openapi.yaml
+++ b/docs/api/swagger/ncmp/openapi.yaml
@@ -38,7 +38,7 @@ paths:
examples:
sample 1:
value:
- resourceIdentifier: "\GNBDUFunction"
+ resourceIdentifier: \GNBDUFunction
sample 2:
value:
resourceIdentifier: "\\GNBDUFunction[@gNBId='1001']"
@@ -155,7 +155,7 @@ paths:
examples:
sample 1:
value:
- resourceIdentifier: "\GNBDUFunction"
+ resourceIdentifier: \GNBDUFunction
sample 2:
value:
resourceIdentifier: "\\GNBDUFunction[@gNBId='1001']"
@@ -299,7 +299,7 @@ paths:
examples:
sample 1:
value:
- resourceIdentifier: "\GNBDUFunction"
+ resourceIdentifier: \GNBDUFunction
sample 2:
value:
resourceIdentifier: "\\GNBDUFunction[@gNBId='1001']"
@@ -419,7 +419,7 @@ paths:
examples:
sample 1:
value:
- resourceIdentifier: "\GNBDUFunction"
+ resourceIdentifier: \GNBDUFunction
sample 2:
value:
resourceIdentifier: "\\GNBDUFunction[@gNBId='1001']"
@@ -544,7 +544,7 @@ paths:
examples:
sample 1:
value:
- resourceIdentifier: "\GNBDUFunction"
+ resourceIdentifier: \GNBDUFunction
sample 2:
value:
resourceIdentifier: "\\GNBDUFunction[@gNBId='1001']"
@@ -1542,7 +1542,7 @@ components:
examples:
sample 1:
value:
- resourceIdentifier: "\GNBDUFunction"
+ resourceIdentifier: \GNBDUFunction
sample 2:
value:
resourceIdentifier: "\\GNBDUFunction[@gNBId='1001']"
@@ -1872,19 +1872,13 @@ components:
RestModuleDefinition:
example:
moduleName: my-module-name
- content: |
- module _3gpp-nr-nrm-gnbdufunction {
- yang-version 1.1;
- namespace 'urn:3gpp:sa5:_3gpp-nr-nrm-gnbdufunction';
- prefix gnbdu3gpp;
- revision '2020-09-15' {
- description
- 'Defines the YANG mapping of the GNBDUFunction Information
- Object Class (IOC) that is part of the NR Network Resource Model (NRM).
- Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,
- TTA, TTC). All rights reserved.';
- }
- }
+ content: "module _3gpp-nr-nrm-gnbdufunction {\n yang-version 1.1;\n namespace\
+ \ 'urn:3gpp:sa5:_3gpp-nr-nrm-gnbdufunction';\n prefix gnbdu3gpp;\n revision\
+ \ '2020-09-15' {\n description\n 'Defines the YANG mapping of the\
+ \ GNBDUFunction Information \n Object Class (IOC) that is part of the\
+ \ NR Network Resource Model (NRM). \n Copyright 2024, 3GPP Organizational\
+ \ Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,\n TTA, TTC). All rights reserved.';\n\
+ \ }\n}\n"
revision: 2020-09-15
properties:
moduleName:
@@ -1894,17 +1888,13 @@ components:
example: 2020-09-15
type: string
content:
- example: |
- module _3gpp-nr-nrm-gnbdufunction {
- yang-version 1.1;
- namespace 'urn:3gpp:sa5:_3gpp-nr-nrm-gnbdufunction';
- prefix gnbdu3gpp;
- revision '2020-09-15' {
- description
- 'Defines the YANG mapping of the GNBDUFunction Information
- Object Class (IOC) that is part of the NR Network Resource Model (NRM).
- Copyright 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,
- TTA, TTC). All rights reserved.';
+ example: "module _3gpp-nr-nrm-gnbdufunction {\n yang-version 1.1;\n namespace\
+ \ 'urn:3gpp:sa5:_3gpp-nr-nrm-gnbdufunction';\n prefix gnbdu3gpp;\n revision\
+ \ '2020-09-15' {\n description\n 'Defines the YANG mapping of the\
+ \ GNBDUFunction Information \n Object Class (IOC) that is part of\
+ \ the NR Network Resource Model (NRM). \n Copyright 2024, 3GPP Organizational\
+ \ Partners (ARIB, ATIS, CCSA, ETSI, TSDSI,\n TTA, TTC). All rights\
+ \ reserved.';\n }\n}\n"
type: string
title: Module definitions
type: object