Align the hazelcast cluster names

- We need to align the hazelcast cluster names as members of the same
  cluster can join each other. We will still have exclusivity as the
  instance names and configs are different for each distributed object.
- Exposing env variable to override the cluster name depending on the
  env it is run on.
- Modified test cases to validate the cluster names as well

Issue-ID: CPS-1637
Change-Id: Ib0f8c80dc9b2268f976b0c2d3ccd6d64792d4781
Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
diff --git a/cps-application/src/main/resources/application.yml b/cps-application/src/main/resources/application.yml
index 1eb1c11..ccd09c8 100644
--- a/cps-application/src/main/resources/application.yml
+++ b/cps-application/src/main/resources/application.yml
@@ -199,6 +199,7 @@
 
 # Custom Hazelcast Config.
 hazelcast:
+    cluster-name: ${CPS_NCMP_CACHES_CLUSTER_NAME:"cps-and-ncmp-common-cache-cluster"}
     mode:
         kubernetes:
             enabled: ${HAZELCAST_MODE_KUBERNETES_ENABLED:false}
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java
index ff7afc9..62a380c 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfig.java
@@ -51,9 +51,7 @@
      */
     @Bean
     public BlockingQueue<DataNode> moduleSyncWorkQueue() {
-        return createHazelcastInstance("moduleSyncWorkQueue", commonQueueConfig,
-            "synchronization-caches")
-            .getQueue("moduleSyncWorkQueue");
+        return createHazelcastInstance("moduleSyncWorkQueue", commonQueueConfig).getQueue("moduleSyncWorkQueue");
     }
 
     /**
@@ -63,9 +61,8 @@
      */
     @Bean
     public IMap<String, Object> moduleSyncStartedOnCmHandles() {
-        return createHazelcastInstance("moduleSyncStartedOnCmHandles", moduleSyncStartedConfig,
-            "synchronization-caches")
-            .getMap("moduleSyncStartedOnCmHandles");
+        return createHazelcastInstance("moduleSyncStartedOnCmHandles", moduleSyncStartedConfig).getMap(
+                "moduleSyncStartedOnCmHandles");
     }
 
     /**
@@ -75,8 +72,6 @@
      */
     @Bean
     public IMap<String, Boolean> dataSyncSemaphores() {
-        return createHazelcastInstance("dataSyncSemaphores", dataSyncSemaphoresConfig,
-            "synchronization-caches")
-            .getMap("dataSyncSemaphores");
+        return createHazelcastInstance("dataSyncSemaphores", dataSyncSemaphoresConfig).getMap("dataSyncSemaphores");
     }
 }
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java
index d2c3dc2..443ebc6 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfig.java
@@ -45,7 +45,6 @@
     @Bean
     public IMap<String, Set<String>> forwardedSubscriptionEventCache() {
         return createHazelcastInstance("hazelCastInstanceSubscriptionEvents",
-            forwardedSubscriptionEventCacheMapConfig, "cps-ncmp-service-caches")
-            .getMap("forwardedSubscriptionEventCache");
+                forwardedSubscriptionEventCacheMapConfig).getMap("forwardedSubscriptionEventCache");
     }
 }
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy
index 567debd..c0fc18a 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/embeddedcache/SynchronizationCacheConfigSpec.groovy
@@ -59,20 +59,28 @@
 
     def 'Verify configs for Distributed objects'(){
         given: 'the Module Sync Work Queue config'
-            def queueConfig =  Hazelcast.getHazelcastInstanceByName('moduleSyncWorkQueue').config.queueConfigs.get('defaultQueueConfig')
+            def moduleSyncWorkQueueConfig = Hazelcast.getHazelcastInstanceByName('moduleSyncWorkQueue').config
+            def moduleSyncDefaultWorkQueueConfig =  moduleSyncWorkQueueConfig.queueConfigs.get('defaultQueueConfig')
         and: 'the Module Sync Started Cm Handle Map config'
-            def moduleSyncStartedOnCmHandlesConfig =  Hazelcast.getHazelcastInstanceByName('moduleSyncStartedOnCmHandles').config.mapConfigs.get('moduleSyncStartedConfig')
+            def moduleSyncStartedOnCmHandlesConfig =  Hazelcast.getHazelcastInstanceByName('moduleSyncStartedOnCmHandles').config
+            def moduleSyncStartedOnCmHandlesMapConfig =  moduleSyncStartedOnCmHandlesConfig.mapConfigs.get('moduleSyncStartedConfig')
         and: 'the Data Sync Semaphores Map config'
-            def dataSyncSemaphoresConfig =  Hazelcast.getHazelcastInstanceByName('dataSyncSemaphores').config.mapConfigs.get('dataSyncSemaphoresConfig')
+            def dataSyncSemaphoresConfig =  Hazelcast.getHazelcastInstanceByName('dataSyncSemaphores').config
+            def dataSyncSemaphoresMapConfig =  dataSyncSemaphoresConfig.mapConfigs.get('dataSyncSemaphoresConfig')
         expect: 'system created instance with correct config of Module Sync Work Queue'
-            assert queueConfig.backupCount == 3
-            assert queueConfig.asyncBackupCount == 3
+            assert moduleSyncDefaultWorkQueueConfig.backupCount == 3
+            assert moduleSyncDefaultWorkQueueConfig.asyncBackupCount == 3
         and: 'Module Sync Started Cm Handle Map has the correct settings'
-            assert moduleSyncStartedOnCmHandlesConfig.backupCount == 3
-            assert moduleSyncStartedOnCmHandlesConfig.asyncBackupCount == 3
+            assert moduleSyncStartedOnCmHandlesMapConfig.backupCount == 3
+            assert moduleSyncStartedOnCmHandlesMapConfig.asyncBackupCount == 3
         and: 'Data Sync Semaphore Map has the correct settings'
-            assert dataSyncSemaphoresConfig.backupCount == 3
-            assert dataSyncSemaphoresConfig.asyncBackupCount == 3
+            assert dataSyncSemaphoresMapConfig.backupCount == 3
+            assert dataSyncSemaphoresMapConfig.asyncBackupCount == 3
+        and: 'all instances are part of same cluster'
+            def testClusterName = 'cps-and-ncmp-test-caches'
+            assert moduleSyncWorkQueueConfig.clusterName == testClusterName
+            assert moduleSyncStartedOnCmHandlesConfig.clusterName == testClusterName
+            assert dataSyncSemaphoresConfig.clusterName == testClusterName
     }
 
     def 'Verify deployment network configs for Distributed objects'() {
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy
index 7448daf..03d3a1c 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/ForwardedSubscriptionEventCacheConfigSpec.groovy
@@ -44,10 +44,12 @@
 
     def 'Verify configs for Distributed Caches'(){
         given: 'the Forwarded Subscription Event Cache config'
-            def forwardedSubscriptionEventCacheConfig =  Hazelcast.getHazelcastInstanceByName('hazelCastInstanceSubscriptionEvents').config.mapConfigs.get('forwardedSubscriptionEventCacheMapConfig')
+            def forwardedSubscriptionEventCacheConfig =  Hazelcast.getHazelcastInstanceByName('hazelCastInstanceSubscriptionEvents').config
+            def forwardedSubscriptionEventCacheMapConfig =  forwardedSubscriptionEventCacheConfig.mapConfigs.get('forwardedSubscriptionEventCacheMapConfig')
         expect: 'system created instance with correct config'
-            assert forwardedSubscriptionEventCacheConfig.backupCount == 3
-            assert forwardedSubscriptionEventCacheConfig.asyncBackupCount == 3
+            assert forwardedSubscriptionEventCacheConfig.clusterName == 'cps-and-ncmp-test-caches'
+            assert forwardedSubscriptionEventCacheMapConfig.backupCount == 3
+            assert forwardedSubscriptionEventCacheMapConfig.asyncBackupCount == 3
     }
 
     def 'Verify deployment network configs for Distributed Caches'() {
diff --git a/cps-ncmp-service/src/test/resources/application.yml b/cps-ncmp-service/src/test/resources/application.yml
index 679248b..66194ad 100644
--- a/cps-ncmp-service/src/test/resources/application.yml
+++ b/cps-ncmp-service/src/test/resources/application.yml
@@ -39,6 +39,7 @@
 
 # Custom Hazelcast Config.
 hazelcast:
+  cluster-name: "cps-and-ncmp-test-caches"
   mode:
     kubernetes:
       enabled: false
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
index 5ee6b38..efe19c6 100644
--- a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java
+++ b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java
@@ -40,7 +40,6 @@
      */
     @Bean
     public IMap<String, AnchorDataCacheEntry> anchorDataCache() {
-        return createHazelcastInstance("hazelCastInstanceCpsCore", anchorDataCacheMapConfig, "cps-service-caches")
-            .getMap("anchorDataCache");
+        return createHazelcastInstance("hazelCastInstanceCpsCore", anchorDataCacheMapConfig).getMap("anchorDataCache");
     }
 }
diff --git a/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java b/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java
index 4aebcea..405e6e2 100644
--- a/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java
+++ b/cps-service/src/main/java/org/onap/cps/cache/HazelcastCacheConfig.java
@@ -35,6 +35,9 @@
 @Slf4j
 public class HazelcastCacheConfig {
 
+    @Value("${hazelcast.cluster-name}")
+    protected String clusterName;
+
     @Value("${hazelcast.mode.kubernetes.enabled}")
     protected boolean cacheKubernetesEnabled;
 
@@ -42,12 +45,11 @@
     protected String cacheKubernetesServiceName;
 
     protected HazelcastInstance createHazelcastInstance(final String hazelcastInstanceName,
-                                                        final NamedConfig namedConfig, final String clusterName) {
-        return Hazelcast.newHazelcastInstance(initializeConfig(hazelcastInstanceName, namedConfig, clusterName));
+                                                        final NamedConfig namedConfig) {
+        return Hazelcast.newHazelcastInstance(initializeConfig(hazelcastInstanceName, namedConfig));
     }
 
-    private Config initializeConfig(final String instanceName, final NamedConfig namedConfig,
-                                    final String clusterName) {
+    private Config initializeConfig(final String instanceName, final NamedConfig namedConfig) {
         final Config config = new Config(instanceName);
         if (namedConfig instanceof MapConfig) {
             config.addMapConfig((MapConfig) namedConfig);
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
index 76b5345..e219945 100644
--- a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy
@@ -46,10 +46,12 @@
 
     def 'Verify configs for Distributed Caches'(){
         given: 'the Anchor Data Cache config'
-            def anchorDataCacheConfig =  Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config.mapConfigs.get('anchorDataCacheMapConfig')
+            def anchorDataCacheConfig =  Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config
+            def anchorDataCacheMapConfig =  anchorDataCacheConfig.mapConfigs.get('anchorDataCacheMapConfig')
         expect: 'system created instance with correct config'
-            assert anchorDataCacheConfig.backupCount == 3
-            assert anchorDataCacheConfig.asyncBackupCount == 3
+            assert anchorDataCacheConfig.clusterName == 'cps-and-ncmp-test-caches'
+            assert anchorDataCacheMapConfig.backupCount == 3
+            assert anchorDataCacheMapConfig.asyncBackupCount == 3
     }
 
     def 'Verify deployment network configs for Distributed Caches'() {
diff --git a/cps-service/src/test/resources/application.yml b/cps-service/src/test/resources/application.yml
index 21f3745..dc10066 100644
--- a/cps-service/src/test/resources/application.yml
+++ b/cps-service/src/test/resources/application.yml
@@ -51,6 +51,7 @@
 
 # Custom Hazelcast Config.
 hazelcast:
+  cluster-name: "cps-and-ncmp-test-caches"
   mode:
     kubernetes:
       enabled: false