Remove Hazelcast cache for prefix resolver (CPS-2417 #2) 85/138985/3
authordanielhanrahan <daniel.hanrahan@est.tech>
Tue, 17 Sep 2024 16:48:22 +0000 (17:48 +0100)
committerDaniel Hanrahan <daniel.hanrahan@est.tech>
Tue, 24 Sep 2024 18:00:52 +0000 (18:00 +0000)
This patch removes the AnchorDataCache from CPS, which is used for
prefix resolution in get/query operations.

As such, Hazelcast is no longer a dependency of CPS, only NCMP.

- Changed PrefixResolver to be more efficient.
- Removed AnchorDataCache and associated classes.
- Moved HazelcastCacheConfig to NCMP.
- Removed Hazelcast dependency from cps-service/pom.xml

This shows good performance improvements in some APIs such as v2 GET
which is nearly 2x faster (also 5x faster including base patch).

Issue-ID: CPS-2417
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: I24768469f24e90b70f7a6187faa4f5b3d75777d2

13 files changed:
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/cache/HazelcastCacheConfig.java [moved from cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java with 99% similarity]
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/cmnotificationsubscription/cache/CmSubscriptionConfig.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/sync/SynchronizationCacheConfig.java
cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/inventory/trustlevel/TrustLevelCacheConfig.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/cache/HazelcastCacheConfigSpec.groovy [moved from cps-service/src/test/groovy/org/onap/cps/cache/HazelcastCacheConfigSpec.groovy with 99% similarity]
cps-service/pom.xml
cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java [deleted file]
cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheEntry.java [deleted file]
cps-service/src/main/java/org/onap/cps/utils/PrefixResolver.java
cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy [deleted file]
cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheEntrySpec.groovy [deleted file]
cps-service/src/test/groovy/org/onap/cps/utils/PrefixResolverSpec.groovy
cps-service/src/test/resources/application.yml

@@ -18,7 +18,7 @@
  *  ============LICENSE_END=========================================================
  */
 
-package org.onap.cps.cache;
+package org.onap.cps.ncmp.impl.cache;
 
 import com.hazelcast.config.Config;
 import com.hazelcast.config.MapConfig;
index a4f9be3..e890d72 100644 (file)
@@ -23,7 +23,7 @@ package org.onap.cps.ncmp.impl.cmnotificationsubscription.cache;
 import com.hazelcast.config.MapConfig;
 import com.hazelcast.map.IMap;
 import java.util.Map;
-import org.onap.cps.cache.HazelcastCacheConfig;
+import org.onap.cps.ncmp.impl.cache.HazelcastCacheConfig;
 import org.onap.cps.ncmp.impl.cmnotificationsubscription.models.DmiCmSubscriptionDetails;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
index 76b33cc..8ef98bc 100644 (file)
@@ -25,7 +25,7 @@ import com.hazelcast.config.QueueConfig;
 import com.hazelcast.map.IMap;
 import java.util.concurrent.BlockingQueue;
 import lombok.extern.slf4j.Slf4j;
-import org.onap.cps.cache.HazelcastCacheConfig;
+import org.onap.cps.ncmp.impl.cache.HazelcastCacheConfig;
 import org.onap.cps.spi.model.DataNode;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
index b64d3a2..0e9eaf5 100644 (file)
@@ -22,8 +22,8 @@ package org.onap.cps.ncmp.impl.inventory.trustlevel;
 
 import com.hazelcast.config.MapConfig;
 import java.util.Map;
-import org.onap.cps.cache.HazelcastCacheConfig;
 import org.onap.cps.ncmp.api.inventory.models.TrustLevel;
+import org.onap.cps.ncmp.impl.cache.HazelcastCacheConfig;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -18,7 +18,7 @@
  *  ============LICENSE_END=========================================================
  */
 
-package org.onap.cps.cache
+package org.onap.cps.ncmp.impl.cache
 
 import com.hazelcast.config.Config
 import com.hazelcast.config.RestEndpointGroup
index 37a4595..2a9c75f 100644 (file)
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-    <dependency>
-      <!-- Hazelcast provide Distributed Caches -->
-      <groupId>com.hazelcast</groupId>
-      <artifactId>hazelcast-spring</artifactId>
-    </dependency>
     <dependency>
       <groupId>io.micrometer</groupId>
       <artifactId>micrometer-core</artifactId>
diff --git a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java
deleted file mode 100644 (file)
index efe19c6..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ============LICENSE_START========================================================
- *  Copyright (C) 2022-2023 Nordix Foundation
- *  ================================================================================
- *  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.cache;
-
-import com.hazelcast.config.MapConfig;
-import com.hazelcast.map.IMap;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Core infrastructure of the hazelcast distributed cache for anchor data config use cases.
- */
-@Configuration
-public class AnchorDataCacheConfig extends HazelcastCacheConfig {
-
-    private static final MapConfig anchorDataCacheMapConfig = createMapConfig("anchorDataCacheMapConfig");
-
-    /**
-     * Distributed instance of anchor data cache that contains module prefix by anchor name as properties.
-     *
-     * @return configured map of anchor data cache
-     */
-    @Bean
-    public IMap<String, AnchorDataCacheEntry> anchorDataCache() {
-        return createHazelcastInstance("hazelCastInstanceCpsCore", anchorDataCacheMapConfig).getMap("anchorDataCache");
-    }
-}
diff --git a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheEntry.java b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheEntry.java
deleted file mode 100644 (file)
index 41adbdd..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * ============LICENSE_START========================================================
- *  Copyright (C) 2022 Nordix Foundation
- *  ================================================================================
- *  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.cache;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-public class AnchorDataCacheEntry implements Serializable {
-
-    private static final long serialVersionUID = 2111243947810370698L;
-
-    private Map<String, Serializable> properties = new HashMap<>();
-
-    public Object getProperty(final String propertyName) {
-        return properties.get(propertyName);
-    }
-
-    public void setProperty(final String propertyName, final Serializable value) {
-        properties.put(propertyName, value);
-    }
-
-    public boolean hasProperty(final String propertyName) {
-        return properties.containsKey(propertyName);
-    }
-}
index 93fb728..c3097cc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2022-2023 Nordix Foundation.
+ *  Copyright (C) 2022-2024 Nordix Foundation.
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
 
 package org.onap.cps.utils;
 
-import com.hazelcast.map.IMap;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
 import lombok.RequiredArgsConstructor;
-import org.onap.cps.api.CpsAnchorService;
 import org.onap.cps.api.impl.YangTextSchemaSourceSetCache;
-import org.onap.cps.cache.AnchorDataCacheEntry;
 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.spi.model.Anchor;
 import org.onap.cps.yang.YangTextSchemaSourceSet;
-import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.springframework.stereotype.Component;
 
 @Component
 @RequiredArgsConstructor
 public class PrefixResolver {
-    private static final long ANCHOR_DATA_CACHE_TTL_SECS = TimeUnit.HOURS.toSeconds(1);
-
-    private static final String CACHE_ENTRY_PROPERTY_NAME = "prefixPerContainerName";
-
-    private final CpsAnchorService cpsAnchorService;
-
     private final YangTextSchemaSourceSetCache yangTextSchemaSourceSetCache;
 
-    private final IMap<String, AnchorDataCacheEntry> anchorDataCache;
-
     /**
      * Get the module prefix for the given xpath under the given anchor.
      *
@@ -62,57 +47,25 @@ public class PrefixResolver {
      * @return the prefix of the module the top level element of given xpath
      */
     public String getPrefix(final Anchor anchor, final String xpath) {
-        final Map<String, String> prefixPerContainerName = getPrefixPerContainerName(anchor);
-        return getPrefixForTopContainer(prefixPerContainerName, xpath);
-    }
-
-    private Map<String, String> getPrefixPerContainerName(final Anchor anchor) {
-        if (anchorDataCache.containsKey(anchor.getName())) {
-            final AnchorDataCacheEntry anchorDataCacheEntry = anchorDataCache.get(anchor.getName());
-            if (anchorDataCacheEntry.hasProperty(CACHE_ENTRY_PROPERTY_NAME)) {
-                return (Map) anchorDataCacheEntry.getProperty(CACHE_ENTRY_PROPERTY_NAME);
-            }
-        }
-        return createAndCachePrefixPerContainerNameMap(anchor);
-    }
-
-    private String getPrefixForTopContainer(final Map<String, String> prefixPerContainerName,
-                                            final String xpath) {
         final CpsPathQuery cpsPathQuery = CpsPathUtil.getCpsPathQuery(xpath);
-        if (cpsPathQuery.getCpsPathPrefixType() == CpsPathPrefixType.ABSOLUTE) {
-            final String topLevelContainerName = cpsPathQuery.getContainerNames().get(0);
-            if (prefixPerContainerName.containsKey(topLevelContainerName)) {
-                return prefixPerContainerName.get(topLevelContainerName);
-            }
+        if (cpsPathQuery.getCpsPathPrefixType() != CpsPathPrefixType.ABSOLUTE) {
+            return "";
         }
-        return "";
-    }
+        final String topLevelContainerName = cpsPathQuery.getContainerNames().get(0);
 
-    private Map<String, String> createAndCachePrefixPerContainerNameMap(final Anchor anchor) {
         final YangTextSchemaSourceSet yangTextSchemaSourceSet =
-            yangTextSchemaSourceSetCache.get(anchor.getDataspaceName(), anchor.getSchemaSetName());
+                yangTextSchemaSourceSetCache.get(anchor.getDataspaceName(), anchor.getSchemaSetName());
         final SchemaContext schemaContext = yangTextSchemaSourceSet.getSchemaContext();
-        final Map<QNameModule, String> prefixPerQNameModule = new HashMap<>(schemaContext.getModules().size());
-        for (final Module module : schemaContext.getModules()) {
-            prefixPerQNameModule.put(module.getQNameModule(), module.getPrefix());
-        }
-        final HashMap<String, String> prefixPerContainerName = new HashMap<>();
-        for (final DataSchemaNode dataSchemaNode : schemaContext.getChildNodes()) {
-            if (dataSchemaNode instanceof DataNodeContainer) {
-                final String containerName = dataSchemaNode.getQName().getLocalName();
-                final String prefix = prefixPerQNameModule.get(dataSchemaNode.getQName().getModule());
-                prefixPerContainerName.put(containerName, prefix);
-            }
-        }
-        cachePrefixPerContainerNameMap(anchor.getName(), prefixPerContainerName);
-        return prefixPerContainerName;
-    }
 
-    private void cachePrefixPerContainerNameMap(final String anchorName,
-                                                final Serializable prefixPerContainerName) {
-        final AnchorDataCacheEntry anchorDataCacheEntry = new AnchorDataCacheEntry();
-        anchorDataCacheEntry.setProperty(CACHE_ENTRY_PROPERTY_NAME, prefixPerContainerName);
-        anchorDataCache.put(anchorName, anchorDataCacheEntry, ANCHOR_DATA_CACHE_TTL_SECS, TimeUnit.SECONDS);
+        return schemaContext.getChildNodes().stream()
+                .filter(DataNodeContainer.class::isInstance)
+                .map(SchemaNode::getQName)
+                .filter(qname -> qname.getLocalName().equals(topLevelContainerName))
+                .findFirst()
+                .map(QName::getModule)
+                .flatMap(schemaContext::findModule)
+                .map(Module::getPrefix)
+                .orElse("");
     }
 
 }
diff --git a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy
deleted file mode 100644 (file)
index 010308c..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *  ============LICENSE_START=======================================================
- *  Copyright (C) 2022-2023 Nordix Foundation
- *  ================================================================================
- *  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.cache
-
-import com.hazelcast.config.Config
-import com.hazelcast.core.Hazelcast
-import com.hazelcast.map.IMap
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.test.context.ContextConfiguration
-import spock.lang.Specification
-
-@SpringBootTest
-@ContextConfiguration(classes = [AnchorDataCacheConfig])
-class AnchorDataCacheConfigSpec extends Specification {
-
-    @Autowired
-    private IMap<String, AnchorDataCacheEntry> anchorDataCache
-
-    def 'Embedded (hazelcast) cache for Anchor Data.'() {
-        expect: 'system is able to create an instance of the Anchor data cache'
-            assert null != anchorDataCache
-        and: 'there is at least 1 instance'
-            assert Hazelcast.allHazelcastInstances.size() > 0
-        and: 'anchorDataCache is present'
-            assert Hazelcast.allHazelcastInstances.name.contains('hazelCastInstanceCpsCore')
-    }
-
-    def 'Verify configs for Distributed Caches'(){
-        given: 'the Anchor Data Cache config'
-            def anchorDataCacheConfig =  Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config
-            def anchorDataCacheMapConfig =  anchorDataCacheConfig.mapConfigs.get('anchorDataCacheMapConfig')
-        expect: 'system created instance with correct config'
-            assert anchorDataCacheConfig.clusterName == 'cps-and-ncmp-test-caches'
-            assert anchorDataCacheMapConfig.backupCount == 1
-            assert anchorDataCacheMapConfig.asyncBackupCount == 0
-    }
-
-    def 'Verify deployment network configs for Distributed Caches'() {
-        given: 'the Anchor Data Cache config'
-            def anchorDataCacheNetworkConfig = Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config.networkConfig
-        expect: 'system created instance with correct config'
-            assert anchorDataCacheNetworkConfig.join.autoDetectionConfig.enabled
-            assert !anchorDataCacheNetworkConfig.join.kubernetesConfig.enabled
-    }
-
-    def 'Verify network config'() {
-        given: 'Synchronization config object and test configuration'
-            def objectUnderTest = new AnchorDataCacheConfig()
-            def testConfig = new Config()
-        when: 'kubernetes properties are enabled'
-            objectUnderTest.cacheKubernetesEnabled = true
-            objectUnderTest.cacheKubernetesServiceName = 'test-service-name'
-        and: 'method called to update the discovery mode'
-            objectUnderTest.updateDiscoveryMode(testConfig)
-        then: 'applied properties are reflected'
-            assert testConfig.networkConfig.join.kubernetesConfig.enabled
-            assert testConfig.networkConfig.join.kubernetesConfig.properties.get('service-name') == 'test-service-name'
-
-    }
-
-}
diff --git a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheEntrySpec.groovy b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheEntrySpec.groovy
deleted file mode 100644 (file)
index f38b45d..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  ============LICENSE_START=======================================================
- *  Copyright (C) 2022 Nordix Foundation
- *  ================================================================================
- *  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.cache
-
-
-import spock.lang.Specification
-
-class AnchorDataCacheEntrySpec extends Specification {
-
-    def objectUnderTest = new AnchorDataCacheEntry()
-
-    def 'Anchor Data Cache Properties Management.'() {
-        when: 'a property named "sample" is added to the cache'
-            objectUnderTest.setProperty('sample', 123)
-        then: 'the cache has that property'
-            assert objectUnderTest.hasProperty('sample')
-        and: 'the value is correct'
-            assert objectUnderTest.getProperty('sample') == 123
-        and: 'the cache does not have an an object called "something else"'
-            assert objectUnderTest.hasProperty('something else') == false
-    }
-}
index 5ef584a..13b042f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2021-2023 Nordix Foundation
+ *  Copyright (C) 2021-2024 Nordix Foundation
  *  Modifications Copyright (C) 2021 Pantheon.tech
  *  Modifications Copyright (C) 2021-2022 Bell Canada.
  *  ================================================================================
 
 package org.onap.cps.utils
 
-import com.hazelcast.map.IMap
 import org.onap.cps.TestUtils
-import org.onap.cps.api.CpsAnchorService
 import org.onap.cps.api.impl.YangTextSchemaSourceSetCache
-import org.onap.cps.cache.AnchorDataCacheEntry
 import org.onap.cps.spi.model.Anchor
 import org.onap.cps.yang.YangTextSchemaSourceSet
 import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
@@ -34,13 +31,9 @@ import spock.lang.Specification
 
 class PrefixResolverSpec extends Specification {
 
-    def mockCpsAnchorService = Mock(CpsAnchorService)
-
     def mockYangTextSchemaSourceSetCache = Mock(YangTextSchemaSourceSetCache)
 
-    def mockAnchorDataCache = Mock(IMap<String, AnchorDataCacheEntry>)
-
-    def objectUnderTest = new PrefixResolver(mockCpsAnchorService, mockYangTextSchemaSourceSetCache, mockAnchorDataCache)
+    def objectUnderTest = new PrefixResolver(mockYangTextSchemaSourceSetCache)
 
     def mockYangTextSchemaSourceSet = Mock(YangTextSchemaSourceSet)
 
@@ -50,27 +43,14 @@ class PrefixResolverSpec extends Specification {
 
     def anchor = new Anchor(dataspaceName: 'testDataspace', name: 'testAnchor')
 
-    def setup() {
-        given: 'the system can get the anchor'
-            mockCpsAnchorService.getAnchor('testDataspace', 'testAnchor') >> anchor
-        and: 'the schema source cache contains the schema context for the test-tree module'
-            mockYangTextSchemaSourceSet.getSchemaContext() >> schemaContext
-    }
-
     def 'get xpath prefix using node schema context'() {
+        given: 'the schema source cache contains the schema context for the test-tree module'
+            mockYangTextSchemaSourceSet.getSchemaContext() >> schemaContext
+            mockYangTextSchemaSourceSetCache.get(*_) >> mockYangTextSchemaSourceSet
         when: 'the prefix of the yang module is retrieved'
             def result = objectUnderTest.getPrefix(anchor, xpath)
         then: 'the expected prefix is returned'
             result == expectedPrefix
-        and: 'the cache is updated for the given anchor with a map of prefixes per top level container (just one one this case)'
-            1 * mockAnchorDataCache.put('testAnchor',_ , _ ,_) >> { args -> {
-                def prefixPerContainerName = args[1].getProperty("prefixPerContainerName")
-                assert prefixPerContainerName.size() == 1
-                assert prefixPerContainerName.get('test-tree') == 'tree'
-                }
-            }
-        and: 'schema source cache is used (i.e. need to build schema context)'
-            1 * mockYangTextSchemaSourceSetCache.get(*_) >> mockYangTextSchemaSourceSet
         where: 'the following scenarios are applied'
             xpath                         || expectedPrefix
             '/test-tree'                  || 'tree'
@@ -82,37 +62,4 @@ class PrefixResolverSpec extends Specification {
             '/not-defined'                || ''
     }
 
-    def 'get prefix with populated anchor data cache with #scenario cache entry'() {
-        given: 'anchor data cache is populated for the anchor with a prefix for top level container named #cachedTopLevelContainerName'
-            def anchorDataCacheEntry = new AnchorDataCacheEntry()
-            def prefixPerContainerName = [(cachedTopLevelContainerName): 'cachedPrefix']
-            anchorDataCacheEntry.setProperty('prefixPerContainerName',prefixPerContainerName)
-            mockAnchorDataCache.containsKey('testAnchor') >> true
-            mockAnchorDataCache.get('testAnchor') >> anchorDataCacheEntry
-        when: 'the prefix of the yang module is retrieved'
-            def result = objectUnderTest.getPrefix(anchor, '/test-tree')
-        then: 'the expected prefix is returned'
-            result == expectedPrefix
-        and: 'schema source cache is not used (i.e. no need to build schema context)'
-            0 * mockYangTextSchemaSourceSetCache.get(*_)
-        where: 'the following scenarios are applied'
-            scenario       | cachedTopLevelContainerName || expectedPrefix
-            'matching'     | 'test-tree'                 || 'cachedPrefix'
-            'non-matching' | 'other'                     || ''
-    }
-
-    def 'get prefix with other (non relevant) data in anchor data cache'() {
-        given: 'anchor data cache is populated with non relevant other property'
-            def anchorDataCacheEntry = new AnchorDataCacheEntry()
-            anchorDataCacheEntry.setProperty('something else', 'does not matter')
-            mockAnchorDataCache.containsKey('testAnchor') >> true
-            mockAnchorDataCache.get('testAnchor') >> anchorDataCacheEntry
-        when: 'the prefix of the yang module is retrieved'
-            def result = objectUnderTest.getPrefix(anchor, '/test-tree')
-        then: 'the expected prefix is returned'
-            result == 'tree'
-        and: 'schema source cache is used (i.e. need to build schema context)'
-            1 * mockYangTextSchemaSourceSetCache.get(*_) >> mockYangTextSchemaSourceSet
-    }
-
 }
index b666885..be71d37 100644 (file)
@@ -1,6 +1,6 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (c) 2021 Bell Canada.
-#  Modification Copyright (C) 2022 Nordix Foundation.
+#  Modification Copyright (C) 2022-2024 Nordix Foundation.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -41,11 +41,3 @@ spring:
 logging:
   level:
     org.apache.kafka: ERROR
-
-# Custom Hazelcast Config.
-hazelcast:
-  cluster-name: "cps-and-ncmp-test-caches"
-  mode:
-    kubernetes:
-      enabled: false
-      service-name: "cps-and-ncmp-service"