aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordglFromAtt <dgl@research.att.com>2019-04-10 16:25:57 -0400
committerdglFromAtt <dgl@research.att.com>2019-04-10 16:26:03 -0400
commit479c7a5645b6f3f9bf478f925fa2009597871a7b (patch)
treeaa4bf8ec1aac465dbf76b965908628fc553c6829
parent4444a934c6ad97d0222abc351af4c392d42f654e (diff)
Added MirrorMaker unit tests
Change-Id: I580d350c663f06754a38ae58941de6e812f8cb03 Signed-off-by: dglFromAtt <dgl@research.att.com> Issue-ID: DMAAP-1095
-rw-r--r--src/main/java/org/onap/dmaap/dbcapi/service/MirrorMakerService.java52
-rw-r--r--src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java8
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTest.java184
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTestMockito.java97
4 files changed, 332 insertions, 9 deletions
diff --git a/src/main/java/org/onap/dmaap/dbcapi/service/MirrorMakerService.java b/src/main/java/org/onap/dmaap/dbcapi/service/MirrorMakerService.java
index 5d695f4..7c4b2ce 100644
--- a/src/main/java/org/onap/dmaap/dbcapi/service/MirrorMakerService.java
+++ b/src/main/java/org/onap/dmaap/dbcapi/service/MirrorMakerService.java
@@ -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;
+ }
}
diff --git a/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java b/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
index a7991e8..68dfd51 100644
--- a/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
+++ b/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
@@ -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
index 0000000..787d232
--- /dev/null
+++ b/src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTest.java
@@ -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
index 0000000..5beadc6
--- /dev/null
+++ b/src/test/java/org/onap/dmaap/dbcapi/service/MirrorMakerServiceTestMockito.java
@@ -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
+
+
+}