/** * Copyright 2012 Comcast Corporation * * 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. */package com.comcast.cmb.test.tools; import java.util.HashMap; import java.util.Map; import java.util.Random; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.sns.AmazonSNSClient; import com.amazonaws.services.sns.model.CreateTopicRequest; import com.amazonaws.services.sns.model.DeleteTopicRequest; import com.amazonaws.services.sns.model.ListTopicsResult; import com.amazonaws.services.sns.model.Topic; import com.amazonaws.services.sqs.AmazonSQSClient; import com.amazonaws.services.sqs.model.CreateQueueRequest; import com.amazonaws.services.sqs.model.DeleteQueueRequest; import com.amazonaws.services.sqs.model.ListQueuesResult; import com.comcast.cmb.common.controller.CMBControllerServlet; import com.comcast.cmb.common.model.User; import com.comcast.cmb.common.persistence.IUserPersistence; import com.comcast.cmb.common.persistence.PersistenceFactory; import com.comcast.cmb.common.util.CMBProperties; import com.comcast.cmb.common.util.Util; public class CMBAWSBaseTest { protected static Logger logger = Logger.getLogger(CMBAWSBaseTest.class); public enum USR { USER1, USER2, USER3 } public static final String userName1 = "cmb_unit_test_1"; public static String accessKey1 = null; public static String accessSecret1 = null; //public static String accessKey1 = "JEBRNE0IMZFU96SRE3MF"; //null; //public static String accessSecret1 = "LJEdWxSNdmI0Pp7gynHgdZVJJ2IfCpATG4vr1jzA";//null; public static final String userName2 = "cmb_unit_test_2"; public static String accessKey2 = null; public static String accessSecret2 = null; public static final String userName3 = "cmb_unit_test_3"; public static String accessKey3 = null; public static String accessSecret3 = null; public static final String PREFIX = "T"; public static final String cnsServiceUrl = CMBProperties.getInstance().getCNSServiceUrl(); public static final String cqsServiceUrl = CMBProperties.getInstance().getCQSServiceUrl(); //public static final String cnsServiceUrl = "http://cmbstage.sv.comcast.com:10162/"; //public static final String cqsServiceUrl = "http://cmbstage.sv.comcast.com:10159/"; //public static final String cnsServiceUrl = "http://172.20.5.151:6000/"; //public static final String cqsServiceUrl = "http://172.20.5.151:6000/"; public static final String cqsServiceUrlAlt = null; public static final String cnsServiceUrlAlt = null; protected static User user1, user2, user3; protected static AmazonSNSClient cns1 = null; protected static AmazonSQSClient cqs1 = null; protected static AmazonSNSClient cns2 = null; protected static AmazonSQSClient cqs2 = null; protected static AmazonSNSClient cns3 = null; protected static AmazonSQSClient cqs3 = null; protected static AmazonSNSClient cnsAlt = null; protected static AmazonSQSClient cqsAlt = null; protected static Random rand = new Random(); private Map<String, String> queues = new HashMap<String, String>(); private Map<String, String> topics = new HashMap<String, String>(); @Before public void setup() throws Exception { Util.initLog4jTest(); CMBControllerServlet.valueAccumulator.initializeAllCounters(); PersistenceFactory.reset(); IUserPersistence userHandler = PersistenceFactory.getUserPersistence(); AWSCredentials credentials1 = null; AWSCredentials credentials2 = null; AWSCredentials credentials3 = null; if (accessKey1 != null && accessSecret1 != null) { credentials1 = new BasicAWSCredentials(accessKey1, accessSecret1); } else { user1 = userHandler.getUserByName(userName1); if (user1 == null) { user1 = userHandler.createUser(userName1, userName1); } credentials1 = new BasicAWSCredentials(user1.getAccessKey(), user1.getAccessSecret()); accessKey1 = user1.getAccessKey(); accessSecret1 = user1.getAccessSecret(); } if (accessKey2 != null && accessSecret2 != null) { credentials2 = new BasicAWSCredentials(accessKey2, accessSecret2); } else { user2 = userHandler.getUserByName(userName2); if (user2 == null) { user2 = userHandler.createUser(userName2, userName2); } credentials2 = new BasicAWSCredentials(user2.getAccessKey(), user2.getAccessSecret()); accessKey2 = user2.getAccessKey(); accessSecret2 = user2.getAccessSecret(); } if (accessKey3 != null && accessSecret3 != null) { credentials3 = new BasicAWSCredentials(accessKey3, accessSecret3); } else { user3 = userHandler.getUserByName(userName3); if (user3 == null) { user3 = userHandler.createUser(userName3, userName3); } credentials3 = new BasicAWSCredentials(user3.getAccessKey(), user3.getAccessSecret()); accessKey3 = user3.getAccessKey(); accessSecret3 = user3.getAccessSecret(); } if (cnsServiceUrl != null) { cns1 = new AmazonSNSClient(credentials1); cns1.setEndpoint(cnsServiceUrl); cns2 = new AmazonSNSClient(credentials2); cns2.setEndpoint(cnsServiceUrl); cns3 = new AmazonSNSClient(credentials3); cns3.setEndpoint(cnsServiceUrl); deleteAllTopics(cns1); deleteAllTopics(cns2); deleteAllTopics(cns3); } if (cqsServiceUrl != null) { cqs1 = new AmazonSQSClient(credentials1); cqs1.setEndpoint(cqsServiceUrl); cqs2 = new AmazonSQSClient(credentials2); cqs2.setEndpoint(cqsServiceUrl); cqs3 = new AmazonSQSClient(credentials3); cqs3.setEndpoint(cqsServiceUrl); deleteAllQueues(cqs1); deleteAllQueues(cqs2); deleteAllQueues(cqs3); } } @After public void tearDown() { for (String key : queues.keySet()) { logger.info("deleting " + queues.get(key)); if (key.endsWith("_USER1")) { cqs1.deleteQueue(new DeleteQueueRequest(queues.get(key))); } else if (key.endsWith("_USER2")) { cqs2.deleteQueue(new DeleteQueueRequest(queues.get(key))); } else { cqs3.deleteQueue(new DeleteQueueRequest(queues.get(key))); } } for (String key : topics.keySet()) { logger.info("deleting " + topics.get(key)); if (key.endsWith("_USER1")) { cns1.deleteTopic(new DeleteTopicRequest(topics.get(key))); } else if (key.endsWith("_USER2")) { cns2.deleteTopic(new DeleteTopicRequest(topics.get(key))); } else { cns3.deleteTopic(new DeleteTopicRequest(topics.get(key))); } } CMBControllerServlet.valueAccumulator.deleteAllCounters(); } public AmazonSQSClient getCqs(USR usr) { if (usr.equals(USR.USER1)) { return cqs1; } else if (usr.equals(USR.USER2)) { return cqs2; } else { return cqs3; } } public AmazonSNSClient getCns(USR usr) { if (usr.equals(USR.USER1)) { return cns1; } else if (usr.equals(USR.USER2)) { return cns2; } else { return cns3; } } public String getQueueUrl(int idx, USR usr) { if (!queues.containsKey(idx)) { queues.put(idx + "_" + usr, getCqs(usr).createQueue(new CreateQueueRequest(PREFIX + rand.nextInt())).getQueueUrl()); logger.info("created queue " + queues.get(idx + "_" + usr)); } return queues.get(idx + "_" + usr); } public String getQueueArn(int idx, USR usr) { return com.comcast.cqs.util.Util.getArnForAbsoluteQueueUrl(queues.get(idx + "_" + usr)); } public String getTopic(int idx, USR usr) { if (!topics.containsKey(idx)) { topics.put(idx + "_" + usr, getCns(usr).createTopic(new CreateTopicRequest(PREFIX + rand.nextInt())).getTopicArn()); logger.info("created topic " + topics.get(idx + "_" + usr)); } return topics.get(idx + "_" + usr); } private void deleteAllTopics(AmazonSNSClient sns) { ListTopicsResult listTopicsResult = sns.listTopics(); for (Topic topic : listTopicsResult.getTopics()) { sns.deleteTopic(new DeleteTopicRequest(topic.getTopicArn())); } } private void deleteAllQueues(AmazonSQSClient sqs) { ListQueuesResult listQueueaResult = sqs.listQueues(); for (String queueUrl : listQueueaResult.getQueueUrls()) { sqs.deleteQueue(new DeleteQueueRequest(queueUrl)); } } }