diff options
Diffstat (limited to 'src/test/java/org/onap/dmaap/mr/test')
23 files changed, 1464 insertions, 516 deletions
diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisher.java b/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisher.java new file mode 100644 index 0000000..503af01 --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisher.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.onap.dmaap.mr.client.MRBatchingPublisher; +import org.onap.dmaap.mr.client.MRClientFactory; +import org.onap.dmaap.mr.client.MRPublisher.Message; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +/** + * A simple publisher that reads from std in, sending each line as a message. + * + * @author author + */ +public class ConsolePublisher { + + private static final Logger logger = LoggerFactory.getLogger(ConsolePublisher.class); + + private ConsolePublisher() { + } + + public static void main(String[] args) throws IOException //throws IOException, InterruptedException + { + // read the hosts(s) from the command line + final String hosts = args.length > 0 ? args[0] : "mr1.onap.com,mr2.onap.com,mr3.onap.com"; + + // read the topic name from the command line + final String topic = args.length > 1 ? args[1] : "TEST-TOPIC"; + + // read the topic name from the command line + final String partition = args.length > 2 ? args[2] : UUID.randomUUID().toString(); + + // set up some batch limits and the compression flag + final int maxBatchSize = 100; + final long maxAgeMs = 250; + final boolean withGzip = false; + + // create our publisher + final MRBatchingPublisher pub = MRClientFactory.createBatchingPublisher(hosts, topic, maxBatchSize, maxAgeMs, withGzip); + + final BufferedReader cin = new BufferedReader(new InputStreamReader(System.in)); + try { + String line = null; + while ((line = cin.readLine()) != null) { + pub.send(partition, line); + } + } finally { + List<Message> leftovers = null; + try { + leftovers = pub.close(10, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.error("Send on close interrupted."); + Thread.currentThread().interrupt(); + } + for (Message m : leftovers) { + logger.error("Unsent message: " + m.fMsg); + } + } + } +} diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisherTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisherTest.java index be0574a..41039d8 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisherTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/ConsolePublisherTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,35 +22,35 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertTrue; + public class ConsolePublisherTest { - @Before - public void setUp() throws Exception { + @Before + public void setUp() throws Exception { - } + } - @After - public void tearDown() throws Exception { + @After + public void tearDown() throws Exception { - } + } - @Test - public void testMain() { + @Test + public void testMain() { - try { - ConsolePublisher.main(null); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); + try { + ConsolePublisher.main(null); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertTrue(true); - } + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/JUnitTestSuite.java b/src/test/java/org/onap/dmaap/mr/test/clients/JUnitTestSuite.java index a0c81a8..8152972 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/JUnitTestSuite.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/JUnitTestSuite.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -21,7 +23,6 @@ package org.onap.dmaap.mr.test.clients; import junit.framework.TestSuite; - import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @@ -29,19 +30,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RunWith(Suite.class) -@SuiteClasses({ SimpleExamplePublisherTest.class, ProtocolTypeConstantsTest.class, - SampleConsumerTest.class, SamplePublisherTest.class, SimpleExampleConsumerTest.class, ConsolePublisherTest.class, - SimpleExamplePublisherWithResponseTest.class, SimpleExampleConsumerWithReturnResponseTest.class,}) +@SuiteClasses({SimpleExamplePublisherTest.class, ProtocolTypeConstantsTest.class, + SampleConsumerTest.class, SamplePublisherTest.class, SimpleExampleConsumerTest.class, ConsolePublisherTest.class, + SimpleExamplePublisherWithResponseTest.class, SimpleExampleConsumerWithReturnResponseTest.class,}) public class JUnitTestSuite { - private static final Logger LOGGER = LoggerFactory.getLogger(JUnitTestSuite.class); + private static final Logger logger = LoggerFactory.getLogger(JUnitTestSuite.class); + + public static void main(String[] args) { + logger.info("Running the test suite"); - public static void main(String[] args) { - LOGGER.info("Running the test suite"); - - TestSuite tstSuite = new TestSuite(); - LOGGER.info("Total Test Counts " + tstSuite.countTestCases()); - } + TestSuite tstSuite = new TestSuite(); + logger.info("Total Test Counts " + tstSuite.countTestCases()); + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/ProtocolTypeConstantsTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/ProtocolTypeConstantsTest.java index 573be98..1dd8381 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/ProtocolTypeConstantsTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/ProtocolTypeConstantsTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,38 +22,39 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.onap.dmaap.mr.client.ProtocolType; + +import static org.junit.Assert.assertTrue; public class ProtocolTypeConstantsTest { - private ProtocolTypeConstants constants = null; + private ProtocolType constants = null; + + @Before + public void setUp() throws Exception { + // constants = new ProtocolTypeConstants(); - @Before - public void setUp() throws Exception { - // constants = new ProtocolTypeConstants(); + } - } + @After + public void tearDown() throws Exception { - @After - public void tearDown() throws Exception { + } - } + @Test + public void testGetValue() { - @Test - public void testGetValue() { + try { + constants.getValue(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertTrue(true); - try { - constants.getValue(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); + } - } - } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumer.java b/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumer.java new file mode 100644 index 0000000..215ddda --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumer.java @@ -0,0 +1,81 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.onap.dmaap.mr.client.MRClientFactory; +import org.onap.dmaap.mr.client.MRConsumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.LinkedList; + +public class SampleConsumer { + private SampleConsumer() { + } + + public static void main(String[] args) { + final Logger logger = LoggerFactory.getLogger(SampleConsumer.class); + + + logger.info("Sample Consumer Class executing"); + final String topic = "org.onap.dmaap.mr.testingTopic"; + final String url = (args.length > 1 ? args[1] : "localhost:8181"); + final String group = (args.length > 2 ? args[2] : "grp"); + + final String id = (args.length > 3 ? args[3] : "1"); + + long count = 0; + long nextReport = 5000; + + final long startMs = System.currentTimeMillis(); + + final LinkedList<String> urlList = new LinkedList<>(); + for (String u : url.split(",")) { + urlList.add(u); + } + + final MRConsumer cc = MRClientFactory.createConsumer(urlList, topic, group, id, 10 * 1000, 1000, null, "CG0TXc2Aa3v8LfBk", "pj2rhxJWKP23pgy8ahMnjH88"); + try { + while (true) { + for (String msg : cc.fetch()) { + logger.info("" + (++count) + ": " + msg); + } + + if (count > nextReport) { + nextReport += 5000; + + final long endMs = System.currentTimeMillis(); + final long elapsedMs = endMs - startMs; + final double elapsedSec = elapsedMs / 1000.0; + final double eps = count / elapsedSec; + logger.info("Consumed " + count + " in " + elapsedSec + "; " + eps + " eps"); + } + logger.info("" + (++count) + ": consumed message"); + } + } catch (Exception x) { + logger.error(x.getClass().getName() + ": " + x.getMessage()); + throw new IllegalArgumentException(x); + } + } +} diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumerTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumerTest.java index 8d359f4..1c95f1d 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumerTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SampleConsumerTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,34 +22,34 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertTrue; + public class SampleConsumerTest { - @Before - public void setUp() throws Exception { + @Before + public void setUp() throws Exception { - } + } - @After - public void tearDown() throws Exception { + @After + public void tearDown() throws Exception { - } + } - @Test - public void testMain() { + @Test + public void testMain() { - try { - SampleConsumer.main( new String[0]); - } catch (Exception e) { - assertTrue(true); - } - assertTrue(true); + try { + SampleConsumer.main(new String[0]); + } catch (Exception e) { + assertTrue(true); + } + assertTrue(true); - } + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisher.java b/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisher.java new file mode 100644 index 0000000..0c80194 --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisher.java @@ -0,0 +1,82 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.json.JSONObject; +import org.onap.dmaap.mr.client.MRBatchingPublisher; +import org.onap.dmaap.mr.client.MRClientBuilders.PublisherBuilder; +import org.onap.dmaap.mr.client.MRPublisher.Message; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class SamplePublisher { + public static void main(String[] args) throws IOException, InterruptedException { + final Logger logger = LoggerFactory.getLogger(SampleConsumer.class); + // read the hosts(s) from the command line + final String hosts = (args.length > 0 ? args[0] : "localhost:8181"); + + // read the topic name from the command line + + final String topic = (args.length > 1 ? args[1] : "org.onap.dmaap.mr.testingTopic"); + + // set up some batch limits and the compression flag + final int maxBatchSize = 100; + final int maxAgeMs = 250; + final boolean withGzip = false; + + // create our publisher + + final MRBatchingPublisher pub = new PublisherBuilder(). + usingHosts(hosts). + onTopic(topic).limitBatch(maxBatchSize, maxAgeMs). + authenticatedBy("CG0TXc2Aa3v8LfBk", "pj2rhxJWKP23pgy8ahMnjH88"). + build(); + // publish some messages + final JSONObject msg1 = new JSONObject(); + msg1.put("name", "tttttttttttttttt"); + msg1.put("greeting", "ooooooooooooooooo"); + pub.send("MyPartitionKey", msg1.toString()); + + final JSONObject msg2 = new JSONObject(); + msg2.put("now", System.currentTimeMillis()); + pub.send("MyOtherPartitionKey", msg2.toString()); + + // ... + + // close the publisher to make sure everything's sent before exiting. The batching + // publisher interface allows the app to get the set of unsent messages. It could + // write them to disk, for example, to try to send them later. + final List<Message> stuck = pub.close(20, TimeUnit.SECONDS); + if (!stuck.isEmpty()) { + logger.warn(stuck.size() + " messages unsent"); + } else { + logger.info("Clean exit; all messages sent."); + } + } +} diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisherTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisherTest.java index 33f80e5..7c74a05 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisherTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SamplePublisherTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,35 +22,35 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertTrue; + public class SamplePublisherTest { - @Before - public void setUp() throws Exception { + @Before + public void setUp() throws Exception { - } + } - @After - public void tearDown() throws Exception { + @After + public void tearDown() throws Exception { - } + } - @Test - public void testMain() { + @Test + public void testMain() { - try { - SamplePublisher.main( new String[0]); - } catch (Exception e) { - // TODO Auto-generated catch block - assertTrue(true); - } - assertTrue(true); + try { + SamplePublisher.main(new String[0]); + } catch (Exception e) { + // TODO Auto-generated catch block + assertTrue(true); + } + assertTrue(true); - } + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumer.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumer.java new file mode 100644 index 0000000..feb825d --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumer.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.onap.dmaap.mr.client.MRClientFactory; +import org.onap.dmaap.mr.client.MRConsumer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.util.Properties; + +public class SimpleExampleConsumer { + + static FileWriter routeWriter = null; + static Properties props = null; + static FileReader routeReader = null; + + public static void main(String[] args) { + final Logger logger = LoggerFactory.getLogger(SimpleExampleConsumer.class); + + long count = 0; + long nextReport = 5000; + + final long startMs = System.currentTimeMillis(); + + try { + String routeFilePath = "/src/main/resources/dme2/preferredRoute.txt"; + + File fo = new File(routeFilePath); + if (!fo.exists()) { + routeWriter = new FileWriter(new File(routeFilePath)); + } + routeReader = new FileReader(new File(routeFilePath)); + props = new Properties(); + final MRConsumer cc = MRClientFactory.createConsumer("/src/main/resources/dme2/consumer.properties"); + int i = 0; + while (i < 10) { + Thread.sleep(2); + i++; + for (String msg : cc.fetch()) { + + System.out.println(msg); + } + + if (count > nextReport) { + nextReport += 5000; + + final long endMs = System.currentTimeMillis(); + final long elapsedMs = endMs - startMs; + final double elapsedSec = elapsedMs / 1000.0; + final double eps = count / elapsedSec; + System.out.println("Consumed " + count + " in " + elapsedSec + "; " + eps + " eps"); + } + } + } catch (InterruptedException e) { + logger.error("Interrupted!", e); + // Restore interrupted state... + Thread.currentThread().interrupt(); + } catch (Exception x) { + System.err.println(x.getClass().getName() + ": " + x.getMessage()); + logger.error("exception: ", x); + } + } +} diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerTest.java index 1ccc839..532e040 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,35 +22,35 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertTrue; + public class SimpleExampleConsumerTest { - @Before - public void setUp() throws Exception { + @Before + public void setUp() throws Exception { - } + } - @After - public void tearDown() throws Exception { + @After + public void tearDown() throws Exception { - } + } - @Test - public void testMain() { + @Test + public void testMain() { - try { - SimpleExampleConsumer.main(null); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); + try { + SimpleExampleConsumer.main(null); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertTrue(true); - } + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponse.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponse.java new file mode 100644 index 0000000..6374ab5 --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponse.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.onap.dmaap.mr.client.MRClientFactory; +import org.onap.dmaap.mr.client.MRConsumer; +import org.onap.dmaap.mr.client.response.MRConsumerResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.util.Properties; + +public class SimpleExampleConsumerWithReturnResponse { + + private static final Logger logger = LoggerFactory.getLogger(SimpleExampleConsumerWithReturnResponse.class); + + static FileWriter routeWriter = null; + static Properties props = null; + static FileReader routeReader = null; + + public static void main(String[] args) { + + long count = 0; + long nextReport = 5000; + // remove while true and limite execution time in seconds + int timeMax = 86400; // one day + long endDate = System.currentTimeMillis() + timeMax * 1000; + + final long startMs = System.currentTimeMillis(); + + try { + String routeFilePath = "src/main/resources/dme2/preferredRoute.txt"; + + + File fo = new File(routeFilePath); + if (!fo.exists()) { + routeWriter = new FileWriter(new File(routeFilePath)); + } + routeReader = new FileReader(new File(routeFilePath)); + props = new Properties(); + final MRConsumer cc = MRClientFactory.createConsumer("src/main/resources/dme2/consumer.properties"); + while (System.currentTimeMillis() < endDate) { + MRConsumerResponse mrConsumerResponse = cc.fetchWithReturnConsumerResponse(); + System.out.println("mrConsumerResponse code :" + mrConsumerResponse.getResponseCode()); + + System.out.println("mrConsumerResponse Message :" + mrConsumerResponse.getResponseMessage()); + + System.out.println("mrConsumerResponse ActualMessage :" + mrConsumerResponse.getActualMessages()); + + if (count > nextReport) { + nextReport += 5000; + + final long endMs = System.currentTimeMillis(); + final long elapsedMs = endMs - startMs; + final double elapsedSec = elapsedMs / 1000.0; + final double eps = count / elapsedSec; + System.out.println("Consumed " + count + " in " + elapsedSec + "; " + eps + " eps"); + } + } + } catch (Exception x) { + System.err.println(x.getClass().getName() + ": " + x.getMessage()); + logger.error("exception: ", x); + } + } + +} diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponseTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponseTest.java index d814125..0dc04ea 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponseTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExampleConsumerWithReturnResponseTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,34 +22,34 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertTrue; + public class SimpleExampleConsumerWithReturnResponseTest { - @Before - public void setUp() throws Exception { + @Before + public void setUp() throws Exception { - } + } - @After - public void tearDown() throws Exception { + @After + public void tearDown() throws Exception { - } + } - @Test - public void testMain() { + @Test + public void testMain() { - try { - SimpleExampleConsumerWithReturnResponse.main(null); - } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); - } - assertTrue(true); + try { + SimpleExampleConsumerWithReturnResponse.main(null); + } catch (Exception e) { + // TODO Auto-generated catch block e.printStackTrace(); + } + assertTrue(true); - } + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisher.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisher.java new file mode 100644 index 0000000..a30d45d --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisher.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.json.JSONObject; +import org.onap.dmaap.mr.client.MRBatchingPublisher; +import org.onap.dmaap.mr.client.MRClientFactory; +import org.onap.dmaap.mr.client.MRPublisher.Message; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; +import java.util.Properties; +import java.util.concurrent.TimeUnit; + +/** + * An example of how to use the Java publisher. + * + * @author author + */ +public class SimpleExamplePublisher { + static FileWriter routeWriter = null; + static Properties props = null; + static FileReader routeReader = null; + + public void publishMessage(String producerFilePath) throws IOException, InterruptedException, Exception { + + // create our publisher + final MRBatchingPublisher pub = MRClientFactory.createBatchingPublisher(producerFilePath); + // publish some messages + final JSONObject msg1 = new JSONObject(); + msg1.put("Name", "Sprint"); + + pub.send("First cambria messge"); + pub.send("MyPartitionKey", msg1.toString()); + + final JSONObject msg2 = new JSONObject(); + + + // ... + + // close the publisher to make sure everything's sent before exiting. The batching + // publisher interface allows the app to get the set of unsent messages. It could + // write them to disk, for example, to try to send them later. + final List<Message> stuck = pub.close(20, TimeUnit.SECONDS); + if (stuck.isEmpty()) { + System.err.println(stuck.size() + " messages unsent"); + } else { + System.out.println("Clean exit; all messages sent."); + } + } + + public static void main(String[] args) throws InterruptedException, Exception { + + String routeFilePath = "/src/main/resources/dme2/preferredRoute.txt"; + + SimpleExamplePublisher publisher = new SimpleExamplePublisher(); + + + File fo = new File(routeFilePath); + if (!fo.exists()) { + routeWriter = new FileWriter(new File(routeFilePath)); + } + routeReader = new FileReader(new File(routeFilePath)); + props = new Properties(); + publisher.publishMessage("/src/main/resources/dme2/producer.properties"); + } + +} + diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherTest.java index 43faf5e..5449400 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,61 +22,61 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.io.IOException; + +import static org.junit.Assert.assertTrue; + public class SimpleExamplePublisherTest { - private SimpleExamplePublisher pub = null; - - @Before - public void setUp() throws Exception { - pub = new SimpleExamplePublisher(); - - } - - @After - public void tearDown() throws Exception { - - } - - @Test - public void testPublishMessage() { - try { - pub.publishMessage("/producer"); - } catch (NullPointerException e) { - assertTrue(true); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - assertTrue(true); - - } - - @Test - public void testMain() { - - try { - SimpleExamplePublisher.main(null); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); - - } - - + private SimpleExamplePublisher pub = null; + + @Before + public void setUp() throws Exception { + pub = new SimpleExamplePublisher(); + + } + + @After + public void tearDown() throws Exception { + + } + + @Test + public void testPublishMessage() { + try { + pub.publishMessage("/producer"); + } catch (NullPointerException e) { + assertTrue(true); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + assertTrue(true); + + } + + @Test + public void testMain() { + + try { + SimpleExamplePublisher.main(null); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertTrue(true); + + } + } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponse.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponse.java new file mode 100644 index 0000000..08bc778 --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponse.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.clients; + +import org.json.JSONObject; +import org.onap.dmaap.mr.client.MRBatchingPublisher; +import org.onap.dmaap.mr.client.MRClientFactory; +import org.onap.dmaap.mr.client.response.MRPublisherResponse; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Properties; + +/** + * An example of how to use the Java publisher. + * + * @author author + */ +public class SimpleExamplePublisherWithResponse { + static FileWriter routeWriter = null; + static Properties props = null; + static FileReader routeReader = null; + + public static void main(String[] args) throws InterruptedException, Exception { + + String routeFilePath = "src/main/resources/dme2/preferredRoute.txt"; + String msgCount = args[0]; + SimpleExamplePublisherWithResponse publisher = new SimpleExamplePublisherWithResponse(); + File fo = new File(routeFilePath); + if (!fo.exists()) { + routeWriter = new FileWriter(new File(routeFilePath)); + } + routeReader = new FileReader(new File(routeFilePath)); + props = new Properties(); + int i = 0; + while (i < Integer.valueOf(msgCount)) { + publisher.publishMessage("src/main/resources/dme2/producer.properties", Integer.valueOf(msgCount)); + i++; + } + } + + public void publishMessage(String producerFilePath, int count) throws IOException, InterruptedException { + // create our publisher + final MRBatchingPublisher pub = MRClientFactory.createBatchingPublisher(producerFilePath, true); + // publish some messages + final JSONObject msg1 = new JSONObject(); + + msg1.put("Partition:1", "Message:" + count); + msg1.put("greeting", "Hello .."); + + + pub.send("1", msg1.toString()); + pub.send("1", msg1.toString()); + + MRPublisherResponse res = pub.sendBatchWithResponse(); + + System.out.println("Pub response->" + res.toString()); + } + + +} diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponseTest.java b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponseTest.java index 08dec2b..0b6e182 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponseTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/SimpleExamplePublisherWithResponseTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,48 +22,43 @@ package org.onap.dmaap.mr.test.clients; -import static org.junit.Assert.assertTrue; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.io.FileNotFoundException; +import java.io.IOException; + +import static org.junit.Assert.assertTrue; + public class SimpleExamplePublisherWithResponseTest { - - private SimpleExamplePublisherWithResponse pub = null; - - @Before - public void setUp() throws Exception { - pub = new SimpleExamplePublisherWithResponse(); - } - @After - public void tearDown() throws Exception { + private SimpleExamplePublisherWithResponse pub = null; + + @Before + public void setUp() throws Exception { + pub = new SimpleExamplePublisherWithResponse(); + } - } + @After + public void tearDown() throws Exception { - @Test - public void testMain() { + } - try { - SimpleExamplePublisherWithResponse.main( new String[0]); - } catch (Exception e) { - assertTrue(true); - } - assertTrue(true); + @Test + public void testMain() { - } - - @Test - public void testPublishMessage() { + try { + SimpleExamplePublisherWithResponse.main(new String[0]); + } catch (Exception e) { + assertTrue(true); + } + assertTrue(true); - try { - pub.publishMessage("/producer", 100); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); + } - } + @Test(expected = FileNotFoundException.class) + public void testPublishMessage() throws IOException, InterruptedException { + pub.publishMessage("/producer", 100); + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/clients/TestRunner.java b/src/test/java/org/onap/dmaap/mr/test/clients/TestRunner.java index 6db09f8..0b4a74b 100644 --- a/src/test/java/org/onap/dmaap/mr/test/clients/TestRunner.java +++ b/src/test/java/org/onap/dmaap/mr/test/clients/TestRunner.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -27,16 +29,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestRunner { - private static final Logger LOGGER = LoggerFactory.getLogger(TestRunner.class); + private static final Logger logger = LoggerFactory.getLogger(TestRunner.class); + + public static void main(String[] args) { + // TODO Auto-generated method stub + Result result = JUnitCore.runClasses(JUnitTestSuite.class); + for (Failure failure : result.getFailures()) { + logger.info(failure.toString()); - public static void main(String[] args) { - // TODO Auto-generated method stub - Result result = JUnitCore.runClasses(JUnitTestSuite.class); - for (Failure failure : result.getFailures()) { - LOGGER.info(failure.toString()); - - } - LOGGER.info(String.valueOf(result.wasSuccessful())); - } + } + logger.info(String.valueOf(result.wasSuccessful())); + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/support/JUnitTestSuite.java b/src/test/java/org/onap/dmaap/mr/test/support/JUnitTestSuite.java index 3c3b4c8..d244f34 100644 --- a/src/test/java/org/onap/dmaap/mr/test/support/JUnitTestSuite.java +++ b/src/test/java/org/onap/dmaap/mr/test/support/JUnitTestSuite.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -21,7 +23,6 @@ package org.onap.dmaap.mr.test.support; import junit.framework.TestSuite; - import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @@ -29,17 +30,17 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @RunWith(Suite.class) -@SuiteClasses({ MRBatchingPublisherMockTest.class, MRConsumerMockTest.class,}) +@SuiteClasses({MRBatchingPublisherMockTest.class, MRConsumerMockTest.class,}) public class JUnitTestSuite { - private static final Logger LOGGER = LoggerFactory.getLogger(JUnitTestSuite.class); + private static final Logger logger = LoggerFactory.getLogger(JUnitTestSuite.class); + + public static void main(String[] args) { + logger.info("Running the test suite"); - public static void main(String[] args) { - LOGGER.info("Running the test suite"); - - TestSuite tstSuite = new TestSuite(); - LOGGER.info("Total Test Counts " + tstSuite.countTestCases()); - } + TestSuite tstSuite = new TestSuite(); + logger.info("Total Test Counts " + tstSuite.countTestCases()); + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMock.java b/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMock.java new file mode 100644 index 0000000..beaf9e9 --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMock.java @@ -0,0 +1,167 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.support; + +import org.onap.dmaap.mr.client.MRBatchingPublisher; +import org.onap.dmaap.mr.client.response.MRPublisherResponse; +import org.slf4j.Logger; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +/** + * A helper for unit testing systems that use a MRPublisher. When setting + * up your test, inject an instance into MRClientFactory to have it return + * the mock client. + * + * @author author + */ +public class MRBatchingPublisherMock implements MRBatchingPublisher { + public class Entry { + public Entry(String partition, String msg) { + fPartition = partition; + fMessage = msg; + } + + @Override + public String toString() { + return fMessage; + } + + public final String fPartition; + public final String fMessage; + } + + public MRBatchingPublisherMock() { + fCaptures = new LinkedList<>(); + } + + public interface Listener { + void onMessage(Entry e); + } + + public void addListener(Listener listener) { + fListeners.add(listener); + } + + public List<Entry> getCaptures() { + return getCaptures(new MessageFilter() { + @Override + public boolean match(String msg) { + return true; + } + }); + } + + public interface MessageFilter { + boolean match(String msg); + } + + public List<Entry> getCaptures(MessageFilter filter) { + final LinkedList<Entry> result = new LinkedList<>(); + for (Entry capture : fCaptures) { + if (filter.match(capture.fMessage)) { + result.add(capture); + } + } + return result; + } + + public int received() { + return fCaptures.size(); + } + + public void reset() { + fCaptures.clear(); + } + + @Override + public int send(String partition, String msg) { + final Entry e = new Entry(partition, msg); + + fCaptures.add(e); + for (Listener l : fListeners) { + l.onMessage(e); + } + return 1; + } + + @Override + public int send(Message msg) { + return send(msg.fPartition, msg.fMsg); + } + + @Override + public int send(String msg) { + return 1; + + } + + @Override + public int send(Collection<Message> msgs) { + int sum = 0; + for (Message m : msgs) { + sum += send(m); + } + return sum; + } + + @Override + public int getPendingMessageCount() { + return 0; + } + + @Override + public List<Message> close(long timeout, TimeUnit timeoutUnits) { + return new LinkedList<>(); + } + + @Override + public void close() { + } + + @Override + public void setApiCredentials(String apiKey, String apiSecret) { + } + + @Override + public void clearApiCredentials() { + } + + @Override + public void logTo(Logger log) { + } + + private final LinkedList<Entry> fCaptures; + private LinkedList<Listener> fListeners = new LinkedList<>(); + + @Override + public MRPublisherResponse sendBatchWithResponse() { + // TODO Auto-generated method stub + return null; + } +} diff --git a/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMockTest.java b/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMockTest.java index af76c52..1de5bcb 100644 --- a/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMockTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/support/MRBatchingPublisherMockTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,166 +22,165 @@ package org.onap.dmaap.mr.test.support; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; - import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.onap.dmaap.mr.client.MRPublisher.Message; -import org.onap.dmaap.mr.client.MRPublisher.message; +import java.util.ArrayList; + +import static org.junit.Assert.assertTrue; public class MRBatchingPublisherMockTest { - private MRBatchingPublisherMock pub = null; + private MRBatchingPublisherMock pub = null; + + private MRBatchingPublisherMock.Entry entry = null; + + @Before + public void setUp() throws Exception { + pub = new MRBatchingPublisherMock(); + entry = pub.new Entry("partition", "msg"); + + } + + @After + public void tearDown() throws Exception { + + } + + @Test + public void testToString() { + + entry.toString(); + assertTrue(true); + + } + + @Test + public void testAddListener() { + + pub.addListener(null); + assertTrue(true); + + } + + @Test + public void testGetCaptures() { + + pub.getCaptures(); + assertTrue(true); + + } - private MRBatchingPublisherMock.Entry entry = null; + @Test + public void testGetCaptures2() { - @Before - public void setUp() throws Exception { - pub = new MRBatchingPublisherMock(); - entry = pub.new Entry("partition", "msg"); + pub.getCaptures(null); + assertTrue(true); - } + } - @After - public void tearDown() throws Exception { + @Test + public void testReceived() { - } + pub.received(); + assertTrue(true); - @Test - public void testToString() { + } - entry.toString(); - assertTrue(true); + @Test + public void testResend() { - } + pub.reset(); + assertTrue(true); - @Test - public void testAddListener() { + } - pub.addListener(null); - assertTrue(true); + @Test + public void testSend() { - } + pub.send("partition", "msg"); + assertTrue(true); - @Test - public void testGetCaptures() { + } - pub.getCaptures(); - assertTrue(true); + @Test + public void testSend2() { - } + pub.send("msg"); + assertTrue(true); - @Test - public void testGetCaptures2() { + } - pub.getCaptures(null); - assertTrue(true); + @Test + public void testSend3() { + //sending message m obj + pub.send(new ArrayList<Message>()); + assertTrue(true); - } + } - @Test - public void testReceived() { + @Test + public void testSend4() { + //sending collection of message m objects + pub.send(new Message("partition", "msg")); + assertTrue(true); - pub.received(); - assertTrue(true); + } - } - - @Test - public void testResend() { + @Test + public void testSendBatchWithResponse() { - pub.reset(); - assertTrue(true); + pub.sendBatchWithResponse(); + assertTrue(true); - } - - @Test - public void testSend() { + } - pub.send("partition", "msg"); - assertTrue(true); + @Test + public void testLogTo() { - } - - @Test - public void testSend2() { + pub.logTo(null); + assertTrue(true); - pub.send("msg"); - assertTrue(true); + } - } - - @Test - public void testSend3() { - //sending message m obj - pub.send(new ArrayList<message>()); - assertTrue(true); + @Test + public void testClearApiCredentials() { - } - - @Test - public void testSend4() { - //sending collection of message m objects - pub.send(new message("partition", "msg")); - assertTrue(true); + pub.clearApiCredentials(); + assertTrue(true); - } - - @Test - public void testSendBatchWithResponse() { + } - pub.sendBatchWithResponse(); - assertTrue(true); + @Test + public void testSetApiCredentials() { - } - - @Test - public void testLogTo() { + pub.setApiCredentials("apikey", "apisecret"); + assertTrue(true); - pub.logTo(null); - assertTrue(true); + } - } - - @Test - public void testClearApiCredentials() { + @Test + public void testClose() { - pub.clearApiCredentials(); - assertTrue(true); + pub.close(); + assertTrue(true); - } - - @Test - public void testSetApiCredentials() { + } - pub.setApiCredentials("apikey", "apisecret"); - assertTrue(true); + @Test + public void testClose2() { - } - - @Test - public void testClose() { + pub.close(100, null); + assertTrue(true); - pub.close(); - assertTrue(true); + } - } - - @Test - public void testClose2() { + @Test + public void testGetPendingMessageCount() { - pub.close(100, null); - assertTrue(true); + pub.getPendingMessageCount(); + assertTrue(true); - } - - @Test - public void testGetPendingMessageCount() { - - pub.getPendingMessageCount(); - assertTrue(true); - - } + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMock.java b/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMock.java new file mode 100644 index 0000000..55cd245 --- /dev/null +++ b/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMock.java @@ -0,0 +1,148 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * org.onap.dmaap + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ + * 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.test.support; + +import org.onap.dmaap.mr.client.MRConsumer; +import org.onap.dmaap.mr.client.response.MRConsumerResponse; +import org.slf4j.Logger; + +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; + +/** + * A helper for unit testing systems that use a MRConsumer. When setting + * up your test, inject an instance into MRClientFactory to have it return + * the mock client. + * + * @author author + */ +public class MRConsumerMock implements MRConsumer { + public class Entry { + public Entry(long waitMs, int statusCode, List<String> msgs) { + fWaitMs = waitMs; + fStatusCode = statusCode; + fStatusMsg = null; + fMsgs = new LinkedList<>(msgs); + } + + public Entry(long waitMs, int statusCode, String statusMsg) { + fWaitMs = waitMs; + fStatusCode = statusCode; + fStatusMsg = statusMsg; + fMsgs = null; + } + + public LinkedList<String> run() throws IOException { + try { + Thread.sleep(fWaitMs); + if (fStatusCode >= 200 && fStatusCode <= 299) { + return fMsgs; + } + throw new IOException("" + fStatusCode + " " + fStatusMsg); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IOException(e); + } + } + + private final long fWaitMs; + private final int fStatusCode; + private final String fStatusMsg; + private final LinkedList<String> fMsgs; + } + + public MRConsumerMock() { + fReplies = new LinkedList<>(); + } + + @Override + public void close() { + } + + @Override + public void setApiCredentials(String apiKey, String apiSecret) { + } + + @Override + public void clearApiCredentials() { + } + + public synchronized void add(Entry e) { + fReplies.add(e); + } + + public void addImmediateMsg(String msg) { + addDelayedMsg(0, msg); + } + + public void addDelayedMsg(long delay, String msg) { + final LinkedList<String> list = new LinkedList<>(); + list.add(msg); + add(new Entry(delay, 200, list)); + } + + public void addImmediateMsgGroup(List<String> msgs) { + addDelayedMsgGroup(0, msgs); + } + + public void addDelayedMsgGroup(long delay, List<String> msgs) { + final LinkedList<String> list = new LinkedList<>(msgs); + add(new Entry(delay, 200, list)); + } + + public void addImmediateError(int statusCode, String statusText) { + add(new Entry(0, statusCode, statusText)); + } + + @Override + public Iterable<String> fetch() throws IOException { + return fetch(-1, -1); + } + + @Override + public Iterable<String> fetch(int timeoutMs, int limit) throws IOException { + return fReplies.size() > 0 ? fReplies.removeFirst().run() : new LinkedList<String>(); + } + + @Override + public void logTo(Logger log) { + } + + private final LinkedList<Entry> fReplies; + + @Override + public MRConsumerResponse fetchWithReturnConsumerResponse() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MRConsumerResponse fetchWithReturnConsumerResponse(int timeoutMs, + int limit) { + // TODO Auto-generated method stub + return null; + } +} diff --git a/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMockTest.java b/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMockTest.java index b3c4174..de5420a 100644 --- a/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMockTest.java +++ b/src/test/java/org/onap/dmaap/mr/test/support/MRConsumerMockTest.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -20,150 +22,150 @@ package org.onap.dmaap.mr.test.support; -import static org.junit.Assert.assertTrue; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; import java.io.IOException; import java.util.ArrayList; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import static org.junit.Assert.assertTrue; public class MRConsumerMockTest { - private MRConsumerMock cons = null; - private MRConsumerMock.Entry entry = null; - - @Before - public void setUp() throws Exception { - cons = new MRConsumerMock(); - entry = cons.new Entry(100, 200, "statusMsg"); - - } - - @After - public void tearDown() throws Exception { - - } - - @Test - public void testClose() { - - cons.close(); - assertTrue(true); - - } - - @Test - public void testRun() { - try { - entry.run(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - assertTrue(true); - - } - - @Test - public void testSetApiCredentials() { - cons.setApiCredentials("apikey", "apisecret"); - assertTrue(true); - - } - - @Test - public void testClearApiCredentials() { - cons.clearApiCredentials(); - assertTrue(true); - - } - - @Test - public void testAdd() { - cons.add(entry); - assertTrue(true); - - } - - @Test - public void testAddImmediateMsg() { - cons.addImmediateMsg("ImmediateMsg"); - assertTrue(true); - - } - - @Test - public void testAddDelayedMsg() { - cons.addDelayedMsg(100, "msg"); - assertTrue(true); - - } - - @Test - public void testAddImmediateMsgGroup() { - cons.addImmediateMsgGroup(new ArrayList<String>()); - assertTrue(true); - - } - - @Test - public void testAddDelayedMsgGroup() { - cons.addDelayedMsgGroup(100,new ArrayList<String>()); - assertTrue(true); - - } - - @Test - public void testAddImmediateError() { - cons.addImmediateError(200, "OK"); - assertTrue(true); - - } - - @Test - public void testFetch() { - try { - cons.fetch(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); - - } - - @Test - public void testFetch2() { - try { - cons.fetch(100, 200); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertTrue(true); - - } - - @Test - public void testLogTo() { - cons.logTo(null); - assertTrue(true); - - } - - @Test - public void testFetchWithReturnConsumerResponse() { - cons.fetchWithReturnConsumerResponse(); - assertTrue(true); - - } - - @Test - public void testGetchWithReturnConsumerResponse() { - cons.fetchWithReturnConsumerResponse(100,200); - assertTrue(true); - - } + private MRConsumerMock cons = null; + private MRConsumerMock.Entry entry = null; + + @Before + public void setUp() throws Exception { + cons = new MRConsumerMock(); + entry = cons.new Entry(100, 200, "statusMsg"); + + } + + @After + public void tearDown() throws Exception { + + } + + @Test + public void testClose() { + + cons.close(); + assertTrue(true); + + } + + @Test + public void testRun() { + try { + entry.run(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + assertTrue(true); + + } + + @Test + public void testSetApiCredentials() { + cons.setApiCredentials("apikey", "apisecret"); + assertTrue(true); + + } + + @Test + public void testClearApiCredentials() { + cons.clearApiCredentials(); + assertTrue(true); + + } + + @Test + public void testAdd() { + cons.add(entry); + assertTrue(true); + + } + + @Test + public void testAddImmediateMsg() { + cons.addImmediateMsg("ImmediateMsg"); + assertTrue(true); + + } + + @Test + public void testAddDelayedMsg() { + cons.addDelayedMsg(100, "msg"); + assertTrue(true); + + } + + @Test + public void testAddImmediateMsgGroup() { + cons.addImmediateMsgGroup(new ArrayList<String>()); + assertTrue(true); + + } + + @Test + public void testAddDelayedMsgGroup() { + cons.addDelayedMsgGroup(100, new ArrayList<String>()); + assertTrue(true); + + } + + @Test + public void testAddImmediateError() { + cons.addImmediateError(200, "OK"); + assertTrue(true); + + } + + @Test + public void testFetch() { + try { + cons.fetch(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertTrue(true); + + } + + @Test + public void testFetch2() { + try { + cons.fetch(100, 200); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertTrue(true); + + } + + @Test + public void testLogTo() { + cons.logTo(null); + assertTrue(true); + + } + + @Test + public void testFetchWithReturnConsumerResponse() { + cons.fetchWithReturnConsumerResponse(); + assertTrue(true); + + } + + @Test + public void testGetchWithReturnConsumerResponse() { + cons.fetchWithReturnConsumerResponse(100, 200); + assertTrue(true); + + } } diff --git a/src/test/java/org/onap/dmaap/mr/test/support/TestRunner.java b/src/test/java/org/onap/dmaap/mr/test/support/TestRunner.java index 69f499f..f10ac2b 100644 --- a/src/test/java/org/onap/dmaap/mr/test/support/TestRunner.java +++ b/src/test/java/org/onap/dmaap/mr/test/support/TestRunner.java @@ -4,12 +4,14 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2021 Orange. + * ================================================================================ * 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. @@ -27,16 +29,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestRunner { - private static final Logger LOGGER = LoggerFactory.getLogger(TestRunner.class); + private static final Logger logger = LoggerFactory.getLogger(TestRunner.class); + + public static void main(String[] args) { + // TODO Auto-generated method stub + Result result = JUnitCore.runClasses(JUnitTestSuite.class); + for (Failure failure : result.getFailures()) { + logger.info(failure.toString()); - public static void main(String[] args) { - // TODO Auto-generated method stub - Result result = JUnitCore.runClasses(JUnitTestSuite.class); - for (Failure failure : result.getFailures()) { - LOGGER.info(failure.toString()); - - } - LOGGER.info(String.valueOf(result.wasSuccessful())); - } + } + logger.info(String.valueOf(result.wasSuccessful())); + } } |