X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-interactions%2Fmodel-simulators%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fsimulators%2FDmaapSimulatorTest.java;h=5687e219780b2d365946c91d2b6322f4b50f9db0;hb=71be21fd5b9b52c613bb855f00a79a51e81906dd;hp=50e9bad5bea3681bdcfd7628ccdefddded07cd2f;hpb=aa148d9b5bba6ad23736e939a6d0ec917e761e1e;p=policy%2Fmodels.git diff --git a/models-interactions/model-simulators/src/test/java/org/onap/policy/simulators/DmaapSimulatorTest.java b/models-interactions/model-simulators/src/test/java/org/onap/policy/simulators/DmaapSimulatorTest.java index 50e9bad5b..5687e2197 100644 --- a/models-interactions/model-simulators/src/test/java/org/onap/policy/simulators/DmaapSimulatorTest.java +++ b/models-interactions/model-simulators/src/test/java/org/onap/policy/simulators/DmaapSimulatorTest.java @@ -1,6 +1,8 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019, 2022 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2022 Bell Canada. All rights reserved. + * Modifications Copyright (C) 2023-2024 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,28 +20,35 @@ package org.onap.policy.simulators; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.File; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.util.HashMap; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.onap.policy.common.endpoints.event.comm.TopicEndpointManager; import org.onap.policy.common.endpoints.event.comm.bus.DmaapTopicSink; import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance; +import org.onap.policy.common.endpoints.http.server.internal.JettyJerseyServer; import org.onap.policy.common.endpoints.parameters.TopicParameterGroup; import org.onap.policy.common.utils.coder.StandardCoder; public class DmaapSimulatorTest { - private static final int MAX_WAIT_SEC = 2; - private static final String TOPIC = "MY-TOPIC"; + private static final int MAX_WAIT_SEC = 10; + private static final String TOPIC = "my-topic"; + private static final String AUTH_TOPIC = "my-auth-topic"; + private static final String AUTH_PORT = "3903"; + + private static final HashMap savedValuesMap = new HashMap<>(); /** * Messages from the topic are placed here by the endpoint. @@ -59,11 +68,14 @@ public class DmaapSimulatorTest { @Before public void setUp() throws Exception { assertNotNull(Util.buildDmaapSim()); + setSystemProperties(); + assertNotNull(Util.buildDmaapSim("org/onap/policy/simulators/dmaap/AuthDmaapParameters.json")); - String topicJson = new String(Files.readAllBytes( - new File("src/test/resources/org/onap/policy/simulators/dmaap/TopicParameters.json").toPath()), - StandardCharsets.UTF_8); - topicJson = topicJson.replace("${port}", String.valueOf(Util.DMAAPSIM_SERVER_PORT)); + String topicJson = Files.readString( + new File("src/test/resources/org/onap/policy/simulators/dmaap/TopicParameters.json").toPath()); + topicJson = topicJson + .replace("${port}", String.valueOf(Util.DMAAPSIM_SERVER_PORT)) + .replace("${authPort}", AUTH_PORT); TopicParameterGroup topicConfig = new StandardCoder().decode(topicJson, TopicParameterGroup.class); @@ -73,6 +85,11 @@ public class DmaapSimulatorTest { queue = new LinkedBlockingQueue<>(); } + @AfterClass + public static void tearDownAfterClass() { + clearSystemProperties(); + } + @After public void tearDown() { TopicEndpointManager.getManager().shutdown(); @@ -81,14 +98,96 @@ public class DmaapSimulatorTest { @Test public void test() throws InterruptedException { - TopicEndpointManager.getManager().getDmaapTopicSource(TOPIC) - .register((infra, topic, event) -> queue.add(event)); + // test basic DMaaP simulator (default port, http, no auth) + sendAndPoll(TOPIC); + // test custom DMaaP simulator (custom port, https, basic auth) + sendAndPoll(AUTH_TOPIC); + } - DmaapTopicSink sink = TopicEndpointManager.getManager().getDmaapTopicSink(TOPIC); - sink.send("hello"); - sink.send("world"); + /** + * Sets up keystore and truststore for https test server. + */ + private static void setSystemProperties() { + String keyStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME); + if (keyStoreSystemProperty != null) { + savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, keyStoreSystemProperty); + } + + String keyStorePasswordSystemProperty = + System.getProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME); + if (keyStorePasswordSystemProperty != null) { + savedValuesMap.put(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, + keyStorePasswordSystemProperty); + } + + String trustStoreSystemProperty = System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME); + if (trustStoreSystemProperty != null) { + savedValuesMap.put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, trustStoreSystemProperty); + } + + String trustStorePasswordSystemProperty = + System.getProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME); + if (trustStorePasswordSystemProperty != null) { + savedValuesMap.put(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, + trustStorePasswordSystemProperty); + } + + System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, "src/test/resources/keystore-test"); + System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, "kstest"); + + System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, "src/test/resources/keystore-test"); + System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, "kstest"); + } + /** + * Clears the keystore/truststore properties. + */ + private static void clearSystemProperties() { + if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME)) { + System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME, + savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME)); + savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME); + } else { + System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PROPERTY_NAME); + } + + if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME)) { + System.setProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME, + savedValuesMap.get(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME)); + savedValuesMap.remove(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME); + } else { + System.clearProperty(JettyJerseyServer.SYSTEM_KEYSTORE_PASSWORD_PROPERTY_NAME); + } + + if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME)) { + System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME, + savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME)); + savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME); + } else { + System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PROPERTY_NAME); + } + + if (savedValuesMap.containsKey(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME)) { + System.setProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME, + savedValuesMap.get(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME)); + savedValuesMap.remove(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME); + } else { + System.clearProperty(JettyJerseyServer.SYSTEM_TRUSTSTORE_PASSWORD_PROPERTY_NAME); + } + } + + private void sendAndPoll(String topicName) throws InterruptedException { + TopicEndpointManager.getManager().getDmaapTopicSource(topicName) + .register((infra, topic, event) -> queue.add(event)); + + DmaapTopicSink sink = TopicEndpointManager.getManager().getDmaapTopicSink(topicName); + assertThat(queue.poll(1, TimeUnit.SECONDS)).isNull(); + + sink.send("hello"); assertEquals("hello", queue.poll(MAX_WAIT_SEC, TimeUnit.SECONDS)); + + sink.send("world"); assertEquals("world", queue.poll(MAX_WAIT_SEC, TimeUnit.SECONDS)); } + }