Tie XACML REST Decision
[policy/xacml-pdp.git] / main / src / test / java / org / onap / policy / pdpx / main / rest / TestXacmlPdpStatistics.java
index 303a3cf..8d2f7ce 100644 (file)
 
 package org.onap.policy.pdpx.main.rest;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
+import java.io.File;
+import java.io.IOException;
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Invocation;
 import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
-
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
 import org.junit.Test;
-
+import org.junit.rules.TemporaryFolder;
+import org.onap.policy.common.utils.network.NetworkUtil;
 import org.onap.policy.pdpx.main.PolicyXacmlPdpException;
 import org.onap.policy.pdpx.main.parameters.CommonTestData;
 import org.onap.policy.pdpx.main.parameters.RestServerParameters;
 import org.onap.policy.pdpx.main.rest.XacmlPdpStatisticsManager;
+import org.onap.policy.pdpx.main.rest.model.StatisticsReport;
 import org.onap.policy.pdpx.main.startstop.Main;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,39 +56,63 @@ import org.slf4j.LoggerFactory;
 public class TestXacmlPdpStatistics {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(TestXacmlPdpStatistics.class);
-
+    private static File applicationPath;
+
+    @ClassRule
+    public static final TemporaryFolder applicationFolder = new TemporaryFolder();
+
+    /**
+     * Turn off some debugging and create temporary folder for applications.
+     *
+     * @throws IOException If temporary folder fails
+     */
+    @BeforeClass
+    public static void beforeClass() throws IOException {
+        System.setProperty("org.eclipse.jetty.util.log.class", "org.eclipse.jetty.util.log.StdErrLog");
+        System.setProperty("org.eclipse.jetty.LEVEL", "OFF");
+        applicationPath = applicationFolder.newFolder();
+    }
 
     @Test
     public void testXacmlPdpStatistics_200() throws PolicyXacmlPdpException, InterruptedException {
-        final Main main = startXacmlPdpService();
-        StatisticsReport report = getXacmlPdpStatistics();
-
-        validateReport(report, 0, 200);
-        updateXacmlPdpStatistics();
-        report = getXacmlPdpStatistics();
-        validateReport(report, 1, 200);
-        stopXacmlPdpService(main);
-        XacmlPdpStatisticsManager.resetAllStatistics();
+        try {
+            final Main main = startXacmlPdpService();
+            StatisticsReport report = getXacmlPdpStatistics();
+            validateReport(report, 0, 200);
+            assertThat(report.getTotalPolicyTypesCount()).isGreaterThan(0);
+            updateXacmlPdpStatistics();
+            report = getXacmlPdpStatistics();
+            validateReport(report, 1, 200);
+            stopXacmlPdpService(main);
+            XacmlPdpStatisticsManager.resetAllStatistics();
+        } catch (final Exception e) {
+            LOGGER.error("testApiStatistics_200 failed", e);
+            fail("Test should not throw an exception");
+        }
     }
 
     @Test
     public void testXacmlPdpStatistics_500() throws InterruptedException {
         final RestServerParameters restServerParams = new CommonTestData().getRestServerParameters(false);
         restServerParams.setName(CommonTestData.PDPX_GROUP_NAME);
-
-        final XacmlPdpRestServer restServer = new XacmlPdpRestServer(restServerParams);
-        restServer.start();
-        final StatisticsReport report = getXacmlPdpStatistics();
-
-        validateReport(report, 0, 500);
-        restServer.shutdown();
-        XacmlPdpStatisticsManager.resetAllStatistics();
+        final XacmlPdpRestServer restServer = new XacmlPdpRestServer(restServerParams,
+                applicationPath.getAbsolutePath());
+
+        try {
+            restServer.start();
+            final StatisticsReport report = getXacmlPdpStatistics();
+            validateReport(report, 0, 500);
+            restServer.shutdown();
+            XacmlPdpStatisticsManager.resetAllStatistics();
+        } catch (final Exception e) {
+            LOGGER.error("testApiStatistics_500 failed", e);
+            fail("Test should not throw an exception");
+        }
     }
 
 
     private Main startXacmlPdpService() {
-        final String[] XacmlPdpConfigParameters =
-            { "-c", "parameters/XacmlPdpConfigParameters.json" };
+        final String[] XacmlPdpConfigParameters = {"-c", "parameters/XacmlPdpConfigParameters.json"};
         return new Main(XacmlPdpConfigParameters);
     }
 
@@ -88,26 +120,23 @@ public class TestXacmlPdpStatistics {
         main.shutdown();
     }
 
-    private StatisticsReport getXacmlPdpStatistics() throws InterruptedException {
-        StatisticsReport response = null;
+    private StatisticsReport getXacmlPdpStatistics() throws InterruptedException, IOException {
+
         final ClientConfig clientConfig = new ClientConfig();
 
         final HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic("healthcheck", "zb!XztG34");
         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:6969/policy/pdpx/v1/statistics");
 
         final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
-        final long startTime = System.currentTimeMillis();
-        while (response == null && (System.currentTimeMillis() - startTime) < 120000) {
-            try {
-                response = invocationBuilder.get(StatisticsReport.class);
-            } catch (final Exception exp) {
-                LOGGER.info("the server is not started yet. We will retry again");
-            }
+
+        if (!NetworkUtil.isTcpPortOpen("localhost", 6969, 6, 10000L)) {
+            throw new IllegalStateException("Cannot connect to port 6969");
         }
-        return response;
+
+        return invocationBuilder.get(StatisticsReport.class);
     }
 
     private void updateXacmlPdpStatistics() {