Merge "Add Control Loop Coordination policy."
[policy/xacml-pdp.git] / applications / common / src / test / java / org / onap / policy / pdp / xacml / application / common / operationshistory / CountRecentOperationsPipTest.java
@@ -16,7 +16,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.policy.pdp.xacml.application.common;
+package org.onap.policy.pdp.xacml.application.common.operationshistory;
 
 import static org.junit.Assert.assertEquals;
 
@@ -24,6 +24,7 @@ import java.io.FileInputStream;
 import java.lang.reflect.Method;
 import java.sql.Date;
 import java.time.Instant;
+
 import java.util.Properties;
 import java.util.UUID;
 
@@ -37,9 +38,9 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class OnapOperationsHistoryPipEngineTest {
-    private static final Logger LOGGER = LoggerFactory.getLogger(OnapOperationsHistoryPipEngineTest.class);
-    private static OnapOperationsHistoryPipEngine pipEngine;
+public class CountRecentOperationsPipTest {
+    private static final Logger LOGGER = LoggerFactory.getLogger(CountRecentOperationsPipTest.class);
+    private static CountRecentOperationsPip pipEngine;
 
     private static EntityManager em;
 
@@ -50,12 +51,12 @@ public class OnapOperationsHistoryPipEngineTest {
      * @throws Exception connectivity issues
      */
     @BeforeClass
-    public static void setUp() throws Exception {
+    public static void setup() throws Exception {
         LOGGER.info("Setting up PIP Testing");
         //
         // Create instance
         //
-        pipEngine = new OnapOperationsHistoryPipEngine();
+        pipEngine = new CountRecentOperationsPip();
         //
         // Load our test properties to use
         //
@@ -68,10 +69,13 @@ public class OnapOperationsHistoryPipEngineTest {
         //
         pipEngine.configure("issuer", properties);
         LOGGER.info("PIP configured now creating our entity manager");
+        LOGGER.info("properties {}", properties);
         //
         // Connect to in-mem db
         //
-        em = Persistence.createEntityManagerFactory(properties.getProperty("historydb.persistenceunit"), properties)
+        String persistenceUnit = CountRecentOperationsPip.ISSUER_NAME + ".persistenceunit";
+        LOGGER.info("persistenceunit {}", persistenceUnit);
+        em = Persistence.createEntityManagerFactory(properties.getProperty(persistenceUnit), properties)
                 .createEntityManager();
         //
         //
@@ -79,57 +83,78 @@ public class OnapOperationsHistoryPipEngineTest {
         LOGGER.info("Configured own entity manager", em.toString());
     }
 
-    /**
-     * Close the entity manager.
-     */
-    @AfterClass
-    public static void tearDown() {
-        if (em != null) {
-            em.close();
-        }
-    }
-
-    @Test
-    public void testGetCountFromDb() throws Exception {
-
-        // Add an entry
-        OnapOperationsHistoryDbao newEntry = new OnapOperationsHistoryDbao();
+    private Dbao createEntry(String cl, String target, String outcome) {
+        //
+        // Create entry
+        //
+        Dbao newEntry = new Dbao();
+        newEntry.setClosedLoopName(cl);
+        newEntry.setTarget(target);
+        newEntry.setOutcome(outcome);
         newEntry.setActor("Controller");
         newEntry.setOperation("operationA");
-        newEntry.setClName("cl-foobar-1");
-        newEntry.setOutcome("SUCCESS");
         newEntry.setStarttime(Date.from(Instant.now().minusMillis(20000)));
         newEntry.setEndtime(Date.from(Instant.now()));
         newEntry.setRequestId(UUID.randomUUID().toString());
-        newEntry.setTarget("vnf-1");
+        return newEntry;
+    }
 
+    @Test
+    public void testGetCountFromDb() throws Exception {
+        //
         // Use reflection to run getCountFromDB
-        Method method = OnapOperationsHistoryPipEngine.class.getDeclaredMethod("doDatabaseQuery",
+        //
+        Method method = CountRecentOperationsPip.class.getDeclaredMethod("doDatabaseQuery",
                                                                             String.class,
                                                                             String.class,
                                                                             String.class,
                                                                             int.class,
                                                                             String.class);
         method.setAccessible(true);
-        int count = (int) method.invoke(pipEngine, newEntry.getActor(), newEntry.getOperation(), newEntry.getTarget(),
+        //
+        // create entry
+        //
+        Dbao newEntry = createEntry("cl-foobar-1", "vnf-1", "SUCCESS");
+        //
+        // Test pipEngine
+        //
+        long count = (long) method.invoke(pipEngine, newEntry.getActor(), newEntry.getOperation(), newEntry.getTarget(),
                 1, "HOUR");
-
+        //
         // No entries yet
+        //
         assertEquals(0, count);
-
-
+        //
+        // Add entry
+        //
         em.getTransaction().begin();
         em.persist(newEntry);
         em.getTransaction().commit();
-
+        //
+        // Directly check ground truth
+        //
         Query queryCount = em.createNativeQuery("select count(*) as numops from operationshistory")
                 .setParameter(1, 1);
         LOGGER.info("{} entries", queryCount.getSingleResult());
-
-        count = (int) method.invoke(pipEngine, newEntry.getActor(), newEntry.getOperation(), newEntry.getTarget(),
+        //
+        // Test pipEngine
+        //
+        count = (long) method.invoke(pipEngine, newEntry.getActor(), newEntry.getOperation(), newEntry.getTarget(),
                 1, "HOUR");
+        //
         // Should count 1 entry now
+        //
         assertEquals(1, count);
     }
 
+    /**
+     * Close the entity manager.
+     */
+    @AfterClass
+    public static void cleanup() {
+        if (em != null) {
+            em.close();
+        }
+    }
+
 }