Changes for checkstyle 8.32
[policy/apex-pdp.git] / model / basic-model / src / test / java / org / onap / policy / apex / model / basicmodel / dao / EntityTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. 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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.model.basicmodel.dao;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.junit.Assert.fail;
28
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.Set;
32 import java.util.TreeSet;
33 import java.util.UUID;
34 import org.junit.Test;
35 import org.onap.policy.apex.model.basicmodel.concepts.ApexException;
36 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
37 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo;
38 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
39 import org.onap.policy.apex.model.basicmodel.concepts.DummyEntity;
40
41 /**
42  * JUnit test class.
43  */
44 public class EntityTest {
45     private ApexDao apexDao;
46
47     @Test
48     public void testEntityTestSanity() throws ApexException {
49         final DaoParameters daoParameters = new DaoParameters();
50
51         apexDao = new ApexDaoFactory().createApexDao(daoParameters);
52
53         try {
54             apexDao.init(null);
55             fail("Test should throw an exception here");
56         } catch (final Exception e) {
57             assertEquals("Apex persistence unit parameter not set", e.getMessage());
58         }
59
60         try {
61             apexDao.init(daoParameters);
62             fail("Test should throw an exception here");
63         } catch (final Exception e) {
64             assertEquals("Apex persistence unit parameter not set", e.getMessage());
65         }
66
67         daoParameters.setPluginClass("somewhere.over.the.rainbow");
68         daoParameters.setPersistenceUnit("Dorothy");
69         try {
70             apexDao.init(daoParameters);
71             fail("Test should throw an exception here");
72         } catch (final Exception e) {
73             assertEquals("Creation of Apex persistence unit \"Dorothy\" failed", e.getMessage());
74         }
75         try {
76             apexDao.create(new AxArtifactKey());
77             fail("Test should throw an exception here");
78         } catch (final Exception e) {
79             assertEquals("Apex DAO has not been initialized", e.getMessage());
80         }
81         apexDao.close();
82     }
83
84     @Test
85     public void testEntityTestAllOpsJpa() throws ApexException {
86         final DaoParameters daoParameters = new DaoParameters();
87         daoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao");
88         daoParameters.setPersistenceUnit("DaoTest");
89
90         apexDao = new ApexDaoFactory().createApexDao(daoParameters);
91         apexDao.init(daoParameters);
92
93         testAllOps();
94         apexDao.close();
95     }
96
97     @Test
98     public void testEntityTestBadVals() throws ApexException {
99         final DaoParameters daoParameters = new DaoParameters();
100         daoParameters.setPluginClass("org.onap.policy.apex.model.basicmodel.dao.impl.DefaultApexDao");
101         daoParameters.setPersistenceUnit("DaoTest");
102
103         apexDao = new ApexDaoFactory().createApexDao(daoParameters);
104         apexDao.init(daoParameters);
105
106         final AxArtifactKey nullKey = null;
107         final AxReferenceKey nullRefKey = null;
108         final List<AxArtifactKey> nullKeyList = null;
109         final List<AxArtifactKey> emptyKeyList = new ArrayList<>();
110         final List<AxReferenceKey> nullRKeyList = null;
111         final List<AxReferenceKey> emptyRKeyList = new ArrayList<>();
112
113         apexDao.create(nullKey);
114         apexDao.createCollection(nullKeyList);
115         apexDao.createCollection(emptyKeyList);
116
117         apexDao.delete(nullKey);
118         apexDao.deleteCollection(nullKeyList);
119         apexDao.deleteCollection(emptyKeyList);
120         apexDao.delete(AxArtifactKey.class, nullKey);
121         apexDao.delete(AxReferenceKey.class, nullRefKey);
122         apexDao.deleteByArtifactKey(AxArtifactKey.class, nullKeyList);
123         apexDao.deleteByArtifactKey(AxArtifactKey.class, emptyKeyList);
124         apexDao.deleteByReferenceKey(AxReferenceKey.class, nullRKeyList);
125         apexDao.deleteByReferenceKey(AxReferenceKey.class, emptyRKeyList);
126
127         apexDao.get(null, nullKey);
128         apexDao.get(null, nullRefKey);
129         apexDao.getAll(null);
130         apexDao.getAll(null, nullKey);
131         apexDao.getArtifact(null, nullKey);
132         apexDao.getArtifact(AxArtifactKey.class, nullKey);
133         apexDao.getArtifact(null, nullRefKey);
134         apexDao.getArtifact(AxReferenceKey.class, nullRefKey);
135         apexDao.size(null);
136
137         apexDao.close();
138     }
139
140     private void testAllOps() {
141         final AxArtifactKey aKey0 = new AxArtifactKey("A-KEY0", "0.0.1");
142         final AxArtifactKey aKey1 = new AxArtifactKey("A-KEY1", "0.0.1");
143         final AxArtifactKey aKey2 = new AxArtifactKey("A-KEY2", "0.0.1");
144         final AxKeyInfo keyInfo0 = new AxKeyInfo(aKey0, UUID.fromString("00000000-0000-0000-0000-000000000000"),
145                         "key description 0");
146         final AxKeyInfo keyInfo1 = new AxKeyInfo(aKey1, UUID.fromString("00000000-0000-0000-0000-000000000001"),
147                         "key description 1");
148         final AxKeyInfo keyInfo2 = new AxKeyInfo(aKey2, UUID.fromString("00000000-0000-0000-0000-000000000002"),
149                         "key description 2");
150
151         apexDao.create(keyInfo0);
152
153         final AxKeyInfo keyInfoBack0 = apexDao.get(AxKeyInfo.class, aKey0);
154         assertTrue(keyInfo0.equals(keyInfoBack0));
155
156         final AxKeyInfo keyInfoBackNull = apexDao.get(AxKeyInfo.class, AxArtifactKey.getNullKey());
157         assertNull(keyInfoBackNull);
158
159         final AxKeyInfo keyInfoBack1 = apexDao.getArtifact(AxKeyInfo.class, aKey0);
160         assertTrue(keyInfoBack0.equals(keyInfoBack1));
161
162         final AxKeyInfo keyInfoBack2 = apexDao.getArtifact(AxKeyInfo.class, new AxArtifactKey("A-KEY3", "0.0.1"));
163         assertNull(keyInfoBack2);
164
165         final Set<AxKeyInfo> keyInfoSetIn = new TreeSet<AxKeyInfo>();
166         keyInfoSetIn.add(keyInfo1);
167         keyInfoSetIn.add(keyInfo2);
168
169         apexDao.createCollection(keyInfoSetIn);
170
171         Set<AxKeyInfo> keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
172
173         keyInfoSetIn.add(keyInfo0);
174         assertTrue(keyInfoSetIn.equals(keyInfoSetOut));
175
176         apexDao.delete(keyInfo1);
177         keyInfoSetIn.remove(keyInfo1);
178         keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
179         assertTrue(keyInfoSetIn.equals(keyInfoSetOut));
180
181         apexDao.deleteCollection(keyInfoSetIn);
182         keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
183         assertEquals(0, keyInfoSetOut.size());
184
185         keyInfoSetIn.add(keyInfo0);
186         keyInfoSetIn.add(keyInfo1);
187         keyInfoSetIn.add(keyInfo0);
188         apexDao.createCollection(keyInfoSetIn);
189         keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
190         assertTrue(keyInfoSetIn.equals(keyInfoSetOut));
191
192         apexDao.delete(AxKeyInfo.class, aKey0);
193         keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
194         assertEquals(2, keyInfoSetOut.size());
195         assertEquals(2, apexDao.size(AxKeyInfo.class));
196
197         final Set<AxArtifactKey> keySetIn = new TreeSet<AxArtifactKey>();
198         keySetIn.add(aKey1);
199         keySetIn.add(aKey2);
200
201         final int deletedCount = apexDao.deleteByArtifactKey(AxKeyInfo.class, keySetIn);
202         assertEquals(2, deletedCount);
203
204         keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
205         assertEquals(0, keyInfoSetOut.size());
206
207         keyInfoSetIn.add(keyInfo0);
208         keyInfoSetIn.add(keyInfo1);
209         keyInfoSetIn.add(keyInfo0);
210         apexDao.createCollection(keyInfoSetIn);
211         keyInfoSetOut = new TreeSet<AxKeyInfo>(apexDao.getAll(AxKeyInfo.class));
212         assertTrue(keyInfoSetIn.equals(keyInfoSetOut));
213
214         apexDao.deleteAll(AxKeyInfo.class);
215         assertEquals(0, apexDao.size(AxKeyInfo.class));
216
217         final AxArtifactKey owner0Key = new AxArtifactKey("Owner0", "0.0.1");
218         final AxArtifactKey owner1Key = new AxArtifactKey("Owner1", "0.0.1");
219         final AxArtifactKey owner2Key = new AxArtifactKey("Owner2", "0.0.1");
220         final AxArtifactKey owner3Key = new AxArtifactKey("Owner3", "0.0.1");
221         final AxArtifactKey owner4Key = new AxArtifactKey("Owner4", "0.0.1");
222         final AxArtifactKey owner5Key = new AxArtifactKey("Owner5", "0.0.1");
223
224         apexDao.create(new DummyEntity(new AxReferenceKey(owner0Key, "Entity0"), 100.0));
225         apexDao.create(new DummyEntity(new AxReferenceKey(owner0Key, "Entity1"), 101.0));
226         apexDao.create(new DummyEntity(new AxReferenceKey(owner0Key, "Entity2"), 102.0));
227         apexDao.create(new DummyEntity(new AxReferenceKey(owner0Key, "Entity3"), 103.0));
228         apexDao.create(new DummyEntity(new AxReferenceKey(owner0Key, "Entity4"), 104.0));
229         apexDao.create(new DummyEntity(new AxReferenceKey(owner1Key, "Entity5"), 105.0));
230         apexDao.create(new DummyEntity(new AxReferenceKey(owner1Key, "Entity6"), 106.0));
231         apexDao.create(new DummyEntity(new AxReferenceKey(owner1Key, "Entity7"), 107.0));
232         apexDao.create(new DummyEntity(new AxReferenceKey(owner2Key, "Entity8"), 108.0));
233         apexDao.create(new DummyEntity(new AxReferenceKey(owner2Key, "Entity9"), 109.0));
234         apexDao.create(new DummyEntity(new AxReferenceKey(owner3Key, "EntityA"), 110.0));
235         apexDao.create(new DummyEntity(new AxReferenceKey(owner4Key, "EntityB"), 111.0));
236         apexDao.create(new DummyEntity(new AxReferenceKey(owner5Key, "EntityC"), 112.0));
237         apexDao.create(new DummyEntity(new AxReferenceKey(owner5Key, "EntityD"), 113.0));
238         apexDao.create(new DummyEntity(new AxReferenceKey(owner5Key, "EntityE"), 114.0));
239         apexDao.create(new DummyEntity(new AxReferenceKey(owner5Key, "EntityF"), 115.0));
240
241         TreeSet<DummyEntity> testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class));
242         assertEquals(16, testEntitySetOut.size());
243
244         testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class, owner0Key));
245         assertEquals(5, testEntitySetOut.size());
246
247         testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class, owner1Key));
248         assertEquals(3, testEntitySetOut.size());
249
250         testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class, owner2Key));
251         assertEquals(2, testEntitySetOut.size());
252
253         testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class, owner3Key));
254         assertEquals(1, testEntitySetOut.size());
255
256         testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class, owner4Key));
257         assertEquals(1, testEntitySetOut.size());
258
259         testEntitySetOut = new TreeSet<DummyEntity>(apexDao.getAll(DummyEntity.class, owner5Key));
260         assertEquals(4, testEntitySetOut.size());
261
262         assertNotNull(apexDao.get(DummyEntity.class, new AxReferenceKey(owner0Key, "Entity0")));
263         assertNotNull(apexDao.getArtifact(DummyEntity.class, new AxReferenceKey(owner0Key, "Entity0")));
264         assertNull(apexDao.get(DummyEntity.class, new AxReferenceKey(owner0Key, "Entity1000")));
265         assertNull(apexDao.getArtifact(DummyEntity.class, new AxReferenceKey(owner0Key, "Entity1000")));
266         apexDao.delete(DummyEntity.class, new AxReferenceKey(owner0Key, "Entity0"));
267
268         final Set<AxReferenceKey> rKeySetIn = new TreeSet<AxReferenceKey>();
269         rKeySetIn.add(new AxReferenceKey(owner4Key, "EntityB"));
270         rKeySetIn.add(new AxReferenceKey(owner5Key, "EntityD"));
271
272         final int deletedRCount = apexDao.deleteByReferenceKey(DummyEntity.class, rKeySetIn);
273         assertEquals(2, deletedRCount);
274
275         apexDao.update(new DummyEntity(new AxReferenceKey(owner5Key, "EntityF"), 120.0));
276     }
277 }