2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 * ============LICENSE_END=========================================================
19 package org.onap.policy.pdp.xacml.application.common;
21 import static org.junit.Assert.assertEquals;
23 import java.io.FileInputStream;
24 import java.lang.reflect.Method;
26 import java.time.Instant;
27 import java.util.Properties;
28 import java.util.UUID;
30 import javax.persistence.EntityManager;
31 import javax.persistence.Persistence;
32 import javax.persistence.Query;
34 import org.junit.AfterClass;
35 import org.junit.BeforeClass;
36 import org.junit.Test;
37 import org.slf4j.Logger;
38 import org.slf4j.LoggerFactory;
40 public class OnapOperationsHistoryPipEngineTest {
41 private static final Logger LOGGER = LoggerFactory.getLogger(OnapOperationsHistoryPipEngineTest.class);
42 private static OnapOperationsHistoryPipEngine pipEngine;
44 private static EntityManager em;
47 * Create an instance of our engine and also the persistence
50 * @throws Exception connectivity issues
53 public static void setUp() throws Exception {
54 LOGGER.info("Setting up PIP Testing");
58 pipEngine = new OnapOperationsHistoryPipEngine();
60 // Load our test properties to use
62 Properties properties = new Properties();
63 try (FileInputStream is = new FileInputStream("src/test/resources/test.properties")) {
67 // Configure it using properties
69 pipEngine.configure("issuer", properties);
70 LOGGER.info("PIP configured now creating our entity manager");
72 // Connect to in-mem db
74 em = Persistence.createEntityManagerFactory(properties.getProperty("historydb.persistenceunit"), properties)
75 .createEntityManager();
79 LOGGER.info("Configured own entity manager", em.toString());
83 * Close the entity manager.
86 public static void tearDown() {
93 public void testGetCountFromDb() throws Exception {
96 OnapOperationsHistoryDbao newEntry = new OnapOperationsHistoryDbao();
97 newEntry.setActor("Controller");
98 newEntry.setOperation("operationA");
99 newEntry.setClName("cl-foobar-1");
100 newEntry.setOutcome("SUCCESS");
101 newEntry.setStarttime(Date.from(Instant.now().minusMillis(20000)));
102 newEntry.setEndtime(Date.from(Instant.now()));
103 newEntry.setRequestId(UUID.randomUUID().toString());
104 newEntry.setTarget("vnf-1");
106 // Use reflection to run getCountFromDB
107 Method method = OnapOperationsHistoryPipEngine.class.getDeclaredMethod("doDatabaseQuery",
113 method.setAccessible(true);
114 int count = (int) method.invoke(pipEngine, newEntry.getActor(), newEntry.getOperation(), newEntry.getTarget(),
118 assertEquals(0, count);
121 em.getTransaction().begin();
122 em.persist(newEntry);
123 em.getTransaction().commit();
125 Query queryCount = em.createNativeQuery("select count(*) as numops from operationshistory")
127 LOGGER.info("{} entries", queryCount.getSingleResult());
129 count = (int) method.invoke(pipEngine, newEntry.getActor(), newEntry.getOperation(), newEntry.getTarget(),
131 // Should count 1 entry now
132 assertEquals(1, count);