/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2019 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
package org.onap.policy.distribution.main.parameters;
import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
import org.onap.policy.common.endpoints.parameters.RestServerParameters;
import org.onap.policy.common.utils.coder.Coder;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.common.utils.network.NetworkUtil;
import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
import org.onap.policy.distribution.main.testclasses.DummyPolicyDecoderParameterGroup;
import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
public static final String POLICY_NAME = "SamplePolicy";
public static final String DECODER_CONFIGURATION_PARAMETERS = "dummyDecoderConfiguration";
+ public static final String CONFIG_FILE = "src/test/resources/parameters/TestConfigParams.json";
+
private Coder coder = new StandardCoder();
+ /**
+ * Makes a parameter configuration file by substituting an available port number within a
+ * source file.
+ *
+ * @param sourceName original configuration file containing 6969
+ * @return the port that was substituted into the config file
+ * @throws IOException if the config file cannot be created
+ */
+ public static int makeConfigFile(String sourceName) throws IOException {
+ int port = NetworkUtil.allocPort();
+
+ String json = Files.readString(new File("src/test/resources/" + sourceName).toPath());
+ json = json.replace("6969", String.valueOf(port));
+
+ File file = new File(CONFIG_FILE);
+ file.deleteOnExit();
+
+ try (FileOutputStream output = new FileOutputStream(file)) {
+ output.write(json.getBytes(StandardCharsets.UTF_8));
+ }
+
+ return port;
+ }
+
+ /**
+ * Waits for the server to connect to a port.
+ * @param port server's port
+ * @throws InterruptedException if interrupted
+ */
+ public static void awaitServer(int port) throws InterruptedException {
+ if (!NetworkUtil.isTcpPortOpen("localhost", port, 50, 200L)) {
+ throw new IllegalStateException("cannot connect to port " + port);
+ }
+ }
+
/**
* Returns an instance of ReceptionHandlerParameters for test cases.
*
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
- * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import java.io.IOException;
import java.util.Map;
import org.junit.Test;
import org.onap.policy.common.endpoints.parameters.RestServerParameters;
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
* Copyright (C) 2019 Nordix Foundation.
- * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2019-2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
import org.junit.Test;
+import org.mockito.internal.util.reflection.Whitebox;
import org.onap.policy.common.endpoints.http.server.RestServer;
import org.onap.policy.common.endpoints.parameters.RestServerParameters;
import org.onap.policy.common.endpoints.report.HealthCheckReport;
private static final String SELF = NetworkUtil.getHostname();
private static final String NAME = "Policy SSD";
+ private int port;
+
@Test
public void testHealthCheckSuccess() {
final String reportString = "Report [name=Policy SSD, url=" + SELF + ", healthy=true, code=200, message=alive]";
}
@Test
- public void testHealthCheckFailure() {
+ public void testHealthCheckFailure() throws IOException {
+ port = NetworkUtil.allocPort();
final String reportString =
"Report [name=Policy SSD, url=" + SELF + ", healthy=false, code=500, message=not alive]";
final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false);
+ Whitebox.setInternalState(restServerParams, "port", port);
restServerParams.setName(CommonTestData.DISTRIBUTION_GROUP_NAME);
final RestServer restServer = new RestServer(restServerParams, null, DistributionRestController.class);
assertThatCode(() -> {
}).doesNotThrowAnyException();
}
- private Main startDistributionService() {
- final String[] distributionConfigParameters = { "-c", "parameters/DistributionConfigParameters.json" };
+ private Main startDistributionService() throws IOException {
+ port = CommonTestData.makeConfigFile("parameters/DistributionConfigParameters.json");
+ final String[] distributionConfigParameters = { "-c", CommonTestData.CONFIG_FILE };
return new Main(distributionConfigParameters);
}
clientConfig.register(feature);
final Client client = ClientBuilder.newClient(clientConfig);
- final WebTarget webTarget = client.target("http://localhost:6969/healthcheck");
+ final WebTarget webTarget = client.target("http://localhost:" + port + "/healthcheck");
final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
- if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
- throw new IllegalStateException("cannot connect to port 6969");
- }
+ CommonTestData.awaitServer(port);
return invocationBuilder.get(HealthCheckReport.class);
}
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
* Copyright (C) 2019 Nordix Foundation.
- * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020 Nordix Foundation
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
import org.junit.Test;
+import org.mockito.internal.util.reflection.Whitebox;
import org.onap.policy.common.endpoints.http.server.RestServer;
import org.onap.policy.common.endpoints.parameters.RestServerParameters;
import org.onap.policy.common.utils.network.NetworkUtil;
*/
public class TestDistributionStatistics {
+ private int port;
+
@Test
public void testDistributionStatistics_200() {
assertThatCode(() -> {
}
@Test
- public void testDistributionStatistics_500() throws InterruptedException {
+ public void testDistributionStatistics_500() throws InterruptedException, IOException {
+ port = NetworkUtil.allocPort();
final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false);
+ Whitebox.setInternalState(restServerParams, "port", port);
restServerParams.setName(CommonTestData.DISTRIBUTION_GROUP_NAME);
final RestServer restServer = new RestServer(restServerParams, null, DistributionRestController.class);
assertThatCode(() -> {
}).doesNotThrowAnyException();
}
- private Main startDistributionService() {
- final String[] distributionConfigParameters = { "-c", "parameters/DistributionConfigParameters.json" };
+ private Main startDistributionService() throws IOException {
+ port = CommonTestData.makeConfigFile("parameters/DistributionConfigParameters.json");
+ final String[] distributionConfigParameters = { "-c", CommonTestData.CONFIG_FILE };
return new Main(distributionConfigParameters);
}
clientConfig.register(feature);
final Client client = ClientBuilder.newClient(clientConfig);
- final WebTarget webTarget = client.target("http://localhost:6969/statistics");
+ final WebTarget webTarget = client.target("http://localhost:" + port + "/statistics");
final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
- if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
- throw new IllegalStateException("cannot connect to port 6969");
- }
+ CommonTestData.awaitServer(port);
return invocationBuilder.get(StatisticsReport.class);
}
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.junit.Assert.assertEquals;
+import java.io.IOException;
import java.security.SecureRandom;
-import java.security.cert.X509Certificate;
import java.util.Properties;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import org.onap.policy.common.endpoints.report.HealthCheckReport;
import org.onap.policy.common.utils.network.NetworkUtil;
import org.onap.policy.distribution.main.PolicyDistributionException;
+import org.onap.policy.distribution.main.parameters.CommonTestData;
import org.onap.policy.distribution.main.startstop.Main;
/**
private static final String NAME = "Policy SSD";
private static String KEYSTORE = System.getProperty("user.dir") + "/src/test/resources/ssl/policy-keystore";
+ private int port;
+
@Test
public void testHttpsHealthCheckSuccess() {
final String reportString = "Report [name=Policy SSD, url=" + SELF + ", healthy=true, code=200, message=alive]";
}).doesNotThrowAnyException();
}
- private Main startDistributionService() {
+ private Main startDistributionService() throws IOException {
final Properties systemProps = System.getProperties();
systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
System.setProperties(systemProps);
- final String[] distributionConfigParameters = { "-c", "parameters/DistributionConfigParameters_Https.json" };
+ port = CommonTestData.makeConfigFile("parameters/DistributionConfigParameters_Https.json");
+ final String[] distributionConfigParameters = { "-c", CommonTestData.CONFIG_FILE };
return new Main(distributionConfigParameters);
}
private HealthCheckReport performHealthCheck() throws Exception {
- final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
-
- @Override
- public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {
- }
-
- @Override
- public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {
- }
- } };
+ final TrustManager[] noopTrustManager = NetworkUtil.getAlwaysTrustingManager();
final SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(null, noopTrustManager, new SecureRandom());
final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
client.register(feature);
- final WebTarget webTarget = client.target("https://localhost:6969/healthcheck");
+ final WebTarget webTarget = client.target("https://localhost:" + port + "/healthcheck");
final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
- if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
- throw new IllegalStateException("cannot connect to port 6969");
- }
+ CommonTestData.awaitServer(port);
return invocationBuilder.get(HealthCheckReport.class);
}
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.junit.Assert.assertEquals;
+import java.io.IOException;
import java.security.SecureRandom;
-import java.security.cert.X509Certificate;
import java.util.Properties;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import org.junit.Test;
import org.onap.policy.common.utils.network.NetworkUtil;
import org.onap.policy.distribution.main.PolicyDistributionException;
+import org.onap.policy.distribution.main.parameters.CommonTestData;
import org.onap.policy.distribution.main.startstop.Main;
/**
private static String KEYSTORE = System.getProperty("user.dir") + "/src/test/resources/ssl/policy-keystore";
+ private int port;
+
@Test
public void testHttpsDistributionStatistic() {
assertThatCode(() -> {
}).doesNotThrowAnyException();
}
- private Main startDistributionService() {
+ private Main startDistributionService() throws IOException {
final Properties systemProps = System.getProperties();
systemProps.put("javax.net.ssl.keyStore", KEYSTORE);
systemProps.put("javax.net.ssl.keyStorePassword", "Pol1cy_0nap");
System.setProperties(systemProps);
- final String[] distributionConfigParameters = { "-c", "parameters/DistributionConfigParameters_Https.json" };
+ port = CommonTestData.makeConfigFile("parameters/DistributionConfigParameters_Https.json");
+ final String[] distributionConfigParameters = { "-c", CommonTestData.CONFIG_FILE };
return new Main(distributionConfigParameters);
}
}
private StatisticsReport performStatisticCheck() throws Exception {
-
- final TrustManager[] noopTrustManager = new TrustManager[] { new X509TrustManager() {
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
-
- @Override
- public void checkClientTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {
- }
-
- @Override
- public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, final String authType) {
- }
- } };
+ final TrustManager[] noopTrustManager = NetworkUtil.getAlwaysTrustingManager();
final SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(null, noopTrustManager, new SecureRandom());
final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
client.register(feature);
- final WebTarget webTarget = client.target("https://localhost:6969/statistics");
+ final WebTarget webTarget = client.target("https://localhost:" + port + "/statistics");
final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
- if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
- throw new IllegalStateException("cannot connect to port 6969");
- }
+ CommonTestData.awaitServer(port);
return invocationBuilder.get(StatisticsReport.class);
}
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
+ * Modifications Copyright (C) 2020 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.
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.io.IOException;
import org.junit.Test;
import org.onap.policy.distribution.main.PolicyDistributionException;
import org.onap.policy.distribution.main.parameters.CommonTestData;
public class TestDistributionActivator {
@Test
- public void testDistributionActivator() throws PolicyDistributionException {
- final String[] distributionConfigParameters = {"-c", "parameters/DistributionConfigParameters.json"};
+ public void testDistributionActivator() throws PolicyDistributionException, IOException {
+ CommonTestData.makeConfigFile("parameters/DistributionConfigParameters.json");
+ final String[] distributionConfigParameters = { "-c", CommonTestData.CONFIG_FILE };
final DistributionCommandLineArguments arguments =
new DistributionCommandLineArguments(distributionConfigParameters);
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import java.io.IOException;
import org.junit.Test;
import org.onap.policy.distribution.main.PolicyDistributionException;
import org.onap.policy.distribution.main.parameters.CommonTestData;
public class TestMain {
@Test
- public void testMain() throws PolicyDistributionException {
- final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters.json" };
+ public void testMain() throws PolicyDistributionException, IOException {
+ CommonTestData.makeConfigFile("parameters/DistributionConfigParameters.json");
+ final String[] distributionConfigParameters = { "-c", CommonTestData.CONFIG_FILE };
final Main main = new Main(distributionConfigParameters);
assertTrue(main.getParameters().isValid());
assertEquals(CommonTestData.DISTRIBUTION_GROUP_NAME, main.getParameters().getName());
LifecycleApiForwarderParameters.class);
ParameterService.register(parameterGroup);
simulator.startLifecycycleApiSimulator();
- if (!NetworkUtil.isTcpPortOpen("0.0.0.0", 6969, 6, 10000L)) {
+ if (!NetworkUtil.isTcpPortOpen("0.0.0.0", 6969, 50, 200L)) {
throw new IllegalStateException("cannot connect to port 6969");
}
}