From: sunil unnava Date: Thu, 27 Dec 2018 21:13:13 +0000 (-0500) Subject: add mirror maker agent code X-Git-Tag: 1.1.1~11 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=dmaap%2Fmessagerouter%2Fmirroragent.git;a=commitdiff_plain;h=b07822276c0bba8896d05555094c6e53f69ca2fb add mirror maker agent code Issue-ID: DMAAP-910 Change-Id: Ibff92499729d5b34fdbe500783678ef65d6894d5 Signed-off-by: sunil unnava --- diff --git a/pom.xml b/pom.xml index 30decd7..878ccd2 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,11 @@ powermock-api-mockito 1.6.4 + + org.json + json + 20131018 + com.google.code.gson gson @@ -178,7 +183,7 @@ true - com.att.nsa.dmaapMMAgent.MirrorMakerAgent + org.onap.dmaap.mr.MirrorMakerAgent diff --git a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/MirrorMakerAgent.java b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/MirrorMakerAgent.java index becfbc5..86a653d 100644 --- a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/MirrorMakerAgent.java +++ b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/MirrorMakerAgent.java @@ -34,9 +34,9 @@ import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.Properties; -//import org.json.JSONObject; -//import org.apache.log4j.Logger; -//import org.jasypt.util.text.BasicTextEncryptor; +import org.json.JSONObject; +import org.apache.log4j.Logger; +import org.jasypt.util.text.BasicTextEncryptor; import org.onap.dmaap.mr.dmaapMMAgent.dao.CreateMirrorMaker; import org.onap.dmaap.mr.dmaapMMAgent.dao.DeleteMirrorMaker; @@ -48,10 +48,11 @@ import org.onap.dmaap.mr.dmaapMMAgent.utils.MirrorMakerProcessHandler; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.internal.LinkedTreeMap; + import com.sun.org.apache.xerces.internal.impl.dtd.models.CMAny; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; -public class MirrorMakerAgent {/* +public class MirrorMakerAgent { static final Logger logger = Logger.getLogger(MirrorMakerAgent.class); Properties mirrorMakerProperties = new Properties(); ListMirrorMaker mirrorMakers = null; @@ -62,6 +63,8 @@ public class MirrorMakerAgent {/* String mechid = ""; String password = ""; String grepLog = ""; + public boolean exitLoop = false; + TopicUtil topicUtil = new TopicUtil(); private static String secret = "utdfpWlgyDQ2ZB8SLVRtmN834I1JcT9J"; public static void main(String[] args) { @@ -84,7 +87,7 @@ public class MirrorMakerAgent {/* try { agent.checkAgentProcess(); } catch (Exception e) { - + e.printStackTrace(); } agent.readAgentTopic(); @@ -129,14 +132,14 @@ public class MirrorMakerAgent {/* } } } - String response = publishTopic("{\"test\":\"test\"}"); + String response = topicUtil.publishTopic(topicURL, topicname, mechid, password, "{\"test\":\"test\"}"); if (response.startsWith("ERROR:")) { logger.error("Problem publishing to topic, please verify the config " + this.topicname + " MR URL is:" + this.topicURL + " Error is: " + response); return false; } logger.info("Published to Topic :" + this.topicname + " Successfully"); - response = subscribeTopic("1"); + response = topicUtil.subscribeTopic(topicURL, topicname, "1", response, response); if (response != null && response.startsWith("ERROR:")) { logger.error("Problem subscribing to topic, please verify the config " + this.topicname + " MR URL is:" + this.topicURL + " Error is: " + response); @@ -160,14 +163,14 @@ public class MirrorMakerAgent {/* Properties prop = new Properties(); prop.load(input); if (propName.equals("consumer")) { - prop.setProperty("group.id", mm.name); - - prop.setProperty("bootstrap.servers", mm.consumer); - prop.setProperty("client.id", mm.name + "MM_consumer"); - } else { + prop.setProperty("group.id", mm.name); + + prop.setProperty("bootstrap.servers", mm.consumer); + prop.setProperty("client.id", mm.name + "MM_consumer"); + } else { prop.setProperty("bootstrap.servers", mm.producer); - prop.setProperty("client.id", mm.name + "MM_producer"); - + prop.setProperty("client.id", mm.name + "MM_producer"); + } out = new FileOutputStream(mmagenthome + "/etc/" + mm.name + propName + ".properties"); prop.store(out, ""); @@ -199,15 +202,17 @@ public class MirrorMakerAgent {/* int mirrorMakersCount = mirrorMakers.getListMirrorMaker().size(); for (int i = 0; i < mirrorMakersCount; i++) { MirrorMaker mm = mirrorMakers.getListMirrorMaker().get(i); - if (MirrorMakerProcessHandler.checkMirrorMakerProcess(mm.name,mm.enablelogCheck,this.grepLog) == false) { + if (MirrorMakerProcessHandler.checkMirrorMakerProcess(mm.name, mm.enablelogCheck, + this.grepLog) == false) { checkPropertiesFile(mm, "consumer", false); checkPropertiesFile(mm, "producer", false); if (mm.whitelist != null && !mm.whitelist.equals("")) { - logger.info("MirrorMaker " + mm.name + " is not running, restarting. Check Logs for more Details"); + logger.info( + "MirrorMaker " + mm.name + " is not running, restarting. Check Logs for more Details"); MirrorMakerProcessHandler.startMirrorMaker(this.mmagenthome, this.kafkahome, mm.name, mmagenthome + "/etc/" + mm.name + "consumer.properties", - mmagenthome + "/etc/" + mm.name + "producer.properties",mm.numStreams, mm.whitelist); + mmagenthome + "/etc/" + mm.name + "producer.properties", mm.numStreams, mm.whitelist); mm.setStatus("RESTARTING"); } else { @@ -230,142 +235,28 @@ public class MirrorMakerAgent {/* // System.out.println(g.toJson(mirrorMakers)); } - private String subscribeTopic(String timeout) { - String response = ""; - try { - String requestURL = this.topicURL + "/events/" + this.topicname + "/mirrormakeragent/1?timeout=" + timeout - + "&limit=1"; - String authString = this.mechid + ":" + this.password; - String authStringEnc = Base64.encode(authString.getBytes()); - URL url = new URL(requestURL); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - connection.setDoOutput(true); - connection.setRequestProperty("Authorization", "Basic " + authStringEnc); - connection.setRequestProperty("Content-Type", "application/json"); - InputStream content = (InputStream) connection.getInputStream(); - BufferedReader in = new BufferedReader(new InputStreamReader(content)); - String line; - - while ((line = in.readLine()) != null) { - response = response + line; - } - Gson g = new Gson(); - //Get message as JSON Array - JsonArray topicMessage = g.fromJson(response, JsonArray.class); - if (topicMessage.size() != 0) { - return topicMessage.get(0).toString(); - } - - // get message as JSON String Array - String[] topicMessage = g.fromJson(response, String[].class); - if (topicMessage.length != 0) { - return topicMessage[0]; - } - } catch (Exception e) { - return "ERROR:" + e.getMessage() + " Server Response is:" + response; - } - return null; - } - - private String publishTopic(String message) { - try { - String requestURL = this.topicURL + "/events/" + this.topicname; - String authString = this.mechid + ":" + this.password; - String authStringEnc = Base64.encode(authString.getBytes()); - URL url = new URL(requestURL); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("POST"); - connection.setDoOutput(true); - connection.setRequestProperty("Authorization", "Basic " + authStringEnc); - connection.setRequestProperty("Content-Type", "application/json"); - connection.setRequestProperty("Content-Length", Integer.toString(message.length())); - DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); - wr.write(message.getBytes()); - - InputStream content = (InputStream) connection.getInputStream(); - BufferedReader in = new BufferedReader(new InputStreamReader(content)); - String line; - String response = ""; - while ((line = in.readLine()) != null) { - response = response + line; - } - return response; - - } catch (Exception e) { - return "ERROR:" + e.getLocalizedMessage(); - } - } - - private void readAgentTopic() { + public void readAgentTopic() { try { int connectionattempt = 0; while (true) { logger.info("--------------------------------"); logger.info("Waiting for Messages for 60 secs"); - String topicMessage = subscribeTopic("60000"); + String topicMessage = topicUtil.subscribeTopic(topicURL, topicname, "60000", mechid, password); Gson g = new Gson(); LinkedTreeMap object = null; if (topicMessage != null) { try { - //Check and parse if String object returned by consumer API - //else use the jsonObject - if( topicMessage.startsWith("\"")) - { - topicMessage = g.fromJson(topicMessage.toString(), String.class); - } + // Check and parse if String object returned by consumer + // API + // else use the jsonObject + if (topicMessage.startsWith("\"")) { + topicMessage = g.fromJson(topicMessage.toString(), String.class); + } object = g.fromJson(topicMessage, LinkedTreeMap.class); // Cast the 1st item (since limit=1 and see the type of // object - if (object.get("createMirrorMaker") != null) { - logger.info("Received createMirrorMaker request from topic"); - CreateMirrorMaker m = g.fromJson(topicMessage, CreateMirrorMaker.class); - createMirrorMaker(m.getCreateMirrorMaker()); - checkAgentProcess(); - mirrorMakers.setMessageID(m.getMessageID()); - publishTopic(g.toJson(mirrorMakers)); - mirrorMakers.setMessageID(""); - } else if (object.get("updateMirrorMaker") != null) { - logger.info("Received updateMirrorMaker request from topic"); - UpdateMirrorMaker m = g.fromJson(topicMessage, UpdateMirrorMaker.class); - JSONObject json = new JSONObject(topicMessage); - JSONObject json2 = (JSONObject) json.get("updateMirrorMaker"); - if(!json2.has("numStreams")){ - m.getUpdateMirrorMaker().setNumStreams(0); - } - updateMirrorMaker(m.getUpdateMirrorMaker()); - checkAgentProcess(); - mirrorMakers.setMessageID(m.getMessageID()); - publishTopic(g.toJson(mirrorMakers)); - mirrorMakers.setMessageID(""); - } else if (object.get("deleteMirrorMaker") != null) { - logger.info("Received deleteMirrorMaker request from topic"); - DeleteMirrorMaker m = g.fromJson(topicMessage, DeleteMirrorMaker.class); - deleteMirrorMaker(m.getDeleteMirrorMaker()); - checkAgentProcess(); - mirrorMakers.setMessageID(m.getMessageID()); - publishTopic(g.toJson(mirrorMakers)); - mirrorMakers.setMessageID(""); - } else if (object.get("listAllMirrorMaker") != null) { - logger.info("Received listALLMirrorMaker request from topic"); - checkAgentProcess(); - mirrorMakers.setMessageID((String) object.get("messageID")); - publishTopic(g.toJson(mirrorMakers)); - mirrorMakers.setMessageID(""); - } else if (object.get("updateWhiteList") != null) { - logger.info("Received updateWhiteList request from topic"); - UpdateWhiteList m = g.fromJson(topicMessage, UpdateWhiteList.class); - updateWhiteList(m.getUpdateWhiteList()); - checkAgentProcess(); - mirrorMakers.setMessageID(m.getMessageID()); - publishTopic(g.toJson(mirrorMakers)); - mirrorMakers.setMessageID(""); - } else if (object.get("listMirrorMaker") != null) { - logger.info("Received listMirrorMaker from topic, skipping messages"); - } else { - logger.info("Received unknown request from topic"); - } + readAgent(object, topicMessage); } catch (Exception ex) { connectionattempt++; if (connectionattempt > 5) { @@ -381,6 +272,9 @@ public class MirrorMakerAgent {/* connectionattempt = 0; checkAgentProcess(); } + if (exitLoop) { + break; + } } } catch (Exception e) { @@ -389,7 +283,7 @@ public class MirrorMakerAgent {/* } - private void createMirrorMaker(MirrorMaker newMirrorMaker) { + public void createMirrorMaker(MirrorMaker newMirrorMaker) { boolean exists = false; if (mirrorMakers != null) { int mirrorMakersCount = mirrorMakers.getListMirrorMaker().size(); @@ -412,8 +306,8 @@ public class MirrorMakerAgent {/* list.add(newMirrorMaker); mirrorMakers.setListMirrorMaker(list); } - checkPropertiesFile(newMirrorMaker, "consumer", true); - checkPropertiesFile(newMirrorMaker, "producer", true); + checkPropertiesFile(newMirrorMaker, "consumer", true); + checkPropertiesFile(newMirrorMaker, "producer", true); Gson g = new Gson(); mirrorMakerProperties.setProperty("mirrormakers", g.toJson(this.mirrorMakers)); @@ -442,23 +336,20 @@ public class MirrorMakerAgent {/* MirrorMaker mm = mirrorMakers.getListMirrorMaker().get(i); if (mm.name.equals(newMirrorMaker.name)) { exists = true; - if(null!=newMirrorMaker.getConsumer()) - { + if (null != newMirrorMaker.getConsumer()) { mm.setConsumer(newMirrorMaker.getConsumer()); } - if(null!=newMirrorMaker.getProducer()) - { + if (null != newMirrorMaker.getProducer()) { mm.setProducer(newMirrorMaker.getProducer()); } - if(newMirrorMaker.getNumStreams()>=1) - { + if (newMirrorMaker.getNumStreams() >= 1) { mm.setNumStreams(newMirrorMaker.getNumStreams()); - } - + } + mm.setEnablelogCheck(newMirrorMaker.enablelogCheck); - + mirrorMakers.getListMirrorMaker().set(i, mm); - newMirrorMaker=mm; + newMirrorMaker = mm; logger.info("Updating MirrorMaker:" + newMirrorMaker.name); } } @@ -608,12 +499,12 @@ public class MirrorMakerAgent {/* this.topicURL = mirrorMakerProperties.getProperty("topicURL"); this.topicname = mirrorMakerProperties.getProperty("topicname"); this.mechid = mirrorMakerProperties.getProperty("mechid"); - this.grepLog= mirrorMakerProperties.getProperty("grepLog"); + this.grepLog = mirrorMakerProperties.getProperty("grepLog"); BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); textEncryptor.setPassword(secret); this.password = textEncryptor.decrypt(mirrorMakerProperties.getProperty("password")); - } catch (IOException ex) { + } catch (Exception ex) { // ex.printStackTrace(); } finally { if (input != null) { @@ -626,4 +517,59 @@ public class MirrorMakerAgent {/* } } -*/} + + public void readAgent(LinkedTreeMap object, String topicMessage) throws Exception{ + + Gson g = new Gson(); + + if (object.get("createMirrorMaker") != null) { + logger.info("Received createMirrorMaker request from topic"); + CreateMirrorMaker m = g.fromJson(topicMessage, CreateMirrorMaker.class); + createMirrorMaker(m.getCreateMirrorMaker()); + checkAgentProcess(); + mirrorMakers.setMessageID(m.getMessageID()); + topicUtil.publishTopic(topicURL, topicname, mechid, password, g.toJson(mirrorMakers)); + mirrorMakers.setMessageID(""); + } else if (object.get("updateMirrorMaker") != null) { + logger.info("Received updateMirrorMaker request from topic"); + UpdateMirrorMaker m = g.fromJson(topicMessage, UpdateMirrorMaker.class); + JSONObject json = new JSONObject(topicMessage); + JSONObject json2 = (JSONObject) json.get("updateMirrorMaker"); + if (!json2.has("numStreams")) { + m.getUpdateMirrorMaker().setNumStreams(0); + } + updateMirrorMaker(m.getUpdateMirrorMaker()); + checkAgentProcess(); + mirrorMakers.setMessageID(m.getMessageID()); + topicUtil.publishTopic(topicURL, topicname, mechid, password, g.toJson(mirrorMakers)); + mirrorMakers.setMessageID(""); + } else if (object.get("deleteMirrorMaker") != null) { + logger.info("Received deleteMirrorMaker request from topic"); + DeleteMirrorMaker m = g.fromJson(topicMessage, DeleteMirrorMaker.class); + deleteMirrorMaker(m.getDeleteMirrorMaker()); + checkAgentProcess(); + mirrorMakers.setMessageID(m.getMessageID()); + topicUtil.publishTopic(topicURL, topicname, mechid, password, g.toJson(mirrorMakers)); + mirrorMakers.setMessageID(""); + } else if (object.get("listAllMirrorMaker") != null) { + logger.info("Received listALLMirrorMaker request from topic"); + checkAgentProcess(); + mirrorMakers.setMessageID((String) object.get("messageID")); + topicUtil.publishTopic(topicURL, topicname, mechid, password, g.toJson(mirrorMakers)); + mirrorMakers.setMessageID(""); + } else if (object.get("updateWhiteList") != null) { + logger.info("Received updateWhiteList request from topic"); + UpdateWhiteList m = g.fromJson(topicMessage, UpdateWhiteList.class); + updateWhiteList(m.getUpdateWhiteList()); + checkAgentProcess(); + mirrorMakers.setMessageID(m.getMessageID()); + topicUtil.publishTopic(topicURL, topicname, mechid, password, g.toJson(mirrorMakers)); + mirrorMakers.setMessageID(""); + } else if (object.get("listMirrorMaker") != null) { + logger.info("Received listMirrorMaker from topic, skipping messages"); + } else { + logger.info("Received unknown request from topic"); + } + + } +} diff --git a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/TopicUtil.java b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/TopicUtil.java new file mode 100644 index 0000000..e2dc0ef --- /dev/null +++ b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/TopicUtil.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * + *******************************************************************************/ + +package org.onap.dmaap.mr.dmaapMMAgent; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +import org.apache.log4j.Logger; + +import com.google.gson.Gson; +import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; + +public class TopicUtil { + + static final Logger logger = Logger.getLogger(TopicUtil.class); + + public String publishTopic(String topicURL, String topicname, String mechid, String password, String message) { + try { + String requestURL = topicURL + "/events/" + topicname; + String authString = mechid + ":" + password; + String authStringEnc = Base64.encode(authString.getBytes()); + URL url = new URL(requestURL); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + connection.setDoOutput(true); + connection.setRequestProperty("Authorization", "Basic " + authStringEnc); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("Content-Length", Integer.toString(message.length())); + DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); + wr.write(message.getBytes()); + + InputStream content = (InputStream) connection.getInputStream(); + BufferedReader in = new BufferedReader(new InputStreamReader(content)); + String line; + String response = ""; + while ((line = in.readLine()) != null) { + response = response + line; + } + return response; + + } catch (Exception e) { + logger.error(" Exception Occered " + e); + return "ERROR:" + e.getLocalizedMessage(); + } + } + + public String subscribeTopic(String topicURL, String topicname, String timeout, String mechid, String password) { + String response = ""; + try { + String requestURL = topicURL + "/events/" + topicname + "/mirrormakeragent/1?timeout=" + timeout + + "&limit=1"; + String authString = mechid + ":" + password; + String authStringEnc = Base64.encode(authString.getBytes()); + URL url = new URL(requestURL); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setDoOutput(true); + connection.setRequestProperty("Authorization", "Basic " + authStringEnc); + connection.setRequestProperty("Content-Type", "application/json"); + InputStream content = (InputStream) connection.getInputStream(); + BufferedReader in = new BufferedReader(new InputStreamReader(content)); + String line; + + while ((line = in.readLine()) != null) { + response = response + line; + } + Gson g = new Gson(); + // get message as JSON String Array + String[] topicMessage = g.fromJson(response, String[].class); + if (topicMessage.length != 0) { + return topicMessage[0]; + } + } catch (Exception e) { + logger.error(" Exception Occered " + e); + return "ERROR:" + e.getMessage() + " Server Response is:" + response; + } + return null; + } + +} diff --git a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/dao/CreateMirrorMaker.java b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/dao/CreateMirrorMaker.java index 4d1426a..a1809f8 100644 --- a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/dao/CreateMirrorMaker.java +++ b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/dao/CreateMirrorMaker.java @@ -23,14 +23,14 @@ package org.onap.dmaap.mr.dmaapMMAgent.dao; public class CreateMirrorMaker { String messageID; - MirrorMaker MirrorMaker; + MirrorMaker createMirrorMaker; public MirrorMaker getCreateMirrorMaker() { - return MirrorMaker; + return createMirrorMaker; } public void setCreateMirrorMaker(MirrorMaker createMirrorMaker) { - this.MirrorMaker = createMirrorMaker; + this.createMirrorMaker = createMirrorMaker; } public String getMessageID() { diff --git a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java index 82086a3..21a3974 100644 --- a/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java +++ b/src/main/java/org/onap/dmaap/mr/dmaapMMAgent/utils/MirrorMakerProcessHandler.java @@ -27,7 +27,7 @@ import java.io.InputStreamReader; import org.apache.log4j.Logger; -public class MirrorMakerProcessHandler {/* +public class MirrorMakerProcessHandler { static final Logger logger = Logger.getLogger(MirrorMakerProcessHandler.class); static String mmagenthome = System.getProperty("MMAGENTHOME"); @@ -197,4 +197,4 @@ public class MirrorMakerProcessHandler {/* e.printStackTrace(); } } -*/} +} diff --git a/src/test/java/org/onap/dmaap/mr/dmaapMMAgent/TestMirrorMakerAgent.java b/src/test/java/org/onap/dmaap/mr/dmaapMMAgent/TestMirrorMakerAgent.java index def9f39..f7b14d4 100644 --- a/src/test/java/org/onap/dmaap/mr/dmaapMMAgent/TestMirrorMakerAgent.java +++ b/src/test/java/org/onap/dmaap/mr/dmaapMMAgent/TestMirrorMakerAgent.java @@ -23,43 +23,112 @@ package org.onap.dmaap.mr.dmaapMMAgent; import static org.junit.Assert.*; +import static org.mockito.Mockito.spy; -import java.io.DataOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.net.HttpURLConnection; import java.util.ArrayList; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.Mock; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.modules.junit4.PowerMockRunner; -import org.onap.dmaap.mr.dmaapMMAgent.dao.ListMirrorMaker; -import org.onap.dmaap.mr.dmaapMMAgent.dao.MirrorMaker; +import org.onap.dmaap.mr.dmaapMMAgent.dao.ListMirrorMaker; +import org.onap.dmaap.mr.dmaapMMAgent.dao.MirrorMaker; +import com.google.gson.Gson; +import com.google.gson.internal.LinkedTreeMap; + +@RunWith(PowerMockRunner.class) +public class TestMirrorMakerAgent { -//@RunWith(PowerMockRunner.class) -public class TestMirrorMakerAgent {/* MirrorMakerAgent mirrorMakerAgent = new MirrorMakerAgent(); ListMirrorMaker listMirrorMaker = new ListMirrorMaker(); MirrorMaker mirrorMaker = new MirrorMaker(); MirrorMaker mirrorMaker2 = new MirrorMaker(); ArrayList listsMirrorMaker = new ArrayList(); + Gson g = new Gson(); + @InjectMocks + private MirrorMakerAgent agent; + @Mock + private TopicUtil topicUtil; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } @Test public void testcheckStartup() { String currentDirectory = System.getProperty("user.dir"); String MMAGENTHOME = currentDirectory + "/src/test/resources/"; - String parameters[] = {"-encrypt", "test"}; + String parameters[] = { "-encrypt", "test" }; String args[] = null; - + System.setProperty("MMAGENTHOME", MMAGENTHOME); - mirrorMakerAgent.main(args); - + + } + + @Test + public void testReadAgentTopics() { + + agent.exitLoop = true; + agent.readAgentTopic(); + } + + @Test + public void testReadCreateMirrorMaker() throws Exception { + + String topicMessage = "{ messageID:\"test\", createMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}"; + LinkedTreeMap object = g.fromJson(topicMessage, LinkedTreeMap.class); + agent.exitLoop = true; + agent.readAgent(object, topicMessage); + + } + + @Test + public void testReadUpdateMirrorMaker() throws Exception { + + String topicMessage = "{ messageID:\"test\", updateMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\"}}"; + LinkedTreeMap object = g.fromJson(topicMessage, LinkedTreeMap.class); + testReadCreateMirrorMaker(); + agent.readAgent(object, topicMessage); + } - + + @Test + public void testReadDeleteMirrorMaker() throws Exception { + + String topicMessage = "{ messageID:\"test\", deleteMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}"; + LinkedTreeMap object = g.fromJson(topicMessage, LinkedTreeMap.class); + testReadCreateMirrorMaker(); + agent.readAgent(object, topicMessage); + + } + + @Test + public void testReadListMirrorMaker() throws Exception { + + String topicMessage = "{ messageID:\"test\", listAllMirrorMaker: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}"; + LinkedTreeMap object = g.fromJson(topicMessage, LinkedTreeMap.class); + testReadCreateMirrorMaker(); + agent.readAgent(object, topicMessage); + + } + + @Test + public void testReadWhitelistMirrorMaker() throws Exception { + + String topicMessage = "{ messageID:\"test\", updateWhiteList: { name:\"test\", consumer:\"test\", producer:\"test\", whitelist:\"test\",status:\"test\" }}"; + LinkedTreeMap object = g.fromJson(topicMessage, LinkedTreeMap.class); + testReadCreateMirrorMaker(); + agent.readAgent(object, topicMessage); + + } + @Test public void testCreateMirrorMaker() { mirrorMaker.setConsumer("consumer"); @@ -67,21 +136,34 @@ public class TestMirrorMakerAgent {/* mirrorMaker.setProducer("producer"); mirrorMaker.setStatus("200"); mirrorMaker.setWhitelist("whitelist"); - + mirrorMaker2.setConsumer("consumer"); mirrorMaker2.setName("MirrorMaker2"); mirrorMaker2.setProducer("producer"); mirrorMaker2.setStatus("200"); mirrorMaker2.setWhitelist("whitelist"); - + listsMirrorMaker.add(mirrorMaker2); listMirrorMaker.setListMirrorMaker(listsMirrorMaker); - + mirrorMakerAgent.mirrorMakers = listMirrorMaker; - + mirrorMakerAgent.createMirrorMaker(mirrorMaker); - + assertEquals(2, mirrorMakerAgent.mirrorMakers.getListMirrorMaker().size()); } -*/} + @Test + public void testPublish() { + TopicUtil util = new TopicUtil(); + util.publishTopic("topicURL", "topicname", "mechid", "password", "message"); + + } + + @Test + public void testSubscribe() { + TopicUtil util = new TopicUtil(); + util.subscribeTopic("topicURL", "topicname", "1", "mechid", "password"); + + } +}