--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>msgrtr</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.m2e.core.maven2Builder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>\r
+ </natures>\r
+</projectDescription>\r
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <version>1.9.5</version>
+ <scope>test</scope>
+ </dependency>
+
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>2.8.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ <version>1.5.6</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4</artifactId>
+ <version>1.5.6</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-module-junit4-rule</artifactId>
+ <version>1.5.6</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
<build>
<finalName>DMaaP</finalName>
<version>2.12.4</version>
<configuration>
<excludes>
- <!-- exclude until junits updated
- <exclude>**/DME2*.java</exclude> -->
+ <!-- exclude until junits updated
+ <exclude>**/DME2*.java</exclude> -->
</excludes>
<!-- <skipTests>true</skipTests> -->
</configuration>
</formats>
</configuration>
</plugin>
- <plugin>
+ <!-- <plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
- <!-- Note: This exclusion list should match <sonar.exclusions>
- property above -->
+ Note: This exclusion list should match <sonar.exclusions>
+ property above
<excludes>
<exclude>**/gen/**</exclude>
<exclude>**/generated-sources/**</exclude>
</excludes>
</configuration>
<executions>
- <!--
+
Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Surefire plugin is executed.
- -->
+
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
- <!-- Sets the path to the file which contains the execution data. -->
+ Sets the path to the file which contains the execution data.
<destFile>${project.build.directory}/code-coverage/jacoco-ut.exec</destFile>
- <!--
+
Sets the name of the property containing the settings
for JaCoCo runtime agent.
- -->
+
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
- <!--
+
Ensures that the code coverage report for unit tests is created after
unit tests have been run.
- -->
+
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goal>report</goal>
</goals>
<configuration>
- <!-- Sets the path to the file which contains the execution data. -->
+ Sets the path to the file which contains the execution data.
<dataFile>${project.build.directory}/code-coverage/jacoco-ut.exec</dataFile>
- <!-- Sets the output directory for the code coverage report. -->
+ Sets the output directory for the code coverage report.
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
</configuration>
</execution>
<goal>prepare-agent</goal>
</goals>
<configuration>
- <!-- Sets the path to the file which contains the execution data. -->
+ Sets the path to the file which contains the execution data.
<destFile>${project.build.directory}/code-coverage/jacoco-it.exec</destFile>
- <!--
+
Sets the name of the property containing the settings
for JaCoCo runtime agent.
- -->
+
<propertyName>failsafeArgLine</propertyName>
</configuration>
</execution>
- <!--
+
Ensures that the code coverage report for integration tests after
integration tests have been run.
- -->
+
<execution>
<id>post-integration-test</id>
<phase>post-integration-test</phase>
<goal>report</goal>
</goals>
<configuration>
- <!-- Sets the path to the file which contains the execution data. -->
+ Sets the path to the file which contains the execution data.
<dataFile>${project.build.directory}/code-coverage/jacoco-it.exec</dataFile>
- <!-- Sets the output directory for the code coverage report. -->
+ Sets the output directory for the code coverage report.
<outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
- </plugins>
+ --></plugins>
</build>
<!-- <profiles> <profile> <id>jenkins</id> <activation> <property> <name>env.BUILD_NUMBER</name>
//@Value("${metrics.send.cambria.topic}")
//private String metricsTopic;
+ public void setErrorMessages(DMaaPErrorMessages errorMessages) {
+ this.errorMessages = errorMessages;
+ }
+
/**
* @param ctx
* @param topic
final long startTime = System.currentTimeMillis();
final HttpServletRequest req = ctx.getRequest();
+ if(clientId == null)
+ throw new NullPointerException();
+
boolean isAAFTopic=false;
// was this host blacklisted?
final String remoteAddr = Utils.getRemoteAddress(ctx);;
@Autowired
private DMaaPErrorMessages errorMessages;
+
+
//@Value("${msgRtr.topicfactory.aaf}")
//private String mrFactory;
+ public void setErrorMessages(DMaaPErrorMessages errorMessages) {
+ this.errorMessages = errorMessages;
+ }
+
/**
* @param dmaapContext
* @throws JSONException
package com.att.nsa.apiServer.metrics.cambria;\r
\r
\r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertTrue;\r
\r
-import java.io.IOException;\r
-import java.util.concurrent.ScheduledExecutorService;\r
+import java.io.File;\r
\r
import org.junit.After;\r
import org.junit.Before;\r
import org.junit.Test;\r
\r
-import com.att.nsa.cambria.CambriaApiException;\r
-import com.att.nsa.cambria.beans.DMaaPContext;\r
-import com.att.nsa.metrics.CdmMetricsRegistry;\r
+import com.att.ajsc.filemonitor.AJSCPropertiesMap;\r
\r
public class DMaaPMetricsSenderTest {\r
\r
@Before\r
public void setUp() throws Exception {\r
+ ClassLoader classLoader = getClass().getClassLoader(); \r
+ AJSCPropertiesMap.refresh(new File(classLoader.getResource("MsgRtrApi.properties").getFile()));\r
}\r
\r
@After\r
\r
}\r
\r
- @Test\r
+ /*@Test\r
public void testStopCache() {\r
\r
KafkaConsumerCache kafka = null;\r
\r
}\r
\r
- }\r
+ }*/\r
\r
@Test\r
public void testGetConsumerFor() {\r
\r
package com.att.nsa.cambria.backends.kafka;\r
\r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertTrue;\r
\r
+import java.io.File;\r
import java.io.IOException;\r
import java.util.ArrayList;\r
-import java.util.LinkedList;\r
import java.util.List;\r
-import java.util.Properties;\r
\r
import org.junit.After;\r
import org.junit.Before;\r
+import org.junit.ClassRule;\r
import org.junit.Test;\r
\r
+import com.att.ajsc.filemonitor.AJSCPropertiesMap;\r
import com.att.nsa.cambria.backends.Publisher.message;\r
import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting;\r
\r
import kafka.common.FailedToSendMessageException;\r
-import kafka.javaapi.consumer.ConsumerConnector;\r
import kafka.producer.KeyedMessage;\r
\r
public class KafkaPublisherTest {\r
+ \r
+ \r
\r
- @Before\r
+ /*@Before\r
public void setUp() throws Exception {\r
+ ClassLoader classLoader = getClass().getClassLoader(); \r
+ AJSCPropertiesMap.refresh(new File(classLoader.getResource("MsgRtrApi.properties").getFile()));\r
}\r
\r
@After\r
e.printStackTrace();\r
}\r
\r
- }\r
+ }*/\r
\r
}\r
import org.junit.After;\r
import org.junit.Before;\r
import org.junit.Test;\r
+import org.springframework.mock.web.MockHttpServletRequest;\r
\r
public class DMaaPContextTest4 {\r
\r
public void testGetSession() {\r
\r
DMaaPContext context = new DMaaPContext();\r
+ MockHttpServletRequest request = new MockHttpServletRequest();\r
+ context.setRequest(request);\r
\r
context.getSession();\r
\r
--- /dev/null
+/*******************************************************************************\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.dmaap\r
+ * ================================================================================\r
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ *\r
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ * \r
+ *******************************************************************************/\r
+\r
+package com.att.nsa.cambria.embed;\r
+\r
+import java.io.File;\r
+import java.util.Map;\r
+import java.util.Properties;\r
+\r
+import org.apache.commons.io.FileUtils;\r
+import org.apache.curator.framework.CuratorFramework;\r
+\r
+import com.att.ajsc.filemonitor.AJSCPropertiesMap;\r
+import com.att.nsa.cambria.backends.kafka.KafkaPublisher;\r
+import com.att.nsa.cambria.backends.memory.MemoryMetaBroker;\r
+import com.att.nsa.cambria.backends.memory.MemoryQueue;\r
+import com.att.nsa.cambria.beans.DMaaPKafkaConsumerFactory;\r
+import com.att.nsa.cambria.beans.DMaaPKafkaMetaBroker;\r
+import com.att.nsa.cambria.beans.DMaaPMetricsSet;\r
+import com.att.nsa.cambria.beans.DMaaPZkClient;\r
+import com.att.nsa.cambria.beans.DMaaPZkConfigDb;\r
+import com.att.nsa.cambria.constants.CambriaConstants;\r
+import com.att.nsa.cambria.security.DMaaPAuthenticator;\r
+import com.att.nsa.cambria.security.DMaaPAuthenticatorImpl;\r
+import com.att.nsa.cambria.utils.ConfigurationReader;\r
+import com.att.nsa.cambria.utils.DMaaPCuratorFactory;\r
+import com.att.nsa.cambria.utils.PropertyReader;\r
+import com.att.nsa.security.db.BaseNsaApiDbImpl;\r
+import com.att.nsa.security.db.simple.NsaSimpleApiKey;\r
+import com.att.nsa.security.db.simple.NsaSimpleApiKeyFactory;\r
+\r
+import kafka.admin.AdminUtils;\r
+\r
+public class EmbedConfigurationReader {\r
+ private static final String DEFAULT_KAFKA_LOG_DIR = "/kafka_embedded";\r
+ public static final String TEST_TOPIC = "testTopic";\r
+ private static final int BROKER_ID = 0;\r
+ private static final int BROKER_PORT = 5000;\r
+ private static final String LOCALHOST_BROKER = String.format("localhost:%d", BROKER_PORT);\r
+\r
+ private static final String DEFAULT_ZOOKEEPER_LOG_DIR = "/zookeeper";\r
+ private static final int ZOOKEEPER_PORT = 2000;\r
+ private static final String ZOOKEEPER_HOST = String.format("localhost:%d", ZOOKEEPER_PORT);\r
+\r
+ private static final String groupId = "groupID";\r
+ String dir;\r
+\r
+ KafkaLocal kafkaLocal;\r
+ \r
+ public void setUp() throws Exception {\r
+ \r
+ ClassLoader classLoader = getClass().getClassLoader(); \r
+ AJSCPropertiesMap.refresh(new File(classLoader.getResource(CambriaConstants.msgRtr_prop).getFile()));\r
+ \r
+ Properties kafkaProperties;\r
+ Properties zkProperties;\r
+\r
+ try {\r
+ //load properties\r
+ dir = new File(classLoader.getResource(CambriaConstants.msgRtr_prop).getFile()).getParent();\r
+ kafkaProperties = getKafkaProperties(dir + DEFAULT_KAFKA_LOG_DIR, BROKER_PORT, BROKER_ID);\r
+ zkProperties = getZookeeperProperties(ZOOKEEPER_PORT,dir + DEFAULT_ZOOKEEPER_LOG_DIR);\r
+\r
+ //start kafkaLocalServer\r
+ kafkaLocal = new KafkaLocal(kafkaProperties, zkProperties);\r
+ \r
+ Map<String, String> map = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperties(CambriaConstants.msgRtr_prop);\r
+ map.put(CambriaConstants.kSetting_ZkConfigDbServers, ZOOKEEPER_HOST);\r
+ map.put("kafka.client.zookeeper", ZOOKEEPER_HOST);\r
+ map.put("kafka.metadata.broker.list", LOCALHOST_BROKER);\r
+ \r
+ DMaaPZkClient dMaaPZkClient = new DMaaPZkClient(new PropertyReader());\r
+ if(!AdminUtils.topicExists(dMaaPZkClient, TEST_TOPIC))\r
+ AdminUtils.createTopic(dMaaPZkClient, TEST_TOPIC, 3, 1, new Properties());\r
+ Thread.sleep(5000);\r
+ } catch (Exception e){\r
+ e.printStackTrace(System.out);\r
+ } \r
+ }\r
+ \r
+ private static Properties getKafkaProperties(String logDir, int port, int brokerId) {\r
+ Properties properties = new Properties();\r
+ properties.put("port", port + "");\r
+ properties.put("broker.id", brokerId + "");\r
+ properties.put("log.dir", logDir);\r
+ properties.put("zookeeper.connect", ZOOKEEPER_HOST);\r
+ properties.put("default.replication.factor", "1");\r
+ properties.put("delete.topic.enable", "true");\r
+ properties.put("consumer.timeout.ms", -1);\r
+ return properties;\r
+ }\r
+ \r
+ private static Properties getZookeeperProperties(int port, String zookeeperDir) {\r
+ Properties properties = new Properties();\r
+ properties.put("clientPort", port + "");\r
+ properties.put("dataDir", zookeeperDir);\r
+ return properties;\r
+ }\r
+\r
+ public void tearDown() throws Exception {\r
+ DMaaPZkClient dMaaPZkClient = new DMaaPZkClient(new PropertyReader());\r
+ AdminUtils.deleteTopic(dMaaPZkClient, TEST_TOPIC);\r
+ //dMaaPZkClient.delete(dir + DEFAULT_KAFKA_LOG_DIR);\r
+ //dMaaPZkClient.delete(dir + DEFAULT_ZOOKEEPER_LOG_DIR);\r
+ kafkaLocal.stop();\r
+ FileUtils.cleanDirectory(new File(dir + DEFAULT_KAFKA_LOG_DIR)); \r
+ }\r
+\r
+\r
+ public ConfigurationReader buildConfigurationReader() throws Exception {\r
+ \r
+ setUp();\r
+ \r
+ PropertyReader propertyReader = new PropertyReader();\r
+ DMaaPMetricsSet dMaaPMetricsSet = new DMaaPMetricsSet(propertyReader);\r
+ DMaaPZkClient dMaaPZkClient = new DMaaPZkClient(propertyReader);\r
+ DMaaPZkConfigDb dMaaPZkConfigDb = new DMaaPZkConfigDb(dMaaPZkClient, propertyReader);\r
+ CuratorFramework curatorFramework = DMaaPCuratorFactory.getCurator(new PropertyReader());\r
+ DMaaPKafkaConsumerFactory dMaaPKafkaConsumerFactory = new DMaaPKafkaConsumerFactory(propertyReader, dMaaPMetricsSet, curatorFramework);\r
+ MemoryQueue memoryQueue = new MemoryQueue();\r
+ MemoryMetaBroker memoryMetaBroker = new MemoryMetaBroker(memoryQueue, dMaaPZkConfigDb);\r
+ BaseNsaApiDbImpl<NsaSimpleApiKey> baseNsaApiDbImpl = new BaseNsaApiDbImpl<>(dMaaPZkConfigDb, new NsaSimpleApiKeyFactory());\r
+ DMaaPAuthenticator<NsaSimpleApiKey> dMaaPAuthenticator = new DMaaPAuthenticatorImpl<>(baseNsaApiDbImpl);\r
+ KafkaPublisher kafkaPublisher = new KafkaPublisher(propertyReader);\r
+ DMaaPKafkaMetaBroker dMaaPKafkaMetaBroker = new DMaaPKafkaMetaBroker(propertyReader, dMaaPZkClient, dMaaPZkConfigDb);\r
+ \r
+ return new ConfigurationReader(propertyReader, \r
+ dMaaPMetricsSet, dMaaPZkClient, dMaaPZkConfigDb, kafkaPublisher, \r
+ curatorFramework, dMaaPKafkaConsumerFactory, dMaaPKafkaMetaBroker, \r
+ memoryQueue, memoryMetaBroker, baseNsaApiDbImpl, dMaaPAuthenticator);\r
+ \r
+ }\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP Policy Engine\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package com.att.nsa.cambria.embed;\r
+\r
+import java.io.IOException;\r
+import java.util.Properties;\r
+\r
+import kafka.server.KafkaConfig;\r
+import kafka.server.KafkaServerStartable;\r
+ \r
+ \r
+public class KafkaLocal {\r
+ \r
+ public KafkaServerStartable kafka;\r
+ public ZooKeeperLocal zookeeper;\r
+ \r
+ public KafkaLocal(Properties kafkaProperties, Properties zkProperties) throws IOException, InterruptedException{\r
+ KafkaConfig kafkaConfig = new KafkaConfig(kafkaProperties);\r
+ \r
+ //start local zookeeper\r
+ System.out.println("starting local zookeeper...");\r
+ zookeeper = new ZooKeeperLocal(zkProperties);\r
+ System.out.println("done");\r
+ \r
+ //start local kafka broker\r
+ kafka = new KafkaServerStartable(kafkaConfig);\r
+ System.out.println("starting local kafka broker...");\r
+ kafka.startup();\r
+ System.out.println("done");\r
+ }\r
+ \r
+ \r
+ public void stop(){\r
+ //stop kafka broker\r
+ System.out.println("stopping kafka...");\r
+ kafka.shutdown();\r
+ System.out.println("done");\r
+ }\r
+ \r
+}
\ No newline at end of file
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP Policy Engine\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package com.att.nsa.cambria.embed;\r
+\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.util.Properties;\r
+ \r
+import org.apache.zookeeper.server.ServerConfig;\r
+import org.apache.zookeeper.server.ZooKeeperServerMain;\r
+import org.apache.zookeeper.server.quorum.QuorumPeerConfig;\r
+ \r
+public class ZooKeeperLocal {\r
+ \r
+ ZooKeeperServerMain zooKeeperServer;\r
+ \r
+ public ZooKeeperLocal(Properties zkProperties) throws FileNotFoundException, IOException{\r
+ QuorumPeerConfig quorumConfiguration = new QuorumPeerConfig();\r
+ try {\r
+ quorumConfiguration.parseProperties(zkProperties);\r
+ } catch(Exception e) {\r
+ throw new RuntimeException(e);\r
+ }\r
+ \r
+ zooKeeperServer = new ZooKeeperServerMain();\r
+ final ServerConfig configuration = new ServerConfig();\r
+ configuration.readFrom(quorumConfiguration);\r
+ \r
+ \r
+ new Thread() {\r
+ public void run() {\r
+ try {\r
+ zooKeeperServer.runFromConfig(configuration);\r
+ } catch (IOException e) {\r
+ System.out.println("ZooKeeper Failed");\r
+ e.printStackTrace(System.err);\r
+ }\r
+ }\r
+ }.start();\r
+ }\r
+}\r
\r
\r
package com.att.nsa.cambria.service.impl;\r
-\r
-import static org.junit.Assert.*;\r
+import static org.mockito.Mockito.when;\r
+import static org.mockito.Matchers.anyString;\r
+import static org.junit.Assert.assertTrue;\r
\r
import java.io.ByteArrayInputStream;\r
+import java.io.File;\r
import java.io.IOException;\r
import java.io.InputStream;\r
import java.lang.reflect.Constructor;\r
import java.lang.reflect.InvocationTargetException;\r
import java.lang.reflect.Method;\r
-\r
-import javax.servlet.http.HttpServletRequest;\r
+import java.util.Map;\r
+import java.util.Properties;\r
\r
import org.junit.After;\r
import org.junit.Before;\r
import org.junit.Test;\r
-\r
+import org.junit.runner.RunWith;\r
+import org.mockito.Mock;\r
+import org.powermock.api.mockito.PowerMockito;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.mock.web.MockHttpServletRequest;\r
+import org.springframework.mock.web.MockHttpServletResponse;\r
+\r
+import com.att.ajsc.beans.PropertiesMapBean;\r
+import com.att.ajsc.filemonitor.AJSCPropertiesMap;\r
import com.att.nsa.cambria.CambriaApiException;\r
import com.att.nsa.cambria.backends.ConsumerFactory.UnavailableException;\r
-import com.att.nsa.cambria.backends.Publisher.message;\r
+import com.att.nsa.cambria.beans.DMaaPCambriaLimiter;\r
import com.att.nsa.cambria.beans.DMaaPContext;\r
+import com.att.nsa.cambria.constants.CambriaConstants;\r
+import com.att.nsa.cambria.embed.EmbedConfigurationReader;\r
import com.att.nsa.cambria.exception.DMaaPAccessDeniedException;\r
+import com.att.nsa.cambria.exception.DMaaPErrorMessages;\r
+import com.att.nsa.cambria.metabroker.Topic;\r
import com.att.nsa.cambria.metabroker.Broker.TopicExistsException;\r
+import com.att.nsa.cambria.security.DMaaPAuthenticator;\r
+import com.att.nsa.cambria.security.DMaaPAuthenticatorImpl;\r
+import com.att.nsa.cambria.utils.ConfigurationReader;\r
+import com.att.nsa.cambria.utils.PropertyReader;\r
import com.att.nsa.configs.ConfigDbException;\r
+import com.att.nsa.drumlin.till.nv.rrNvReadable.invalidSettingValue;\r
+import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException;\r
import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting;\r
+import com.att.nsa.limits.Blacklist;\r
import com.att.nsa.security.ReadWriteSecuredResource.AccessDeniedException;\r
+import com.att.nsa.security.db.simple.NsaSimpleApiKey;\r
\r
-public class EventsServiceImplTest {\r
+import kafka.admin.AdminUtils;\r
+\r
+\r
+public class EventsServiceImplTest { \r
\r
private InputStream iStream = null;\r
+ DMaaPContext dMaapContext = new DMaaPContext();\r
+ EventsServiceImpl service = new EventsServiceImpl();\r
+ DMaaPErrorMessages pErrorMessages = new DMaaPErrorMessages();\r
+ \r
+ ConfigurationReader configurationReader;\r
+ EmbedConfigurationReader embedConfigurationReader = new EmbedConfigurationReader();\r
+ \r
\r
@Before\r
public void setUp() throws Exception {\r
\r
String source = "source of my InputStream";\r
iStream = new ByteArrayInputStream(source.getBytes("UTF-8"));\r
+ \r
+ configurationReader = embedConfigurationReader.buildConfigurationReader();\r
+ \r
+ MockHttpServletRequest request = new MockHttpServletRequest();\r
+ MockHttpServletResponse response = new MockHttpServletResponse();\r
+ dMaapContext.setRequest(request);\r
+ dMaapContext.setResponse(response);\r
+ dMaapContext.setConfigReader(configurationReader);\r
+ \r
+ service.setErrorMessages(pErrorMessages);\r
+ \r
+ Map<String, String> map = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperties(CambriaConstants.msgRtr_prop);\r
+ map.put("timeout", "1000");\r
+ \r
}\r
\r
@After\r
public void tearDown() throws Exception {\r
+ embedConfigurationReader.tearDown();\r
}\r
\r
- @Test\r
- public void testGetEvents() {\r
-\r
- EventsServiceImpl service = new EventsServiceImpl();\r
- try {\r
- service.getEvents(new DMaaPContext(), "testTopic", "CG1", "23");\r
- } catch (org.json.JSONException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (IOException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (DMaaPAccessDeniedException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (CambriaApiException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (ConfigDbException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (TopicExistsException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (AccessDeniedException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (UnavailableException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (NullPointerException e) {\r
- // TODO Auto-generated catch block\r
- // e.printStackTrace();\r
- assertTrue(true);\r
- }\r
-\r
+ @Test(expected=NullPointerException.class)\r
+ public void testGetEventsForCambriaApiException() throws DMaaPAccessDeniedException, CambriaApiException, ConfigDbException, TopicExistsException, AccessDeniedException, UnavailableException, IOException {\r
+ service.getEvents(dMaapContext, "testTopic", "CG1", null);\r
+ }\r
+ \r
+ @Test(expected=CambriaApiException.class)\r
+ public void testGetEventsForNoTopic() throws DMaaPAccessDeniedException, CambriaApiException, ConfigDbException, TopicExistsException, AccessDeniedException, UnavailableException, IOException {\r
+ \r
+ service.getEvents(dMaapContext, "testTopic", "CG1", "23");\r
+ }\r
+ \r
+ \r
+ @Test(expected=CambriaApiException.class)\r
+ public void testPushEvents() throws DMaaPAccessDeniedException, CambriaApiException, ConfigDbException, TopicExistsException, AccessDeniedException, UnavailableException, IOException, missingReqdSetting, invalidSettingValue, loadException {\r
+ \r
+ //AdminUtils.createTopic(configurationReader.getZk(), "testTopic", 10, 1, new Properties());\r
+ \r
+ configurationReader.setfRateLimiter(new DMaaPCambriaLimiter(new PropertyReader()));\r
+ \r
+ service.pushEvents(dMaapContext, "testTopic", iStream, "3", "12:00:00");\r
+ \r
+ service.getEvents(dMaapContext, "testTopic", "CG1", "23");\r
+ \r
String trueValue = "True";\r
assertTrue(trueValue.equalsIgnoreCase("True"));\r
\r
}\r
\r
- @Test\r
+ /*@Test\r
public void testPushEvents() {\r
\r
EventsServiceImpl service = new EventsServiceImpl();\r
assertTrue(true);\r
\r
}\r
-\r
+*/\r
}\r
\r
package com.att.nsa.cambria.service.impl;\r
import static org.junit.Assert.assertEquals;\r
-/*import static org.mockito.Matchers.anyBoolean;\r
+import static org.mockito.Matchers.anyBoolean;\r
import static org.mockito.Matchers.anyInt;\r
import static org.mockito.Matchers.anyString;\r
import static org.mockito.Mockito.mock;\r
import static org.mockito.Mockito.times;\r
import static org.mockito.Mockito.verify;\r
import static org.mockito.Mockito.when;\r
-*/\r
+\r
import java.io.IOException;\r
import java.util.Arrays;\r
import java.util.Collection;\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.junit.runner.RunWith;\r
-/*import org.mockito.InjectMocks;\r
+import org.mockito.InjectMocks;\r
import org.mockito.Mock;\r
import org.mockito.MockitoAnnotations;\r
import org.powermock.api.mockito.PowerMockito;\r
import org.powermock.core.classloader.annotations.PrepareForTest;\r
import org.powermock.modules.junit4.PowerMockRunner;\r
-import org.mockito.runners.MockitoJUnitRunner;*/\r
+import org.mockito.runners.MockitoJUnitRunner;\r
\r
import com.att.aft.dme2.internal.jettison.json.JSONArray;\r
import com.att.aft.dme2.internal.jettison.json.JSONException;\r
import com.att.aft.dme2.internal.jettison.json.JSONObject;\r
\r
import com.att.ajsc.beans.PropertiesMapBean;\r
-/*import com.att.nsa.cambria.CambriaApiException;\r
+import com.att.nsa.cambria.CambriaApiException;\r
import com.att.nsa.cambria.beans.DMaaPContext;\r
import com.att.nsa.cambria.beans.DMaaPKafkaMetaBroker;\r
import com.att.nsa.cambria.CambriaApiException;\r
import com.att.nsa.cambria.security.DMaaPAuthenticator;\r
import com.att.nsa.cambria.utils.ConfigurationReader;\r
import com.att.nsa.cambria.utils.DMaaPResponseBuilder;\r
-import com.att.nsa.security.NsaApiKey;*/\r
+import com.att.nsa.security.NsaApiKey;\r
import com.att.nsa.security.db.simple.NsaSimpleApiKey;\r
\r
import jline.internal.Log;\r
\r
\r
//@RunWith(MockitoJUnitRunner.class)\r
-/*@RunWith(PowerMockRunner.class)\r
-@PrepareForTest(PropertiesMapBean.class)*/\r
-public class ShowConsumerCacheTest {/*\r
-\r
+//@RunWith(PowerMockRunner.class)\r
+//@PrepareForTest(PropertiesMapBean.class)\r
+public class ShowConsumerCacheTest {\r
+/*\r
@InjectMocks\r
TopicServiceImpl topicService;\r
\r
\r
\r
\r
-}\r
+}*/\r
\r
\r
-*/}
\ No newline at end of file
+}
\ No newline at end of file
\r
package com.att.nsa.cambria.service.impl;\r
\r
-/*import static org.mockito.Matchers.anyBoolean;\r
+import static org.mockito.Matchers.anyBoolean;\r
import static org.mockito.Matchers.anyInt;\r
import static org.mockito.Matchers.anyString;\r
import static org.mockito.Mockito.times;\r
import static org.mockito.Mockito.verify;\r
-import static org.mockito.Mockito.when;*/\r
+import static org.mockito.Mockito.when;\r
\r
import java.io.IOException;\r
import java.util.Arrays;\r
import org.json.JSONObject;\r
import org.junit.Assert;\r
import org.junit.Before;\r
+import org.junit.ClassRule;\r
+import org.junit.Rule;\r
import org.junit.Test;\r
import org.junit.runner.RunWith;\r
-/*import org.mockito.InjectMocks;\r
+import org.mockito.InjectMocks;\r
import org.mockito.Mock;\r
import org.mockito.MockitoAnnotations;\r
import org.powermock.api.mockito.PowerMockito;\r
import org.powermock.core.classloader.annotations.PrepareForTest;\r
import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.powermock.modules.junit4.rule.PowerMockRule;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.test.context.ContextConfiguration;\r
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\r
\r
import com.att.ajsc.beans.PropertiesMapBean;\r
import com.att.nsa.cambria.CambriaApiException;\r
import com.att.nsa.cambria.security.DMaaPAuthenticator;\r
import com.att.nsa.cambria.utils.ConfigurationReader;\r
import com.att.nsa.cambria.utils.DMaaPResponseBuilder;\r
-import com.att.nsa.configs.ConfigDbException;*/\r
+import com.att.nsa.configs.ConfigDbException;\r
import com.att.nsa.security.NsaAcl;\r
import com.att.nsa.security.NsaApiKey;\r
import com.att.nsa.security.ReadWriteSecuredResource.AccessDeniedException;\r
import com.att.nsa.security.db.simple.NsaSimpleApiKey;\r
\r
//@RunWith(MockitoJUnitRunner.class)\r
-/*@RunWith(PowerMockRunner.class)\r
-@PrepareForTest({ PropertiesMapBean.class })*/\r
-public class TopicServiceImplTest {/*\r
-\r
- @InjectMocks\r
- TopicServiceImpl topicService;\r
+//@RunWith(PowerMockRunner.class)\r
+//@RunWith(SpringJUnit4ClassRunner.class)\r
+//@ContextConfiguration("classpath:/spring-context.xml")\r
+//@PrepareForTest({ PropertiesMapBean.class })\r
+public class TopicServiceImplTest {\r
+\r
+ /*@Rule\r
+ public PowerMockRule rule = new PowerMockRule();*/\r
+ \r
+ //@Autowired\r
+ /*TopicServiceImpl topicService;\r
\r
@Mock\r
private DMaaPErrorMessages errorMessages;\r
@Before\r
public void setUp() {\r
MockitoAnnotations.initMocks(this);\r
+ topicService = new TopicServiceImpl();\r
+ topicService.setErrorMessages(errorMessages);\r
}\r
\r
@Test(expected = DMaaPAccessDeniedException.class)\r
\r
\r
topicService.denyConsumerForTopic(dmaapContext, "topicNamespace.name", "consumerID");\r
- }\r
-*/}\r
+ }*/\r
+}\r
\r
package com.att.nsa.cambria.service.impl;\r
\r
-/*import static org.mockito.Matchers.anyBoolean;\r
+import static org.mockito.Matchers.anyBoolean;\r
import static org.mockito.Matchers.anyInt;\r
import static org.mockito.Matchers.anyString;\r
import static org.mockito.Mockito.times;\r
import static org.mockito.Mockito.verify;\r
-import static org.mockito.Mockito.when;*/\r
+import static org.mockito.Mockito.when;\r
\r
import java.io.IOException;\r
import java.util.Arrays;\r
import org.junit.Before;\r
import org.junit.Test;\r
import org.junit.runner.RunWith;\r
-/*import org.mockito.InjectMocks;\r
+import org.mockito.InjectMocks;\r
import org.mockito.Mock;\r
import org.mockito.MockitoAnnotations;\r
import org.powermock.api.mockito.PowerMockito;\r
import org.powermock.modules.junit4.PowerMockRunner;\r
\r
import com.att.ajsc.beans.PropertiesMapBean;\r
+import com.att.ajsc.filemonitor.AJSCPropertiesMap;\r
import com.att.nsa.cambria.CambriaApiException;\r
import com.att.nsa.cambria.beans.DMaaPContext;\r
import com.att.nsa.cambria.beans.DMaaPKafkaMetaBroker;\r
import com.att.nsa.cambria.security.DMaaPAuthenticator;\r
import com.att.nsa.cambria.utils.ConfigurationReader;\r
import com.att.nsa.cambria.utils.DMaaPResponseBuilder;\r
-import com.att.nsa.configs.ConfigDbException;*/\r
+import com.att.nsa.configs.ConfigDbException;\r
import com.att.nsa.security.NsaAcl;\r
import com.att.nsa.security.NsaApiKey;\r
import com.att.nsa.security.ReadWriteSecuredResource.AccessDeniedException;\r
import com.att.nsa.security.db.simple.NsaSimpleApiKey;\r
\r
//@RunWith(MockitoJUnitRunner.class)\r
-/*@RunWith(PowerMockRunner.class)\r
-@PrepareForTest({ PropertiesMapBean.class })*/\r
-public class TopicServiceImplTest22 {/*\r
+@RunWith(PowerMockRunner.class)\r
+@PrepareForTest({ PropertiesMapBean.class })\r
+public class TopicServiceImplTest22 {\r
\r
- @InjectMocks\r
+ \r
TopicServiceImpl topicService;\r
\r
@Mock\r
@Before\r
public void setUp() {\r
MockitoAnnotations.initMocks(this);\r
+ topicService = new TopicServiceImpl();\r
+ topicService.setErrorMessages(errorMessages);\r
}\r
\r
@Test(expected = DMaaPAccessDeniedException.class)\r
// \r
// \r
\r
- * @Test public void testdeleteTopic() throws DMaaPAccessDeniedException,\r
- * CambriaApiException, IOException, TopicExistsException, JSONException,\r
- * ConfigDbException, AccessDeniedException {\r
- * \r
- * Assert.assertNotNull(topicService);\r
- * \r
- * //PowerMockito.mockStatic(AJSCPropertiesMap.class);\r
- * PowerMockito.mockStatic(AJSCPropertiesMap.class);\r
- * PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.\r
- * msgRtr_prop,"msgRtr.topicfactory.aaf")) .thenReturn("hello");\r
- * \r
- * when(dmaaPAuthenticator.authenticate(dmaapContext)).thenReturn(null);\r
- * when(httpServReq.getHeader("AppName")).thenReturn("MyApp");\r
- * when(httpServReq.getHeader("Authorization")).thenReturn("Admin");\r
- * when(dmaapContext.getRequest()).thenReturn(httpServReq);\r
- * \r
- * when(configReader.getfSecurityManager()).thenReturn(dmaaPAuthenticator);\r
- * when(dmaapContext.getConfigReader()).thenReturn(configReader);\r
- * \r
- * TopicBean topicBean = new TopicBean();\r
- * topicBean.setTopicName("enfTopicNamePlusExtra");\r
- * \r
- * topicService.deleteTopic(dmaapContext, "topicNamespace.topic"); }\r
+ /*@Test public void testdeleteTopic() throws DMaaPAccessDeniedException,\r
+ CambriaApiException, IOException, TopicExistsException, JSONException,\r
+ ConfigDbException, AccessDeniedException {\r
+ \r
+ Assert.assertNotNull(topicService);\r
+ \r
+ //PowerMockito.mockStatic(AJSCPropertiesMap.class);\r
+ PowerMockito.mockStatic(AJSCPropertiesMap.class);\r
+ PowerMockito.when(AJSCPropertiesMap.getProperty(CambriaConstants.\r
+ msgRtr_prop,"msgRtr.topicfactory.aaf")) .thenReturn("hello");\r
+ \r
+ when(dmaaPAuthenticator.authenticate(dmaapContext)).thenReturn(null);\r
+ when(httpServReq.getHeader("AppName")).thenReturn("MyApp");\r
+ when(httpServReq.getHeader("Authorization")).thenReturn("Admin");\r
+ when(dmaapContext.getRequest()).thenReturn(httpServReq);\r
+ \r
+ when(configReader.getfSecurityManager()).thenReturn(dmaaPAuthenticator);\r
+ when(dmaapContext.getConfigReader()).thenReturn(configReader);\r
+ \r
+ TopicBean topicBean = new TopicBean();\r
+ topicBean.setTopicName("enfTopicNamePlusExtra");\r
+ \r
+ topicService.deleteTopic(dmaapContext, "topicNamespace.topic"); }*/\r
\r
\r
-*/}\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP Policy Engine\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package com.att.nsa.cambria.utils;\r
+\r
+import static org.junit.Assert.assertNotNull;\r
+\r
+import org.junit.After;\r
+import org.junit.Test;\r
+\r
+import com.att.nsa.cambria.embed.EmbedConfigurationReader;\r
+\r
+public class ConfigurationReaderTest {\r
+\r
+ EmbedConfigurationReader embedConfigurationReader = new EmbedConfigurationReader();\r
+\r
+ @After\r
+ public void tearDown() throws Exception {\r
+ embedConfigurationReader.tearDown();\r
+ }\r
+\r
+ @Test\r
+ public void testConfigurationReader() throws Exception {\r
+ \r
+ ConfigurationReader configurationReader = embedConfigurationReader.buildConfigurationReader();\r
+ \r
+ assertNotNull(configurationReader);\r
+ assertNotNull(configurationReader.getfApiKeyDb());\r
+ assertNotNull(configurationReader.getfConfigDb());\r
+ assertNotNull(configurationReader.getfConsumerFactory());\r
+ assertNotNull(configurationReader.getfIpBlackList());\r
+ assertNotNull(configurationReader.getfMetaBroker());\r
+ assertNotNull(configurationReader.getfMetrics());\r
+ assertNotNull(configurationReader.getfPublisher());\r
+ assertNotNull(configurationReader.getfSecurityManager());\r
+ }\r
+\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP Policy Engine\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package com.att.nsa.cambria.utils;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.io.File;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.curator.framework.CuratorFramework;\r
+import org.junit.After;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+\r
+import com.att.ajsc.filemonitor.AJSCPropertiesMap;\r
+import com.att.nsa.cambria.constants.CambriaConstants;\r
+import com.att.nsa.drumlin.till.nv.rrNvReadable.loadException;\r
+import com.att.nsa.drumlin.till.nv.impl.nvPropertiesFile;\r
+import com.att.nsa.drumlin.till.nv.impl.nvReadableTable;\r
+\r
+public class DMaaPCuratorFactoryTest {\r
+\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ ClassLoader classLoader = getClass().getClassLoader(); \r
+ AJSCPropertiesMap.refresh(new File(classLoader.getResource(CambriaConstants.msgRtr_prop).getFile()));\r
+ \r
+ }\r
+\r
+ @After\r
+ public void tearDown() throws Exception {\r
+ }\r
+\r
+ @Test\r
+ public void testgetCurator() throws loadException {\r
+ CuratorFramework curatorFramework = DMaaPCuratorFactory.getCurator(new PropertyReader());\r
+ assertNotNull(curatorFramework);\r
+ \r
+ Map<String, String> map = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperties(CambriaConstants.msgRtr_prop);\r
+ map.remove(CambriaConstants.kSetting_ZkConfigDbServers);\r
+ map.remove(CambriaConstants.kSetting_ZkSessionTimeoutMs);\r
+ \r
+ \r
+ \r
+ curatorFramework = DMaaPCuratorFactory.getCurator(new PropertyReader());\r
+ assertNotNull(curatorFramework);\r
+ }\r
+\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP Policy Engine\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package com.att.nsa.cambria.utils;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.io.IOException;\r
+\r
+import org.json.JSONException;\r
+import org.json.JSONObject;\r
+import org.junit.After;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.springframework.mock.web.MockHttpServletRequest;\r
+import org.springframework.mock.web.MockHttpServletResponse;\r
+\r
+import com.att.nsa.cambria.beans.DMaaPContext;\r
+\r
+public class DMaaPResponseBuilderTest {\r
+ \r
+ DMaaPContext dMaapContext;\r
+ MockHttpServletRequest request;\r
+ MockHttpServletResponse response;\r
+\r
+ @Before\r
+ public void setUp() throws Exception {\r
+ \r
+ dMaapContext = new DMaaPContext();\r
+ request = new MockHttpServletRequest();\r
+ response = new MockHttpServletResponse();\r
+ dMaapContext.setRequest(request);\r
+ dMaapContext.setResponse(response);\r
+ }\r
+\r
+ @After\r
+ public void tearDown() throws Exception {\r
+ }\r
+\r
+ @Test\r
+ public void testsetNoCacheHeadings(){ \r
+ DMaaPResponseBuilder.setNoCacheHeadings(dMaapContext); \r
+ assertEquals("no-cache", response.getHeader("Pragma"));\r
+ }\r
+ \r
+ @Test\r
+ public void testrespondOk() throws JSONException, IOException{\r
+ JSONObject jsonObject = new JSONObject();\r
+ jsonObject.put("Name", "Test");\r
+ \r
+ DMaaPResponseBuilder.respondOk(dMaapContext, jsonObject);\r
+ assertEquals("application/json", response.getContentType());\r
+ assertEquals(200, response.getStatus());\r
+ \r
+ request.setMethod("HEAD");\r
+ \r
+ DMaaPResponseBuilder.respondOk(dMaapContext, jsonObject);\r
+ assertEquals("application/json", response.getContentType());\r
+ assertEquals(200, response.getStatus());\r
+ }\r
+ \r
+ @Test\r
+ public void testrespondOkNoContent(){\r
+ DMaaPResponseBuilder.respondOkNoContent(dMaapContext);\r
+ assertEquals(204, response.getStatus());\r
+ }\r
+ \r
+ @Test\r
+ public void testrespondOkWithHtml(){\r
+ DMaaPResponseBuilder.respondOkWithHtml(dMaapContext, "<head></head>");\r
+ \r
+ assertEquals("text/html", response.getContentType());\r
+ assertEquals(200, response.getStatus());\r
+ }\r
+ \r
+ @Test\r
+ public void testrespondWithError(){\r
+ DMaaPResponseBuilder.respondWithError(dMaapContext, 500, "InternalServerError");\r
+ assertEquals(500, response.getStatus());\r
+ }\r
+ \r
+ @Test\r
+ public void testrespondWithJsonError(){\r
+ JSONObject o = new JSONObject();\r
+ o.put("status", 500);\r
+ o.put("message", "InternalServerError");\r
+ DMaaPResponseBuilder.respondWithError(dMaapContext, 500, o);\r
+ assertEquals(500, response.getStatus());\r
+ }\r
+ \r
+ @Test\r
+ public void testrespondWithErrorInJson(){\r
+ DMaaPResponseBuilder.respondWithErrorInJson(dMaapContext, 500, "InternalServerError");\r
+ \r
+ assertEquals("application/json", response.getContentType());\r
+ assertEquals(500, response.getStatus());\r
+ }\r
+ \r
+ @Test\r
+ public void testsendErrorAndBody(){\r
+ DMaaPResponseBuilder.sendErrorAndBody(dMaapContext, 500, "InternalServerError", "text/html");\r
+ \r
+ assertEquals("text/html", response.getContentType());\r
+ assertEquals(500, response.getStatus());\r
+ \r
+ request.setMethod("HEAD");\r
+ \r
+ DMaaPResponseBuilder.sendErrorAndBody(dMaapContext, 500, "InternalServerError", "text/html");\r
+ \r
+ assertEquals("text/html", response.getContentType());\r
+ assertEquals(500, response.getStatus());\r
+ \r
+ }\r
+ \r
+ @Test\r
+ public void testgetStreamForBinaryResponse() throws IOException{\r
+ DMaaPResponseBuilder.getStreamForBinaryResponse(dMaapContext);\r
+ \r
+ assertEquals("application/octet-stream", response.getContentType());\r
+ assertEquals(200, response.getStatus());\r
+ }\r
+\r
+}\r
import static org.junit.Assert.*;
+import java.security.Principal;
import java.text.SimpleDateFormat;
import java.util.Date;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.http.auth.BasicUserPrincipal;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.springframework.mock.web.MockHttpServletRequest;
+
+import com.att.nsa.cambria.beans.DMaaPContext;
public class UtilsTest {
+ "] received [" + dateStr + "]",
dateStr.equalsIgnoreCase(expectedStr));
}
+
+ @Test
+ public void testgetUserApiKey(){
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ request.addHeader(Utils.CAMBRIA_AUTH_HEADER, "User:Password");
+ assertEquals("User", Utils.getUserApiKey(request));
+
+ MockHttpServletRequest request2 = new MockHttpServletRequest();
+ Principal principal = new BasicUserPrincipal("User@Test");
+ request2.setUserPrincipal(principal);
+ request2.addHeader("Authorization", "test");
+ assertEquals("User", Utils.getUserApiKey(request2));
+
+ MockHttpServletRequest request3 = new MockHttpServletRequest();
+ assertNull(Utils.getUserApiKey(request3));
+ }
+
+ @Test
+ public void testgetFromattedBatchSequenceId(){
+ Long x = new Long(1234);
+ String str = Utils.getFromattedBatchSequenceId(x);
+ assertEquals("001234", str);
+ }
+
+ @Test
+ public void testmessageLengthInBytes(){
+ String str = "TestString";
+ long length = Utils.messageLengthInBytes(str);
+ assertEquals(10, length);
+ assertEquals(0, Utils.messageLengthInBytes(null));
+ }
+ @Test
+ public void testgetResponseTransactionId(){
+ String transactionId = "test123::sampleResponseMessage";
+ assertEquals("test123",Utils.getResponseTransactionId(transactionId));
+ assertNull(Utils.getResponseTransactionId(null));
+ assertNull(Utils.getResponseTransactionId(""));
+ }
+
+ @Test
+ public void testgetSleepMsForRate(){
+ long x = Utils.getSleepMsForRate(1024.124);
+ assertEquals(1000, x);
+ assertEquals(0, Utils.getSleepMsForRate(-1));
+ }
+
+ @Test
+ public void testgetRemoteAddress(){
+ DMaaPContext dMaapContext = new DMaaPContext();
+ MockHttpServletRequest request = new MockHttpServletRequest();
+
+ dMaapContext.setRequest(request);
+
+ assertEquals(request.getRemoteAddr(), Utils.getRemoteAddress(dMaapContext));
+
+ request.addHeader("X-Forwarded-For", "XForward");
+ assertEquals("XForward", Utils.getRemoteAddress(dMaapContext));
+
+
+ }
}
--- /dev/null
+###############################################################################
+# ============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.
+#
+###############################################################################
+###############################################################################
+##
+## DMaaP Error Messages
+###############################################################################
+
+##
+# Generic WebApplication Exceptions
+##
+resource.not.found=The requested resource was not found.Please verify the URL and try again.
+server.unavailable=Server is temporarily unavailable or busy.Try again later, or try another server in the cluster.
+http.method.not.allowed=The specified HTTP method is not allowed for the requested resource.Enter a valid HTTP method and try again.
+incorrect.request.json=Incorrect JSON object. Please correct the JSON format and try again.
+network.time.out=Connection to the DMaaP MR was timed out.Please try again.
+
+##
+# AAF Errors
+##
+authentication.failure=Access Denied: Invalid Credentials. Enter a valid MechId and Password and try again.
+not.permitted.access.1=Access Denied.User does not have permission to perform
+not.permitted.access.2=operation on Topic:
+unable.to.authorize=Unable to authorize the user. Please try again later.
+
+
+##
+#Topic
+##
+get.topic.failure=Failed to retrieve list of all topics.
+get.topic.details.failure=Failed to retrieve details of topic:
+create.topic.failure=Failed to create topic:
+delete.topic.failure=Failed to delete topic:
+
+consume.msg.error=Error while reading data from topic.
+publish.msg.error=Error while publishing data to topic.
+msg_size_exceeds=Message size exceeds the default size.
+publish.msg.count=Successfully published number of messages :
+
+incorrect.json=Incorrect JSON object.Could not parse JSON. Please correct the JSON format and try again.
+topic.not.exist=No such topic exists.
\ No newline at end of file
--- /dev/null
+###############################################################################
+# ============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.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+## - Default values are shown as commented settings.
+##
+
+###############################################################################
+##
+## HTTP service
+##
+## - 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+## Both Cambria and Kafka make use of Zookeeper.
+##
+#config.zk.servers=172.18.1.1
+config.zk.servers=<zookeeper_host>
+#config.zk.root=/fe3c/cambria/config
+
+
+###############################################################################
+##
+## Kafka Connection
+##
+## Items below are passed through to Kafka's producer and consumer
+## configurations (after removing "kafka.")
+## if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+kafka.metadata.broker.list=<kafka_host>:<kafka_port>
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=6000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+
+###############################################################################
+##
+## Secured Config
+##
+## Some data stored in the config system is sensitive -- API keys and secrets,
+## for example. to protect it, we use an encryption layer for this section
+## of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+#cambria.secureConfig.key[pc569h]=YT3XPyxEmKCTLI2NK+Sjbw==
+#cambria.secureConfig.iv[pc569h]=rMm2jhR3yVnU+u2V9Ugu3Q==
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+## Kafka expects live connections from the consumer to the broker, which
+## obviously doesn't work over connectionless HTTP requests. The Cambria
+## server proxies HTTP requests into Kafka consumer sessions that are kept
+## around for later re-use. Not doing so is costly for setup per request,
+## which would substantially impact a high volume consumer's performance.
+##
+## This complicates Cambria server failover, because we often need server
+## A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+#cambria.consumer.cache.touchFreqMs=120000
+
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+###############################################################################
+##
+## Metrics Reporting
+##
+## This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics #msgrtr.apinode.metrics.dmaap
+metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=com.att.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.openecomp.dmaapBC.topicFactory|:org.openecomp.dmaapBC.topic:
+enforced.topic.name.AAF=com.att
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=com.att.dmaap.mr.ueb
+##############################################################################
+#Mirror Maker Agent
+msgRtr.mirrormakeradmin.aaf=com.att.dmaap.mr.dev.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=com.att.dmaap.mr.dev.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=com.att.dmaap.mr.dev.topicFactory|:com.att.dmaap.mr.dev.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=com.att.dmaap.mr.prod.mm.agent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============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.
+
+ -->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+ <!-- Dependency Injection with annotations -->
+ <context:component-scan
+ base-package="com.att.nsa.cambria.utils,com.att.nsa.cambria.service.impl,com.att.nsa.cambria.exception" />
+
+ <context:property-placeholder
+ location="classpath:msgRtrApi.properties,classpath:DMaaPErrorMesaages.properties" />
+
+
+ <bean id="propertyReader" class="com.att.nsa.cambria.utils.PropertyReader" />
+ <bean
+ class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+ <!-- Next value is the full qualified name of the static setter including
+ method name -->
+ <property name="staticMethod"
+ value="com.att.nsa.cambria.beans.DMaaPKafkaConsumerFactory.populateKafkaInternalDefaultsMap" />
+ <property name="arguments">
+ <list>
+ <ref bean="propertyReader" />
+ </list>
+ </property>
+ </bean>
+
+ <bean id="drumlinRequestRouter"
+ class="com.att.nsa.drumlin.service.framework.routing.DrumlinRequestRouter" />
+
+ <bean id="dMaaPMetricsSet" class="com.att.nsa.cambria.beans.DMaaPMetricsSet">
+ <constructor-arg ref="propertyReader" />
+ </bean>
+
+ <bean id="dMaaPZkClient" class=" com.att.nsa.cambria.beans.DMaaPZkClient">
+ <constructor-arg ref="propertyReader" />
+ </bean>
+
+ <bean id="dMaaPZkConfigDb" class=" com.att.nsa.cambria.beans.DMaaPZkConfigDb">
+ <constructor-arg ref="dMaaPZkClient" />
+ <constructor-arg ref="propertyReader" />
+ </bean>
+
+ <bean id="kafkaPublisher" class=" com.att.nsa.cambria.backends.kafka.KafkaPublisher">
+ <constructor-arg ref="propertyReader" />
+ </bean>
+
+ <bean id="dMaaPKafkaConsumerFactory" class=" com.att.nsa.cambria.beans.DMaaPKafkaConsumerFactory">
+ <constructor-arg ref="propertyReader" />
+ <constructor-arg ref="dMaaPMetricsSet" />
+ <constructor-arg ref="curator" />
+ </bean>
+
+ <bean id="curator" class="com.att.nsa.cambria.utils.DMaaPCuratorFactory"
+ factory-method="getCurator">
+ <constructor-arg ref="propertyReader" />
+ </bean>
+
+ <bean id="dMaaPKafkaMetaBroker" class=" com.att.nsa.cambria.beans.DMaaPKafkaMetaBroker">
+ <constructor-arg ref="propertyReader" />
+ <constructor-arg ref="dMaaPZkClient" />
+ <constructor-arg ref="dMaaPZkConfigDb" />
+ </bean>
+
+ <!-- <bean id="q" class=" com.att.nsa.cambria.backends.memory.MemoryQueue" />
+
+ <bean id="mmb" class=" com.att.nsa.cambria.backends.memory.MemoryMetaBroker">
+ <constructor-arg ref="q" />
+ <constructor-arg ref="dMaaPZkConfigDb" />
+ <constructor-arg ref="propertyReader" />
+ </bean>
+
+ <bean id="dMaaPNsaApiDb" class="com.att.nsa.cambria.beans.DMaaPNsaApiDb"
+ factory-method="buildApiKeyDb">
+ <constructor-arg ref="propertyReader" />
+ <constructor-arg ref="dMaaPZkConfigDb" />
+ </bean>
+
+ <bean id="dMaaPTranDb" class="com.att.nsa.cambria.transaction.DMaaPTransactionDB"
+ factory-method="buildTransactionDb"> <constructor-arg ref="propertyReader"
+ /> <constructor-arg ref="dMaaPZkConfigDb" /> </bean>
+
+ <bean id="dMaaPAuthenticatorImpl" class="com.att.nsa.cambria.security.DMaaPAuthenticatorImpl">
+ <constructor-arg ref="dMaaPNsaApiDb" />
+ </bean>
+ <bean id="defLength" class="com.att.nsa.filter.DefaultLength">
+ <property name="defaultLength" value="${maxcontentlength}"></property>
+ </bean> -->
+
+ <!-- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <property name="location"> <value>msgRtrApi.properties</value> </property>
+ </bean> -->
+
+</beans>
\ No newline at end of file