2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017, 2019 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.pap.ia;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
26 import java.util.Date;
27 import java.util.HashMap;
28 import java.util.Properties;
31 import javax.persistence.EntityManager;
32 import javax.persistence.EntityManagerFactory;
33 import javax.persistence.EntityTransaction;
34 import javax.persistence.Persistence;
36 import org.apache.commons.lang3.SerializationUtils;
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39 import org.junit.After;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.onap.policy.common.ia.DbAudit;
43 import org.onap.policy.common.ia.DbDao;
44 import org.onap.policy.common.ia.IntegrityAuditProperties;
45 import org.onap.policy.common.ia.jpa.IntegrityAuditEntity;
46 import org.onap.policy.common.im.jpa.ForwardProgressEntity;
47 import org.onap.policy.common.im.jpa.ResourceRegistrationEntity;
48 import org.onap.policy.common.im.jpa.StateManagementEntity;
49 import org.onap.policy.jpa.BackUpMonitorEntity;
51 public class DbAuditCompareEntriesTest {
53 private static Log logger = LogFactory.getLog(DbAuditCompareEntriesTest.class);
55 private String persistenceUnit;
56 private Properties properties;
57 private String resourceName;
58 private String dbDriver;
60 private String dbUser;
62 private String siteName;
63 private String nodeType;
64 private static final String DEFAULT_DB_DRIVER = "org.h2.Driver";
65 private static final String DEFAULT_DB_USER = "sa";
66 private static final String DEFAULT_DB_PWD = "";
69 public void setUp() throws Exception {
70 logger.info("setUp: Entering");
72 properties = new Properties();
73 properties.put(IntegrityAuditProperties.DB_DRIVER, DbAuditCompareEntriesTest.DEFAULT_DB_DRIVER);
74 properties.put(IntegrityAuditProperties.DB_URL, "jdbc:h2:file:./sql/xacmlTest");
75 properties.put(IntegrityAuditProperties.DB_USER, DbAuditCompareEntriesTest.DEFAULT_DB_USER);
76 properties.put(IntegrityAuditProperties.DB_PWD, DbAuditCompareEntriesTest.DEFAULT_DB_PWD);
77 properties.put(IntegrityAuditProperties.SITE_NAME, "SiteA");
78 properties.put(IntegrityAuditProperties.NODE_TYPE, "pap");
80 dbDriver = DbAuditCompareEntriesTest.DEFAULT_DB_DRIVER;
81 dbUrl = "jdbc:h2:file:./sql/xacmlTest";
82 dbUser = DbAuditCompareEntriesTest.DEFAULT_DB_USER;
83 dbPwd = DbAuditCompareEntriesTest.DEFAULT_DB_PWD;
86 persistenceUnit = "testPapPU";
87 resourceName = "siteA.pap1";
89 // Clean the iaTest DB table for IntegrityAuditEntity entries
90 cleanDb(persistenceUnit, properties);
92 logger.info("setUp: Exiting");
96 public void tearDown() throws Exception {
97 logger.info("tearDown: Entering");
99 logger.info("tearDown: Exiting");
102 public void cleanDb(String persistenceUnit, Properties properties) {
103 logger.debug("cleanDb: enter");
105 EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit, properties);
107 EntityManager em = emf.createEntityManager();
108 // Start a transaction
109 EntityTransaction et = em.getTransaction();
114 em.createQuery("Delete from IntegrityAuditEntity").executeUpdate();
116 // commit transaction
119 logger.debug("cleanDb: exit");
123 * Tests that a comparison between hashsets is successful if
127 public void runAllTests() throws Exception {
128 logger.info("runAllTests: Entering");
130 testIntegrityAuditEntity();
131 testBackupMonitorEntity();
132 testStateManagementEntity();
133 testForwardProgressEntity();
134 testResourceRegistrationEntity();
136 // clean up the IntegrityAuditEntity table
137 cleanDb(persistenceUnit, properties);
139 logger.info("runAllTests: Exit");
142 public void testIntegrityAuditEntity() throws Exception {
143 logger.info("testIntegrityAuditEntity: Entering");
145 dbDAO = new DbDao(resourceName, persistenceUnit, properties);
146 DbAudit dbAudit = new DbAudit(dbDAO);
148 String className = null;
149 // There is only one entry IntegrityAuditEntity, but we will check anyway
150 Set<String> classNameSet = dbDAO.getPersistenceClassNames();
151 for (String c : classNameSet) {
152 if (c.equals("org.onap.policy.common.ia.jpa.IntegrityAuditEntity")) {
156 String resourceName1 = resourceName;
157 String resourceName2 = resourceName;
159 IntegrityAuditEntity entry1 = new IntegrityAuditEntity();
160 IntegrityAuditEntity entry2 = new IntegrityAuditEntity();
161 Date date = new Date();
164 * Two entries with the same field values
166 entry1.setDesignated(false);
167 entry1.setJdbcDriver(dbDriver);
168 entry1.setJdbcPassword(dbPwd);
169 entry1.setJdbcUrl(dbUrl);
170 entry1.setJdbcUser(dbUser);
171 entry1.setLastUpdated(date);
172 entry1.setNodeType(nodeType);
173 entry1.setPersistenceUnit(persistenceUnit);
174 entry1.setResourceName(resourceName1);
175 entry1.setSite(siteName);
177 entry2 = SerializationUtils.clone(entry1);
179 dbAudit.writeAuditDebugLog(className, resourceName1, resourceName2, entry1, entry2);
181 HashMap<Object, Object> myEntries = new HashMap<>();
182 HashMap<Object, Object> theirEntries = new HashMap<>();
184 myEntries.put("pdp1", entry1);
185 theirEntries.put("pdp1", entry2);
187 Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
190 * Assert that there are no mismatches returned
192 assertTrue(result.isEmpty());
195 * ************************************
196 * Now test with a mis-matched entry
197 * ************************************
201 * Change the entry2 to different designated value
203 entry2.setDesignated(true);
205 myEntries = new HashMap<>();
206 theirEntries = new HashMap<>();
208 myEntries.put("pdp1", entry1);
209 theirEntries.put("pdp1", entry2);
211 result = dbAudit.compareEntries(myEntries, theirEntries);
214 * Assert that there was one mismatch
216 assertEquals(1, result.size());
217 logger.info("testIntegrityAuditEntity: Exit");
220 void testBackupMonitorEntity() throws Exception {
221 logger.info("testBackupMonitorEntity: Entering");
223 dbDAO = new DbDao(resourceName, persistenceUnit, properties);
224 DbAudit dbAudit = new DbAudit(dbDAO);
226 BackUpMonitorEntity entry1 = new BackUpMonitorEntity();
227 BackUpMonitorEntity entry2 = new BackUpMonitorEntity();
229 // Two entries with the same field values
231 entry1.setFlag("flag1");
232 entry1.setResourceNodeName("node1");
233 entry1.setResourceName("resourceName");
234 entry1.setTimeStamp(new Date());
236 // Clone the first entry
237 entry2 = SerializationUtils.clone(entry1);
239 HashMap<Object, Object> myEntries = new HashMap<>();
240 HashMap<Object, Object> theirEntries = new HashMap<>();
242 myEntries.put("pdp1", entry1);
243 theirEntries.put("pdp1", entry2);
245 Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
247 // Assert that there are no mismatches returned
249 assertTrue(result.isEmpty());
252 * ************************************
253 * Now test with a mis-matched entry
254 ************************************/
256 // Change a field on entry2
258 entry2.setFlag("flag2");
260 myEntries = new HashMap<>();
261 theirEntries = new HashMap<>();
263 myEntries.put("pdp1", entry1);
264 theirEntries.put("pdp1", entry2);
266 result = dbAudit.compareEntries(myEntries, theirEntries);
268 // Assert that there was one mismatch
270 assertEquals(1, result.size());
271 logger.info("testBackupMonitorEntity: Exit");
274 void testStateManagementEntity() throws Exception {
275 logger.info("testStateManagementEntity: Entering");
277 dbDAO = new DbDao(resourceName, persistenceUnit, properties);
278 DbAudit dbAudit = new DbAudit(dbDAO);
280 StateManagementEntity entry1 = new StateManagementEntity();
281 StateManagementEntity entry2 = new StateManagementEntity();
283 // Two entries with the same field values
285 entry1.setAdminState("locked");
286 entry1.setAvailStatus("null");
287 entry1.setModifiedDate(new Date());
288 entry1.setOpState("enabled");
289 entry1.setResourceName("myResource");
290 entry1.setStandbyStatus("coldstandby");
292 // Clone the first entry
293 entry2 = SerializationUtils.clone(entry1);
295 HashMap<Object, Object> myEntries = new HashMap<>();
296 HashMap<Object, Object> theirEntries = new HashMap<>();
298 myEntries.put("pdp1", entry1);
299 theirEntries.put("pdp1", entry2);
301 Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
303 // Assert that there are no mismatches returned
305 assertTrue(result.isEmpty());
308 * ************************************
309 * Now test with a mis-matched entry
310 ************************************/
312 // Change a field on entry2
314 entry2.setAdminState("unlocked");
316 myEntries = new HashMap<>();
317 theirEntries = new HashMap<>();
319 myEntries.put("pdp1", entry1);
320 theirEntries.put("pdp1", entry2);
322 result = dbAudit.compareEntries(myEntries, theirEntries);
324 // Assert that there was one mismatch
326 assertEquals(1, result.size());
327 logger.info("testStateManagementEntity: Exit");
330 void testForwardProgressEntity() throws Exception {
331 logger.info("testForwardProgressEntity: Entering");
333 dbDAO = new DbDao(resourceName, persistenceUnit, properties);
334 DbAudit dbAudit = new DbAudit(dbDAO);
336 ForwardProgressEntity entry1 = new ForwardProgressEntity();
337 ForwardProgressEntity entry2 = new ForwardProgressEntity();
339 // Two entries with the same field values
341 entry1.setFpcCount(123L);
342 entry1.setLastUpdated(new Date());
343 entry1.setResourceName("myResource");
345 // Clone the first entry
346 entry2 = SerializationUtils.clone(entry1);
348 HashMap<Object, Object> myEntries = new HashMap<Object, Object>();
349 HashMap<Object, Object> theirEntries = new HashMap<Object, Object>();
351 myEntries.put("pdp1", entry1);
352 theirEntries.put("pdp1", entry2);
354 Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
356 // Assert that there are no mismatches returned
358 assertTrue(result.isEmpty());
361 * ************************************
362 * Now test with a mis-matched entry
363 ************************************/
365 // Change a field on entry2
367 entry2.setFpcCount(321L);
369 myEntries = new HashMap<>();
370 theirEntries = new HashMap<>();
372 myEntries.put("pdp1", entry1);
373 theirEntries.put("pdp1", entry2);
375 result = dbAudit.compareEntries(myEntries, theirEntries);
377 // Assert that there was one mismatch
379 assertEquals(1, result.size());
380 logger.info("testForwardProgressEntity: Exit");
383 void testResourceRegistrationEntity() throws Exception {
384 logger.info("testResourceRegistrationEntity: Entering");
386 dbDAO = new DbDao(resourceName, persistenceUnit, properties);
387 DbAudit dbAudit = new DbAudit(dbDAO);
389 ResourceRegistrationEntity entry1 = new ResourceRegistrationEntity();
390 ResourceRegistrationEntity entry2 = new ResourceRegistrationEntity();
392 // Two entries with the same field values
394 entry1.setNodeType("pap");
395 entry1.setLastUpdated(new Date());
396 entry1.setResourceName("myResource");
397 entry1.setResourceUrl("http://nowhere.com");
398 entry1.setSite("site_1");
400 // Clone the first entry
401 entry2 = SerializationUtils.clone(entry1);
403 HashMap<Object, Object> myEntries = new HashMap<>();
404 HashMap<Object, Object> theirEntries = new HashMap<>();
406 myEntries.put("pdp1", entry1);
407 theirEntries.put("pdp1", entry2);
409 Set<Object> result = dbAudit.compareEntries(myEntries, theirEntries);
411 // Assert that there are no mismatches returned
413 assertTrue(result.isEmpty());
416 * ************************************
417 * Now test with a mis-matched entry
418 ************************************/
420 // Change a field on entry2
422 entry2.setSite("site_1a");
424 myEntries = new HashMap<>();
425 theirEntries = new HashMap<>();
427 myEntries.put("pdp1", entry1);
428 theirEntries.put("pdp1", entry2);
430 result = dbAudit.compareEntries(myEntries, theirEntries);
432 // Assert that there was one mismatch
434 assertEquals(1, result.size());
435 logger.info("testResourceRegistrationEntity: Exit");