2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018-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.database.operationshistory;
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;
29 import javax.persistence.EntityManager;
30 import javax.persistence.Persistence;
31 import org.junit.AfterClass;
32 import org.junit.BeforeClass;
33 import org.junit.Test;
34 import org.slf4j.Logger;
35 import org.slf4j.LoggerFactory;
37 public class GetOperationOutcomePipTest {
38 private static final Logger LOGGER = LoggerFactory.getLogger(GetOperationOutcomePipTest.class);
39 private static GetOperationOutcomePip pipEngine;
41 private static EntityManager em;
44 * Create an instance of our engine and also the persistence
47 * @throws Exception connectivity issues
50 public static void setup() throws Exception {
51 LOGGER.info("Setting up PIP Testing");
55 pipEngine = new GetOperationOutcomePip();
57 // Load our test properties to use
59 Properties properties = new Properties();
60 try (FileInputStream is = new FileInputStream("src/test/resources/test.properties")) {
64 // Configure it using properties
66 pipEngine.configure("issuer", properties);
67 LOGGER.info("PIP configured now creating our entity manager");
68 LOGGER.info("properties {}", properties);
70 // Connect to in-mem db
72 String persistenceUnit = GetOperationOutcomePip.ISSUER_NAME + ".persistenceunit";
73 LOGGER.info("persistenceunit {}", persistenceUnit);
74 em = Persistence.createEntityManagerFactory(properties.getProperty(persistenceUnit), properties)
75 .createEntityManager();
79 LOGGER.info("Configured own entity manager", em.toString());
82 private void insertEntry(String cl, String target, String outcome) {
86 Dbao newEntry = new Dbao();
87 newEntry.setClosedLoopName(cl);
88 newEntry.setTarget(target);
89 newEntry.setOutcome(outcome);
90 newEntry.setActor("Controller");
91 newEntry.setOperation("operationA");
92 newEntry.setStarttime(Date.from(Instant.now().minusMillis(20000)));
93 newEntry.setEndtime(Date.from(Instant.now()));
94 newEntry.setRequestId(UUID.randomUUID().toString());
98 em.getTransaction().begin();
100 em.getTransaction().commit();
105 public void testGetOutcomeFromDb() throws Exception {
107 // Use reflection to run getCountFromDB
109 Method method = GetOperationOutcomePip.class.getDeclaredMethod("doDatabaseQuery",
112 method.setAccessible(true);
116 insertEntry("testcl1", "testtarget1", "1");
120 String outcome = (String) method.invoke(pipEngine, "testcl1", "testtarget1");
122 // outcome should be "1"
124 assertEquals("1", outcome);
126 // Insert more entries
128 insertEntry("testcl1", "testtarget1", "2");
129 insertEntry("testcl2", "testtarget2", "3");
130 insertEntry("testcl1", "testtarget2", "4");
134 outcome = (String) method.invoke(pipEngine, "testcl1", "testtarget1");
135 assertEquals("2", outcome);
137 outcome = (String) method.invoke(pipEngine, "testcl2", "testtarget2");
138 assertEquals("3", outcome);
140 outcome = (String) method.invoke(pipEngine, "testcl1", "testtarget2");
141 assertEquals("4", outcome);
145 * Close the entity manager.
148 public static void cleanup() {