X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-service%2Fsrc%2Ftest%2Fgroovy%2Forg%2Fonap%2Fcps%2Fapi%2Fimpl%2FE2ENetworkSliceSpec.groovy;h=4782468f19e372ed34ad1f1b1ac8ee3a534ab9a3;hb=a966bab93a17fcba4e7fc28354c01b3f0878fbbe;hp=fec8b7fa7954c60280cd4706dd5777a7c9ce4a32;hpb=b0c2031e8d546336685c84cfccef8d515144dfc6;p=cps.git diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy index fec8b7fa7..4782468f1 100755 --- a/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy @@ -1,14 +1,15 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. - * Modifications Copyright (C) 2021 Bell Canada. + * Copyright (C) 2021-2023 Nordix Foundation. + * Modifications Copyright (C) 2021-2022 Bell Canada. * Modifications Copyright (C) 2021 Pantheon.tech + * Modifications Copyright (C) 2022-2023 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 + * 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, @@ -23,36 +24,39 @@ package org.onap.cps.api.impl import org.onap.cps.TestUtils -import org.onap.cps.api.CpsAdminService -import org.onap.cps.notification.NotificationService +import org.onap.cps.api.CpsAnchorService +import org.onap.cps.api.CpsDeltaService +import org.onap.cps.spi.CpsDataPersistenceService import org.onap.cps.spi.CpsDataPersistenceService import org.onap.cps.spi.CpsModulePersistenceService import org.onap.cps.spi.model.Anchor +import org.onap.cps.spi.utils.CpsValidator +import org.onap.cps.utils.TimedYangParser import org.onap.cps.utils.YangUtils +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 mockCpsAdminService = Mock(CpsAdminService) - def mockNotificationService = Mock(NotificationService) - def cpsModuleServiceImpl = new CpsModuleServiceImpl() - def cpsDataServiceImpl = new CpsDataServiceImpl() + def mockCpsAnchorService = Mock(CpsAnchorService) def mockYangTextSchemaSourceSetCache = Mock(YangTextSchemaSourceSetCache) + def mockCpsValidator = Mock(CpsValidator) + def timedYangTextSchemaSourceSetBuilder = new TimedYangTextSchemaSourceSetBuilder() + def timedYangParser = new TimedYangParser() + def mockCpsDeltaService = Mock(CpsDeltaService) + + def cpsModuleServiceImpl = new CpsModuleServiceImpl(mockModuleStoreService, + mockYangTextSchemaSourceSetCache, mockCpsAnchorService, mockCpsValidator,timedYangTextSchemaSourceSetBuilder) + + def cpsDataServiceImpl = new CpsDataServiceImpl(mockDataStoreService, mockCpsAnchorService, + mockYangTextSchemaSourceSetCache, mockCpsValidator, timedYangParser, mockCpsDeltaService) def dataspaceName = 'someDataspace' def anchorName = 'someAnchor' def schemaSetName = 'someSchemaSet' - - def setup() { - cpsDataServiceImpl.cpsDataPersistenceService = mockDataStoreService - cpsDataServiceImpl.cpsAdminService = mockCpsAdminService - cpsDataServiceImpl.yangTextSchemaSourceSetCache = mockYangTextSchemaSourceSetCache - cpsDataServiceImpl.notificationService = mockNotificationService - cpsModuleServiceImpl.yangTextSchemaSourceSetCache = mockYangTextSchemaSourceSetCache - cpsModuleServiceImpl.cpsModulePersistenceService = mockModuleStoreService - } + def noTimestamp = null def 'E2E model can be parsed by CPS.'() { given: 'Valid yang resource as name-to-content map' @@ -86,17 +90,17 @@ class E2ENetworkSliceSpec extends Specification { 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 ' - mockCpsAdminService.getAnchor(dataspaceName, anchorName) >> - new Anchor().builder().name(anchorName).schemaSetName(schemaSetName).build() + 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) + cpsDataServiceImpl.saveData(dataspaceName, anchorName, jsonData, noTimestamp) then: 'Parameters are validated and processing is delegated to persistence service' - 1 * mockDataStoreService.storeDataNode('someDataspace', 'someAnchor', _) >> + 1 * mockDataStoreService.storeDataNodes('someDataspace', 'someAnchor', _) >> { args -> dataNodeStored = args[2]} - def child = dataNodeStored.childDataNodes[0] + 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] @@ -119,17 +123,17 @@ class E2ENetworkSliceSpec extends Specification { 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 ' - mockCpsAdminService.getAnchor('someDataspace', 'someAnchor') >> - new Anchor().builder().name('someAnchor').schemaSetName('someSchemaSet').build() + 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) + cpsDataServiceImpl.saveData('someDataspace', 'someAnchor', jsonData, noTimestamp) then: 'parameters are validated and processing is delegated to persistence service' - 1 * mockDataStoreService.storeDataNode('someDataspace', 'someAnchor', _) >> + 1 * mockDataStoreService.storeDataNodes('someDataspace', 'someAnchor', _) >> { args -> dataNodeStored = args[2]} and: 'the size of the tree is correct' - def cpsRanInventory = TestUtils.getFlattenMapByXpath(dataNodeStored) + def cpsRanInventory = TestUtils.getFlattenMapByXpath(dataNodeStored[0]) assert cpsRanInventory.size() == 4 and: 'ran-inventory contains the correct child node' def ranInventory = cpsRanInventory.get('/ran-inventory')