c16a1bbd69064dbec44403487752993dbc521b8d
[policy/drools-pdp.git] /
1 /*-
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.policy.drools.persistence;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25
26 import java.util.HashMap;
27 import java.util.Map;
28
29 import javax.persistence.EntityManager;
30 import javax.persistence.EntityManagerFactory;
31 import javax.persistence.Persistence;
32
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;
39
40 public class JpaDroolsSessionConnectorTest {
41         
42         private EntityManagerFactory emf;
43         private JpaDroolsSessionConnector conn;
44         
45
46         @Before
47         public void setUp() throws Exception {
48                 Map<String, Object> propMap = new HashMap<>();
49
50                 propMap.put("javax.persistence.jdbc.driver", "org.h2.Driver");
51                 propMap.put("javax.persistence.jdbc.url",
52                                                 "jdbc:h2:mem:JpaDroolsSessionConnectorTest");
53                 
54                 emf = Persistence.createEntityManagerFactory(
55                                                                 "junitDroolsSessionEntityPU", propMap);
56                 
57                 conn = new JpaDroolsSessionConnector(emf);
58         }
59         
60         @After
61         public void tearDown() {
62                 // this will cause the memory db to be dropped
63                 emf.close();
64         }
65
66         @Test
67         public void testGet() {
68                 /*
69                  * Load up the DB with some data.
70                  */
71                 
72                 addSession("nameA", 10);
73                 addSession("nameY", 20);
74                 
75                 
76                 /*
77                  * Now test the functionality.
78                  */
79                 
80                 // not found
81                 assertNull( conn.get("unknown"));
82                 
83                 assertEquals("{name=nameA, id=10}",
84                                                 conn.get("nameA").toString());
85                 
86                 assertEquals("{name=nameY, id=20}",
87                                                 conn.get("nameY").toString());
88         }
89
90         @Test
91         public void testReplace_Existing() {
92                 addSession("nameA", 10);
93                 
94                 DroolsSessionEntity sess =
95                                 new DroolsSessionEntity("nameA", 30);
96                 
97                 conn.replace(sess);
98
99                 // id should be changed
100                 assertEquals(sess.toString(),
101                                                 conn.get("nameA").toString());
102         }
103
104         @Test
105         public void testReplace_New() {
106                 DroolsSessionEntity sess =
107                                 new DroolsSessionEntity("nameA", 30);
108                 
109                 conn.replace(sess);
110
111                 assertEquals(sess.toString(),
112                                                 conn.get("nameA").toString());
113         }
114
115         @Test
116         public void testAdd() {
117                 DroolsSessionEntity sess =
118                                 new DroolsSessionEntity("nameA", 30);
119                 
120                 conn.replace(sess);
121
122                 assertEquals(sess.toString(),
123                                                 conn.get("nameA").toString());
124         }
125
126         @Test
127         public void testUpdate() {
128                 addSession("nameA", 10);
129                 
130                 DroolsSessionEntity sess =
131                                 new DroolsSessionEntity("nameA", 30);
132                 
133                 conn.replace(sess);
134
135                 // id should be changed
136                 assertEquals("{name=nameA, id=30}",
137                                                 conn.get("nameA").toString());
138         }
139
140
141         /**
142          * Adds a session to the DB.
143          * @param sessnm        session name
144          * @param sessid        session id
145          */
146         private void addSession(String sessnm, int sessid) {
147                 EntityManager em = emf.createEntityManager();
148                 
149                 try(EntityMgrTrans trans = new EntityMgrTrans(em)) {
150                         DroolsSessionEntity ent = new DroolsSessionEntity();
151                         
152                         ent.setSessionName(sessnm);
153                         ent.setSessionId(sessid);
154                         
155                         em.persist(ent);
156                 
157                         trans.commit();
158                 }
159         }
160 }