Added MirrorMaker unit tests 45/84945/1
authordglFromAtt <dgl@research.att.com>
Wed, 10 Apr 2019 20:25:57 +0000 (16:25 -0400)
committerdglFromAtt <dgl@research.att.com>
Wed, 10 Apr 2019 20:26:03 +0000 (16:26 -0400)
Change-Id: I580d350c663f06754a38ae58941de6e812f8cb03
Signed-off-by: dglFromAtt <dgl@research.att.com>
Issue-ID: DMAAP-1095

src/main/java/org/onap/dmaap/dbcapi/service/MirrorMakerService.java
src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTest.java [new file with mode: 0644]
src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTestMockito.java [new file with mode: 0644]

index 5d695f4..7c4b2ce 100644 (file)
@@ -51,6 +51,14 @@ public class MirrorMakerService extends BaseLoggingClass {
        private static MrTopicConnection prov;
        private static AafDecrypt decryptor;
        
+       static final String PROV_USER_PROPERTY = "MM.ProvUserMechId";
+       static final String PROV_PWD_PROPERTY = "MM.ProvUserPwd";
+       static final String PROV_PWD_DEFAULT = "pwdNotSet";
+       static final String SOURCE_REPLICATION_PORT_PROPERTY = "MR.SourceReplicationPort";
+       static final String SOURCE_REPLICATION_PORT_DEFAULT = "9092";
+       static final String TARGET_REPLICATION_PORT_PROPERTY = "MR.TargetReplicationPort";
+       static final String TARGET_REPLICATION_PORT_DEFAULT = "2181";
+       
        private static String provUser;
        private static String provUserPwd;
        private static String defaultProducerPort;
@@ -63,10 +71,10 @@ public class MirrorMakerService extends BaseLoggingClass {
                super();
                decryptor = new AafDecrypt();
                DmaapConfig p = (DmaapConfig)DmaapConfig.getConfig();
-               provUser = p.getProperty("MM.ProvUserMechId");
-               provUserPwd = decryptor.decrypt(p.getProperty( "MM.ProvUserPwd", "notSet" ));
-               defaultProducerPort = p.getProperty( "MR.SourceReplicationPort", "9092");
-               defaultConsumerPort = p.getProperty( "MR.TargetReplicationPort", "2181");       
+               provUser = p.getProperty(PROV_USER_PROPERTY);
+               provUserPwd = decryptor.decrypt(p.getProperty( PROV_PWD_PROPERTY, PROV_PWD_DEFAULT ));
+               defaultProducerPort = p.getProperty( SOURCE_REPLICATION_PORT_PROPERTY, SOURCE_REPLICATION_PORT_DEFAULT );
+               defaultConsumerPort = p.getProperty( TARGET_REPLICATION_PORT_PROPERTY, TARGET_REPLICATION_PORT_DEFAULT );       
                centralFqdn = p.getProperty("MR.CentralCname", "notSet");
                maxTopicsPerMM = Integer.valueOf( p.getProperty( "MaxTopicsPerMM", "5"));
                mmPerMR = "true".equalsIgnoreCase(p.getProperty("MirrorMakerPerMR", "true"));
@@ -166,7 +174,7 @@ public class MirrorMakerService extends BaseLoggingClass {
                return ret;
        }
        
-       public MirrorMaker getNextMM( String source, String target, String fqtn ) {
+       public MirrorMaker findNextMM( String source, String target, String fqtn ) {
                int i = 0;
                MirrorMaker mm = null;
                while( mm == null ) {
@@ -201,7 +209,7 @@ public class MirrorMakerService extends BaseLoggingClass {
                        int last = whitelist.size() - 1;
                        String topic = whitelist.get(last);
                        whitelist.remove(last);
-                       MirrorMaker mm = this.getNextMM( source, target, "aValueThatShouldNotMatchAnything" );
+                       MirrorMaker mm = this.findNextMM( source, target, "aValueThatShouldNotMatchAnything" );
                        mm.addTopic(topic);     
                        this.updateMirrorMaker(mm);
                }
@@ -211,5 +219,37 @@ public class MirrorMakerService extends BaseLoggingClass {
                return orig;
                
        }
+       
+       public static String getProvUser() {
+               return provUser;
+       }
+
+       public static void setProvUser(String provUser) {
+               MirrorMakerService.provUser = provUser;
+       }
+
+       public static String getProvUserPwd() {
+               return provUserPwd;
+       }
+
+       public static void setProvUserPwd(String provUserPwd) {
+               MirrorMakerService.provUserPwd = provUserPwd;
+       }
+
+       public static String getDefaultProducerPort() {
+               return defaultProducerPort;
+       }
+
+       public static void setDefaultProducerPort(String defaultProducerPort) {
+               MirrorMakerService.defaultProducerPort = defaultProducerPort;
+       }
+
+       public static String getDefaultConsumerPort() {
+               return defaultConsumerPort;
+       }
+
+       public static void setDefaultConsumerPort(String defaultConsumerPort) {
+               MirrorMakerService.defaultConsumerPort = defaultConsumerPort;
+       }
 
 }
index a7991e8..68dfd51 100644 (file)
@@ -384,7 +384,7 @@ public class TopicService extends BaseLoggingClass {
        
        public Topic checkForBridge( Topic topic, ApiError err ) {
                logger.info( "checkForBridge: entry");
-               logger.info( "fqtn=" + topic.getFqtn() + "replicatonType=" + topic.getReplicationCase());
+               logger.info( "fqtn=" + topic.getFqtn() + " replicatonType=" + topic.getReplicationCase());
                if ( topic.getReplicationCase() == ReplicationType.REPLICATION_NONE ) {
                        topic.setStatus( DmaapObject_Status.VALID);
                        return topic;   
@@ -439,7 +439,8 @@ public class TopicService extends BaseLoggingClass {
                        logger.info( "loc=" + loc );
                        DcaeLocation location = locations.getDcaeLocation(loc);
                        MR_Cluster cluster = clusters.getMr_ClusterByLoc(loc);
-                       logger.info( "cluster=" + cluster );
+                       logger.info( "cluster=" + cluster + " at "+ cluster.getDcaeLocationName() );
+                       logger.info( "location.isCentral()="+location.isCentral() + " getCentralLoc()=" + graph.getCentralLoc() );
 
                        
                                
@@ -455,6 +456,7 @@ public class TopicService extends BaseLoggingClass {
                                case REPLICATION_EDGE_TO_CENTRAL_TO_GLOBAL:  // NOTE: this is for E2C portion only
                                        source = cluster.getFqdn();
                                        target = (mmPerMR)? groupCentralCluster.getFqdn() : centralCname;
+                                       logger.info( "REPLICATION_EDGE_TO_CENTRAL: source=" + source + " target=" +target );
                                        break;
                                case REPLICATION_CENTRAL_TO_EDGE:
                                case REPLICATION_GLOBAL_TO_CENTRAL_TO_EDGE:  // NOTE: this is for C2E portion only
@@ -543,7 +545,7 @@ public class TopicService extends BaseLoggingClass {
                        if ( source != null && target != null ) {
                                try { 
                                        logger.info( "Create a MM from " + source + " to " + target );
-                                       MirrorMaker mm = bridge.getNextMM( source, target, topic.getFqtn());
+                                       MirrorMaker mm = bridge.findNextMM( source, target, topic.getFqtn());
                                        mm.addTopic(topic.getFqtn());
                                        bridge.updateMirrorMaker(mm);
                                } catch ( Exception ex ) {
diff --git a/src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTest.java b/src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTest.java
new file mode 100644 (file)
index 0000000..787d232
--- /dev/null
@@ -0,0 +1,184 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.onap.dmaap
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dmaap.dbcapi.service;
+
+import  org.onap.dmaap.dbcapi.model.*;
+import org.onap.dmaap.dbcapi.testframework.DmaapObjectFactory;
+import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import java.util.List;
+import java.util.ArrayList;
+
+public class MirrorMakerServiceTest {
+
+       private static final String  fmt = "%24s: %s%n";
+       private static DmaapObjectFactory factory = new DmaapObjectFactory();
+       ReflectionHarness rh = new ReflectionHarness();
+
+       private MirrorMakerService mms;
+       private TopicService ts;
+       private MR_ClusterService mcs;
+       private MR_ClientService cls;
+       private DcaeLocationService dls;
+
+       DmaapService ds;
+       String locname;
+
+       @Before
+       public void setUp() throws Exception {
+               mms = new MirrorMakerService();
+               ts = new TopicService();
+               assert( ts != null );
+               mcs = new MR_ClusterService();
+               assert( mcs != null );
+               Dmaap nd = factory.genDmaap();
+               ds = new DmaapService();
+               ds.addDmaap( nd );
+               ts = new TopicService();
+               mcs = new MR_ClusterService();
+               cls = new MR_ClientService();
+
+               dls = new DcaeLocationService();
+               DcaeLocation loc = factory.genDcaeLocation( "central" );
+               locname = loc.getDcaeLocationName();
+               dls.addDcaeLocation( loc );
+               loc = factory.genDcaeLocation( "edge");
+               dls.addDcaeLocation( loc );
+
+               ApiError err = new ApiError();
+               
+               MR_Cluster node = factory.genMR_Cluster( "central" );
+               mcs.addMr_Cluster( node, err);
+               node = factory.genMR_Cluster("edge" );
+               mcs.addMr_Cluster(node,  err);
+       }
+
+       @After
+       public void tearDown() throws Exception {
+       }
+
+
+//     @Test
+//     public void test_getters() {
+//
+//
+//             rh.reflect( "org.onap.dmaap.dbcapi.service.MirrorMakerService", "get", null );  
+//     
+//     }
+
+       @Test
+       public void test_setters() {
+               String v = "Validate";
+               rh.reflect( "org.onap.dmaap.dbcapi.service.MirrorMakerService", "set", v );
+
+       }
+
+       
+       
+       @Test
+       public void CreateMirrorMakerWithSingleTopic() {
+               ApiError err = new ApiError();
+
+               String t = "org.onap.dmaap.bridgingTopic";
+               Topic topic = factory.genSimpleTopic(t);
+               topic.setReplicationCase( ReplicationType.REPLICATION_EDGE_TO_CENTRAL );
+
+               String c = "publisher";
+               String[] a = { "sub", "view" };
+               MR_Client sub = factory.genMR_Client("central",  topic.getFqtn(), c, a );
+               String[] b = { "pub", "view" };
+               MR_Client pub = factory.genMR_Client( "edge", topic.getFqtn(), c, b );
+               ArrayList<MR_Client> clients = new ArrayList<MR_Client>();
+
+               clients.add( sub );
+               clients.add( pub );
+
+               topic.setClients( clients );
+
+               Topic nTopic = ts.updateTopic( topic, err );
+
+               assertTrue( err.getCode() == 200 );
+               
+               List<String> mma = mms.getAllMirrorMakers();
+       }
+       
+       @Test
+       public void DeleteMirrorMakerWithSingleTopic() {
+
+               
+               List<String> mma = mms.getAllMirrorMakers();
+               
+               int nMM = mma.size();
+               assertTrue( nMM >= 1);
+               
+               String name = mma.get(0);
+               
+               MirrorMaker mm = mms.getMirrorMaker(name);
+               
+               mms.delMirrorMaker(mm);
+               
+               mma = mms.getAllMirrorMakers();
+               
+               assertTrue( mma.size() == (nMM-1) );
+       }
+       
+       @Test
+       public void SplitMirrorMakerWithSingleTopic() {
+
+               ApiError err = new ApiError();
+
+               String t = "org.onap.dmaap.bridgingTopic";
+               Topic topic = factory.genSimpleTopic(t);
+               topic.setReplicationCase( ReplicationType.REPLICATION_EDGE_TO_CENTRAL );
+
+               String c = "publisher";
+               String[] a = { "sub", "view" };
+               MR_Client sub = factory.genMR_Client("central",  topic.getFqtn(), c, a );
+               String[] b = { "pub", "view" };
+               MR_Client pub = factory.genMR_Client( "edge", topic.getFqtn(), c, b );
+               ArrayList<MR_Client> clients = new ArrayList<MR_Client>();
+
+               clients.add( sub );
+               clients.add( pub );
+
+               topic.setClients( clients );
+
+               Topic nTopic = ts.updateTopic( topic, err );
+
+               assertTrue( err.getCode() == 200 );
+               List<String> mma = mms.getAllMirrorMakers();
+               
+               int nMM = mma.size();
+               assertTrue( nMM >= 1);
+               
+               String name = mma.get(0);
+               
+               MirrorMaker mm = mms.getMirrorMaker(name);
+               
+               MirrorMaker mm2 = mms.splitMM(mm);      
+
+       }
+
+}
diff --git a/src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTestMockito.java b/src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTestMockito.java
new file mode 100644 (file)
index 0000000..5beadc6
--- /dev/null
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.onap.dmaap
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dmaap.dbcapi.service;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.verifyZeroInteractions;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Spy;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.aaf.cadi.filter.CadiFilter;
+import org.onap.dmaap.dbcapi.model.MirrorMaker;
+import org.onap.dmaap.dbcapi.util.DmaapConfig;
+
+@RunWith(MockitoJUnitRunner.class)
+public class MirrorMakerServiceTestMockito {
+
+    @Spy
+    private MirrorMakerService service;
+
+    @Mock
+    private CadiFilter cadiFilterMock;
+    @Mock
+    private HttpServletRequest servletRequest;
+    @Mock
+    private HttpServletResponse servletResponse;
+   
+    @Mock
+    private DmaapConfig dmaapConfig;
+    
+    @Mock
+    private MirrorMaker mm = new MirrorMaker();
+
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+    @Before
+    public void setUp() throws Exception {
+   
+    }
+
+    @Test
+    public void init_normalConstructor() throws Exception {
+        //given
+        
+
+        //when
+        
+
+        //then
+        assertEquals( MirrorMakerService.getProvUserPwd(), MirrorMakerService.PROV_PWD_DEFAULT);
+        assertEquals( MirrorMakerService.getDefaultConsumerPort(), MirrorMakerService.TARGET_REPLICATION_PORT_DEFAULT);
+        assertEquals( MirrorMakerService.getDefaultProducerPort(), MirrorMakerService.SOURCE_REPLICATION_PORT_DEFAULT);
+    }
+
+  // Todo: learn how to make more tests in Mockito
+
+
+}