summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhalil.cakal <halil.cakal@est.tech>2023-08-28 12:25:37 +0100
committerhalil.cakal <halil.cakal@est.tech>2023-08-31 11:18:23 +0100
commit12ed2412adfb9ca6f0302b425dacf7fc8e4860c0 (patch)
treefd1ad03bbe7890cbb2a355fdb66aedb840988703
parent7dbd1856887a3e8a315752a10d7a0bf83d7da077 (diff)
Hazelcast cache config stroring trust level per dmi plugin
- Add Hazelcast cache config to store trust level per dmi plugin Issue-ID: CPS-1855 Change-Id: Ibe7f8393008ca7352aacddba99ecd19d6e1eb326 Signed-off-by: halil.cakal <halil.cakal@est.tech>
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfig.java16
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfigSpec.groovy87
2 files changed, 103 insertions, 0 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfig.java
index 816fc50675..66f61906da 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfig.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfig.java
@@ -21,8 +21,11 @@
package org.onap.cps.ncmp.api.impl.config.embeddedcache;
import com.hazelcast.collection.ISet;
+import com.hazelcast.config.MapConfig;
import com.hazelcast.config.SetConfig;
+import com.hazelcast.map.IMap;
import org.onap.cps.cache.HazelcastCacheConfig;
+import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -42,5 +45,18 @@ public class TrustLevelCacheConfig extends HazelcastCacheConfig {
"untrustworthyCmHandlesSet");
}
+ private static final MapConfig trustLevelPerDmiPluginCacheConfig =
+ createMapConfig("trustLevelPerDmiPluginCacheConfig");
+
+ /**
+ * Distributed instance of trust level cache that contains dmi-plugin name by trust level.
+ *
+ * @return configured map of dmi-plugin name as keys to trust-level for values.
+ */
+ @Bean
+ public IMap<String, TrustLevel> trustLevelPerDmiPlugin() {
+ return createHazelcastInstance("hazelcastInstanceTrustLevelPerDmiPluginMap",
+ trustLevelPerDmiPluginCacheConfig).getMap("trustLevelPerDmiPlugin");
+ }
}
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfigSpec.groovy
new file mode 100644
index 0000000000..6184a97228
--- /dev/null
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/TrustLevelCacheConfigSpec.groovy
@@ -0,0 +1,87 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 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.ncmp.api.impl.config.embeddedcache
+
+import com.hazelcast.config.Config
+import com.hazelcast.core.Hazelcast
+import com.hazelcast.map.IMap
+import org.onap.cps.ncmp.api.impl.trustlevel.TrustLevel
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import spock.lang.Specification
+
+@SpringBootTest(classes = [TrustLevelCacheConfig])
+class TrustLevelCacheConfigSpec extends Specification {
+
+ @Autowired
+ private IMap<String, TrustLevel> trustLevelPerDmiPlugin
+
+ def 'Hazelcast cache for trust level per dmi plugin'() {
+ expect: 'system is able to create an instance of the trust level per dmi plugin cache'
+ assert null != trustLevelPerDmiPlugin
+ and: 'there is at least 1 instance'
+ assert Hazelcast.allHazelcastInstances.size() > 0
+ and: 'Dmi Plugin Trust Level Cache is present'
+ assert Hazelcast.allHazelcastInstances.name.contains('hazelcastInstanceTrustLevelPerDmiPluginMap')
+ }
+
+ def 'Verify Trust Level Per Dmi Plugin Cache for basic hazelcast map operations'() {
+ when: 'the key inserted into Trust Level Per Dmi Plugin Cache'
+ trustLevelPerDmiPlugin.put('dmi1', TrustLevel.COMPLETE)
+ trustLevelPerDmiPlugin.put('dmi2', TrustLevel.NONE)
+ then: 'the value for each dmi can be retrieved'
+ assert trustLevelPerDmiPlugin.get('dmi1') == TrustLevel.COMPLETE
+ assert trustLevelPerDmiPlugin.get('dmi2') == TrustLevel.NONE
+ }
+
+ def 'Verify configs for Distributed Caches'(){
+ given: 'the Trust Level Per Dmi Plugin Cache config'
+ def trustLevelDmiPerPluginCacheConfig = Hazelcast.getHazelcastInstanceByName('hazelcastInstanceTrustLevelPerDmiPluginMap').config
+ def trustLevelDmiPerPluginCacheMapConfig = trustLevelDmiPerPluginCacheConfig.mapConfigs.get('trustLevelPerDmiPluginCacheConfig')
+ expect: 'system created instance with correct config'
+ assert trustLevelDmiPerPluginCacheConfig.clusterName == 'cps-and-ncmp-test-caches'
+ assert trustLevelDmiPerPluginCacheMapConfig.backupCount == 3
+ assert trustLevelDmiPerPluginCacheMapConfig.asyncBackupCount == 3
+ }
+
+ def 'Verify deployment network configs for Distributed Caches'() {
+ given: 'the Trust Level Per Dmi Plugin Cache config'
+ def trustLevelDmiPerPluginCacheConfig = Hazelcast.getHazelcastInstanceByName('hazelcastInstanceTrustLevelPerDmiPluginMap').config.networkConfig
+ expect: 'system created instance with correct config'
+ assert trustLevelDmiPerPluginCacheConfig.join.autoDetectionConfig.enabled
+ assert !trustLevelDmiPerPluginCacheConfig.join.kubernetesConfig.enabled
+ }
+
+ def 'Verify network config'() {
+ given: 'Synchronization config object and test configuration'
+ def objectUnderTest = new TrustLevelCacheConfig()
+ 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'
+ }
+
+}