2 * ============LICENSE_START=======================================================
3 * feature-session-persistence
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.drools.persistence;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
26 import java.util.HashMap;
29 import javax.persistence.EntityManager;
30 import javax.persistence.EntityManagerFactory;
31 import javax.persistence.Persistence;
33 import org.junit.After;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.onap.policy.drools.persistence.DroolsSessionEntity;
37 import org.onap.policy.drools.persistence.EntityMgrTrans;
38 import org.onap.policy.drools.persistence.JpaDroolsSessionConnector;
40 public class JpaDroolsSessionConnectorTest {
42 private EntityManagerFactory emf;
43 private JpaDroolsSessionConnector conn;
47 public void setUp() throws Exception {
48 Map<String, Object> propMap = new HashMap<>();
50 propMap.put("javax.persistence.jdbc.driver", "org.h2.Driver");
51 propMap.put("javax.persistence.jdbc.url",
52 "jdbc:h2:mem:JpaDroolsSessionConnectorTest");
54 emf = Persistence.createEntityManagerFactory(
55 "junitDroolsSessionEntityPU", propMap);
57 conn = new JpaDroolsSessionConnector(emf);
61 public void tearDown() {
62 // this will cause the memory db to be dropped
67 public void testGet() {
69 * Load up the DB with some data.
72 addSession("nameA", 10);
73 addSession("nameY", 20);
77 * Now test the functionality.
81 assertNull( conn.get("unknown"));
83 assertEquals("{name=nameA, id=10}",
84 conn.get("nameA").toString());
86 assertEquals("{name=nameY, id=20}",
87 conn.get("nameY").toString());
91 public void testReplace_Existing() {
92 addSession("nameA", 10);
94 DroolsSessionEntity sess =
95 new DroolsSessionEntity("nameA", 30);
99 // id should be changed
100 assertEquals(sess.toString(),
101 conn.get("nameA").toString());
105 public void testReplace_New() {
106 DroolsSessionEntity sess =
107 new DroolsSessionEntity("nameA", 30);
111 assertEquals(sess.toString(),
112 conn.get("nameA").toString());
116 public void testAdd() {
117 DroolsSessionEntity sess =
118 new DroolsSessionEntity("nameA", 30);
122 assertEquals(sess.toString(),
123 conn.get("nameA").toString());
127 public void testUpdate() {
128 addSession("nameA", 10);
130 DroolsSessionEntity sess =
131 new DroolsSessionEntity("nameA", 30);
135 // id should be changed
136 assertEquals("{name=nameA, id=30}",
137 conn.get("nameA").toString());
142 * Adds a session to the DB.
143 * @param sessnm session name
144 * @param sessid session id
146 private void addSession(String sessnm, int sessid) {
147 EntityManager em = emf.createEntityManager();
149 try(EntityMgrTrans trans = new EntityMgrTrans(em)) {
150 DroolsSessionEntity ent = new DroolsSessionEntity();
152 ent.setSessionName(sessnm);
153 ent.setSessionId(sessid);