Modify ONAP PAP REST classes basic checkstyle
[policy/engine.git] / ONAP-PAP-REST / src / test / java / org / onap / policy / pap / xacml / rest / components / PolicyDBDaoTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PAP-REST
4  * ================================================================================
5  * Copyright (C) 2017-2018 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.pap.xacml.rest.components;
22
23 import static org.junit.Assert.fail;
24
25 import java.io.File;
26 import java.io.IOException;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29 import java.util.Date;
30 import java.util.List;
31
32 import javax.persistence.EntityManager;
33 import javax.persistence.EntityManagerFactory;
34 import javax.persistence.Persistence;
35 import javax.persistence.PersistenceException;
36 import javax.persistence.Query;
37
38 import org.apache.commons.io.FileUtils;
39 import org.apache.commons.io.IOUtils;
40 import org.junit.After;
41 import org.junit.Assert;
42 import org.junit.Before;
43 import org.junit.Ignore;
44 import org.junit.Test;
45 import org.mockito.Mockito;
46 import org.onap.policy.common.logging.flexlogger.FlexLogger;
47 import org.onap.policy.common.logging.flexlogger.Logger;
48 import org.onap.policy.pap.xacml.rest.components.PolicyDBDao.PolicyDBDaoTestClass;
49 import org.onap.policy.rest.XACMLRestProperties;
50 import org.onap.policy.rest.adapter.PolicyRestAdapter;
51 import org.onap.policy.rest.dao.PolicyDBException;
52 import org.onap.policy.rest.jpa.GroupEntity;
53 import org.onap.policy.rest.jpa.PdpEntity;
54 import org.onap.policy.rest.jpa.PolicyEntity;
55 import org.onap.policy.xacml.api.pap.OnapPDPGroup;
56 import org.onap.policy.xacml.std.pap.StdEngine;
57 import org.onap.policy.xacml.std.pap.StdPDPGroup;
58 import org.onap.policy.xacml.util.XACMLPolicyWriter;
59
60 import com.att.research.xacml.api.pap.PAPException;
61 import com.att.research.xacml.util.XACMLProperties;
62
63 import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
64 import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
65
66 public class PolicyDBDaoTest extends Mockito{
67
68     private static Logger logger = FlexLogger.getLogger(PolicyDBDaoTest.class);
69
70     PolicyDBDaoTestClass d;
71     PolicyDBDao dbd;
72     PolicyDBDao dbd2;
73     EntityManagerFactory emf;
74     private Path repository;
75     StdEngine stdEngine = null;
76
77     @Before
78     public void init() throws PAPException, IOException{
79         System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties");
80         emf = Persistence.createEntityManagerFactory("testPapPU");
81         EntityManager em = emf.createEntityManager();
82         em.getTransaction().begin();
83         try{
84             em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate();
85             em.createQuery("DELETE FROM PolicyEntity").executeUpdate();
86             em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate();
87             em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate();
88             em.createQuery("DELETE FROM PdpEntity").executeUpdate();
89             em.createQuery("DELETE FROM GroupEntity").executeUpdate();
90
91             em.getTransaction().commit();
92         } catch(Exception e){
93             logger.error("Exception Occured"+e);
94             em.getTransaction().rollback();
95         }
96         em.close();
97         try {
98             dbd = PolicyDBDao.getPolicyDBDaoInstance(emf);
99             dbd2 = PolicyDBDao.getPolicyDBDaoInstance(emf);
100         } catch (Exception e) {
101             Assert.fail();
102         }
103
104         d = PolicyDBDao.getPolicyDBDaoTestClass();
105         PolicyDBDao.setJunit(true);
106         repository = Paths.get("src/test/resources/pdps");
107         stdEngine = new StdEngine(repository);
108         dbd.setPapEngine(stdEngine);
109     }
110
111     @After
112     public void cleanUp(){
113         PolicyDBDao.setJunit(false);
114         EntityManager em = emf.createEntityManager();
115         em.getTransaction().begin();
116         try{
117         em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate();
118         em.createQuery("DELETE FROM PolicyEntity").executeUpdate();
119         em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate();
120         em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate();
121         em.createQuery("DELETE FROM PdpEntity").executeUpdate();
122         em.createQuery("DELETE FROM GroupEntity").executeUpdate();
123
124         em.getTransaction().commit();
125         } catch(Exception e){
126             em.getTransaction().rollback();
127         }
128         em.close();
129         try {
130             FileUtils.forceDelete(new File("src/test/resources/junitTestCreatedDirectory"));
131         } catch (IOException e) {
132             //could not delete
133         }
134     }
135
136     @Test
137     public void getConfigFileTest(){
138         PolicyRestAdapter pra = new PolicyRestAdapter();
139         pra.setConfigType(ConfigPolicy.JSON_CONFIG);
140         String configFile = d.getConfigFile("Config_mypolicy.xml", "org.onap", pra);
141         Assert.assertEquals("org.onap.Config_mypolicy.json", configFile);
142         //yes, we can do action files too even though they don't have configs
143         configFile = d.getConfigFile("Action_mypolicy.xml", "org.onap", pra);
144         Assert.assertEquals("org.onap.Action_mypolicy.json", configFile);
145     }
146
147     @Test
148     public void createFromPolicyObject(){
149         Policy policyObject = new ConfigPolicy();
150         policyObject.policyAdapter = new PolicyRestAdapter();
151         policyObject.policyAdapter.setConfigName("testpolicy1");
152         policyObject.policyAdapter.setPolicyDescription("my description");
153         policyObject.policyAdapter.setConfigBodyData("this is my test config file");
154         policyObject.policyAdapter.setPolicyName("SampleTest1206");
155         policyObject.policyAdapter.setConfigType(ConfigPolicy.OTHER_CONFIG);
156         policyObject.policyAdapter.setPolicyType("Config");
157         policyObject.policyAdapter.setDomainDir("com");
158         policyObject.policyAdapter.setVersion("1");
159         PolicyType policyTypeObject = new PolicyType();
160         policyObject.policyAdapter.setPolicyData(policyTypeObject);
161         ClassLoader classLoader = getClass().getClassLoader();
162         PolicyType policyConfig = new PolicyType();
163         policyConfig.setVersion(Integer.toString(1));
164         policyConfig.setPolicyId("");
165         policyConfig.setTarget(new TargetType());
166         policyObject.policyAdapter.setData(policyConfig);
167         mock(XACMLPolicyWriter.class);
168         try {
169             policyObject.policyAdapter.setParentPath(IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml")));
170         } catch (Exception e2) {
171             fail();
172         }
173
174         PolicyDBDaoTransaction transaction = dbd.getNewTransaction();
175         try{
176             transaction.createPolicy(policyObject, "testuser1");
177             transaction.commitTransaction();
178         } catch(Exception e){
179             transaction.rollbackTransaction();
180             Assert.fail();
181         }
182
183         EntityManager getData = emf.createEntityManager();
184         Query getDataQuery = getData.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:name");
185         getDataQuery.setParameter("scope", "com");
186         getDataQuery.setParameter("name","Config_SampleTest1206.1.xml");
187         PolicyEntity result = null;
188         try{
189             result = (PolicyEntity)getDataQuery.getSingleResult();
190         } catch(Exception e){
191             logger.error("Exception Occured"+e);
192             Assert.fail();
193         }
194         String expectedData;
195         try {
196             expectedData = IOUtils.toString(classLoader.getResourceAsStream("Config_SampleTest1206.1.xml"));
197         } catch (IOException e1) {
198             expectedData = "";
199         }
200         Assert.assertEquals(expectedData, result.getPolicyData());
201         getData.close();
202         result = null;
203
204         transaction.commitTransaction();
205         Assert.assertFalse(transaction.isTransactionOpen());
206     }
207
208     @Test
209     public void groupTransactions(){
210         PolicyDBDaoTransaction group = dbd.getNewTransaction();
211         String groupName = "test group 1";
212         try{
213             group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "this is a test group","testuser");
214             group.commitTransaction();
215         } catch(Exception e){
216             group.rollbackTransaction();
217             logger.error("Exception Occured"+e);
218             Assert.fail();
219         }
220         EntityManager em = emf.createEntityManager();
221         Query getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
222         getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName));
223         getGroup.setParameter("deleted", false);
224         List<?> groups = getGroup.getResultList();
225         if(groups.size() != 1){
226             Assert.fail();
227         }
228         GroupEntity groupEntity = (GroupEntity)groups.get(0);
229         em.close();
230         Assert.assertEquals(groupName, groupEntity.getgroupName());
231         Assert.assertEquals("this is a test group", groupEntity.getDescription());
232         group = dbd.getNewTransaction();
233         try{
234             OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId(groupName),Paths.get("/"));
235             group.deleteGroup(groupToDelete, null,"testuser");
236             group.commitTransaction();
237         } catch(Exception e){
238             group.rollbackTransaction();
239             logger.error("Exception Occured"+e);
240             Assert.fail();
241         }
242         em = emf.createEntityManager();
243         getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
244         getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName));
245         getGroup.setParameter("deleted", false);
246         groups = getGroup.getResultList();
247         if(groups.size() != 0){
248             System.out.println("Group size: "+groups.size());
249             Assert.fail();
250         }
251         em.close();
252         //add a pdp to a group
253         group = dbd.getNewTransaction();
254         try{
255             group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "test group", "testuser");
256             group.commitTransaction();
257         } catch(Exception e){
258             group.rollbackTransaction();
259             logger.error("Exception Occured"+e);
260             Assert.fail();
261         }
262         group = dbd.getNewTransaction();
263         try{
264             group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId(groupName), "primary", "the main pdp", 3232, "testuser");
265             group.commitTransaction();
266         } catch(Exception e){
267             group.rollbackTransaction();
268             logger.error("Exception Occured"+e);
269             Assert.fail();
270         }
271         em = emf.createEntityManager();
272         Query getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
273         getPdp.setParameter("pdpId", "http://localhost:4344/pdp/");
274         getPdp.setParameter("deleted", false);
275         List<?> pdps = getPdp.getResultList();
276         if(pdps.size() != 1){
277             System.out.println("Group size: "+pdps.size());
278             Assert.fail();
279         }
280         PdpEntity pdp = (PdpEntity)pdps.get(0);
281         Assert.assertEquals(groupName, pdp.getGroup().getgroupName());
282         Assert.assertEquals(pdp.getPdpName(), "primary");
283         em.close();
284         group = dbd.getNewTransaction();
285         try{
286             group.removePdpFromGroup("http://localhost:4344/pdp/","testuser");
287             group.commitTransaction();
288         } catch(Exception e){
289             group.rollbackTransaction();
290             logger.error("Exception Occured"+e);
291             Assert.fail();
292         }
293         em = emf.createEntityManager();
294         getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
295         getPdp.setParameter("pdpId", "http://localhost:4344/pdp/");
296         getPdp.setParameter("deleted", false);
297         pdps = getPdp.getResultList();
298         if(pdps.size() != 0){
299             System.out.println("Group size: "+pdps.size());
300             Assert.fail();
301         }
302         em.close();
303
304         //add some pdps to groups
305         group = dbd.getNewTransaction();
306         try{
307             group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"), "testgroup1", "test group", "testuser");
308             group.commitTransaction();
309         } catch(Exception e){
310             group.rollbackTransaction();
311             logger.error("Exception Occured"+e);
312             Assert.fail();
313         }
314         group = dbd.getNewTransaction();
315         try{
316             group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"), "testgroup2", "test group", "testuser");
317             group.commitTransaction();
318         } catch(Exception e){
319             group.rollbackTransaction();
320             logger.error("Exception Occured"+e);
321             Assert.fail();
322         }
323
324         group = dbd.getNewTransaction();
325         try{
326             group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "primary", "the main pdp", 3232, "testuser");
327             group.commitTransaction();
328         } catch(Exception e){
329             group.rollbackTransaction();
330             logger.error("Exception Occured"+e);
331             Assert.fail();
332         }
333         group = dbd.getNewTransaction();
334         try{
335             group.addPdpToGroup("http://localhost:4345/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "secondary", "the second pdp", 3233, "testuser");
336             group.commitTransaction();
337         } catch(Exception e){
338             group.rollbackTransaction();
339             logger.error("Exception Occured"+e);
340             Assert.fail();
341         }
342         em = emf.createEntityManager();
343         getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted");
344         getPdp.setParameter("deleted", false);
345         pdps = getPdp.getResultList();
346         for(Object o : pdps){
347             Assert.assertEquals("testgroup1",((PdpEntity)o).getGroup().getgroupName());
348         }
349         em.close();
350
351         group = dbd.getNewTransaction();
352         try{
353             OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"),Paths.get("/"));
354             OnapPDPGroup groupToMoveTo = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/"));
355             group.deleteGroup(groupToDelete, groupToMoveTo,"testuser");
356             group.commitTransaction();
357         } catch(Exception e){
358             group.rollbackTransaction();
359             logger.error("Exception Occured"+e);
360             Assert.fail();
361         }
362         em = emf.createEntityManager();
363         getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
364         getGroup.setParameter("groupId", "testgroup1");
365         getGroup.setParameter("deleted", false);
366         groups = getGroup.getResultList();
367         if(groups.size() != 0){
368             System.out.println("Group size: "+groups.size());
369             Assert.fail();
370         }
371         em.close();
372
373         em = emf.createEntityManager();
374         getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted");
375         getPdp.setParameter("deleted", false);
376         pdps = getPdp.getResultList();
377         for(Object o : pdps){
378             Assert.assertEquals("testgroup2",((PdpEntity)o).getGroup().getgroupName());
379         }
380         em.close();
381
382         group = dbd.getNewTransaction();
383         try{
384             OnapPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/"));
385             OnapPDPGroup groupToMoveTo = null;
386             group.deleteGroup(groupToDelete, groupToMoveTo,"testuser");
387             group.commitTransaction();
388             Assert.fail();
389         } catch(PolicyDBException pe){
390             //good, can't delete group with pdps
391             group.rollbackTransaction();
392         } catch(Exception e){
393             group.rollbackTransaction();
394             logger.error("Exception Occured"+e);
395             Assert.fail();
396         }
397
398         //update group
399         OnapPDPGroup pdpGroup = new StdPDPGroup("testgroup2", false, "newtestgroup2", "this is my new description", Paths.get("/"));
400         group = dbd.getNewTransaction();
401         try{
402             group.updateGroup(pdpGroup, "testuser");
403             group.commitTransaction();
404         }catch (Exception e){
405             logger.error("Exception Occured"+e);
406             group.rollbackTransaction();
407             Assert.fail();
408         }
409         em = emf.createEntityManager();
410         getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
411         getGroup.setParameter("groupId", "newtestgroup2");
412         getGroup.setParameter("deleted", false);
413         groups = getGroup.getResultList();
414         if(groups.size() != 1){
415             System.out.println("Group size: "+groups.size());
416             Assert.fail();
417         }
418         em.close();
419         em = emf.createEntityManager();
420         getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
421         getGroup.setParameter("groupId", "testgroup2");
422         getGroup.setParameter("deleted", false);
423         groups = getGroup.getResultList();
424         if(groups.size() != 0){
425             System.out.println("Group size: "+groups.size());
426             Assert.fail();
427         }
428         em.close();
429     }
430
431     @Ignore
432     @Test
433     public void threadingStabilityTest(){
434         if(logger.isDebugEnabled()){
435             logger.debug("\n\n****************************"
436                     + "threadingStabilityTest() entry"
437                     + "******************************\n\n");
438         }
439
440         PolicyDBDaoTransaction t = dbd.getNewTransaction();
441         Assert.assertTrue(t.isTransactionOpen());
442         try {
443             //Add 1000 ms to the timeout just to be sure it actually times out
444             int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000;
445             if(logger.isDebugEnabled()){
446                 Date date= new java.util.Date();
447                 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
448                         + "\n   sleepTime =  " + sleepTime
449                         + "\n   TimeStamp = " + date.getTime()
450                         + "\n\n");
451             }
452             Thread.sleep(sleepTime);
453         } catch (InterruptedException e) {
454             logger.error("Exception Occured"+e);
455         }
456         if(logger.isDebugEnabled()){
457             Date date= new java.util.Date();
458             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
459                     + "\n   Assert.assertFalse(t.isTransactionOpen() = " + t.isTransactionOpen() + ")"
460                     + "\n   TimeStamp = " + date.getTime()
461                     + "\n\n");
462         }
463         Assert.assertFalse(t.isTransactionOpen());
464
465
466         if(logger.isDebugEnabled()){
467             Date date= new java.util.Date();
468             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
469                     + "\n   a = dbd.getNewTransaction() "
470                     + "\n   TimeStamp = " + date.getTime()
471                     + "\n\n");
472         }
473         PolicyDBDaoTransaction a = dbd.getNewTransaction();
474         if(logger.isDebugEnabled()){
475             Date date= new java.util.Date();
476             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
477                     + "\n   Assert.assertTrue(a.isTransactionOpen() = " + a.isTransactionOpen() + ")"
478                     + "\n   TimeStamp = " + date.getTime()
479                     + "\n\n");
480         }
481         Assert.assertTrue(a.isTransactionOpen());
482
483         try {
484             //Add 1000 ms to the timeout just to be sure it actually times out
485             int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000;
486             if(logger.isDebugEnabled()){
487                 Date date= new java.util.Date();
488                 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
489                         + "\n   sleepTime =  " + sleepTime
490                         + "\n   TimeStamp = " + date.getTime()
491                         + "\n\n");
492             }
493             Thread.sleep(sleepTime);
494         } catch (InterruptedException e) {
495             logger.error("Exception Occured"+e);
496         }
497         if(logger.isDebugEnabled()){
498             Date date= new java.util.Date();
499             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
500                     + "\n   b = dbd.getNewTransaction() "
501                     + "\n   TimeStamp = " + date.getTime()
502                     + "\n\n");
503         }
504         PolicyDBDaoTransaction b = dbd.getNewTransaction();
505         if(logger.isDebugEnabled()){
506             Date date= new java.util.Date();
507             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
508                     + "\n   Assert.assertFalse(a.isTransactionOpen() = " + a.isTransactionOpen() + ")"
509                     + "\n   TimeStamp = " + date.getTime()
510                     + "\n\n");
511         }
512         Assert.assertFalse(a.isTransactionOpen());
513         if(logger.isDebugEnabled()){
514             Date date= new java.util.Date();
515             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
516                     + "\n   Assert.assertTrue(b.isTransactionOpen() = " + b.isTransactionOpen() + ")"
517                     + "\n   TimeStamp = " + date.getTime()
518                     + "\n\n");
519         }
520         Assert.assertTrue(b.isTransactionOpen());
521         b.close();
522
523
524
525         //Now let's test the transaction wait time timeout. Shorten the wait time to 1000 ms
526         System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT,"1000");
527         //And let's lengthen the transaction timeout to 5000 ms
528         System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT,"5000");
529         //get a transacton
530         PolicyDBDaoTransaction t1 = dbd.getNewTransaction();
531         if(logger.isDebugEnabled()){
532             Date date= new java.util.Date();
533             logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
534                     + "\n   Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")"
535                     + "\n   TimeStamp = " + date.getTime()
536                     + "\n\n");
537         }
538         Assert.assertTrue(t1.isTransactionOpen());
539         //while it is open, get another from a different DB Dao so it will not collide on the synchronized code segment
540         //but will collide at the DB. Remember that the wait time is only 1000 ms
541         try {
542             //Now the 2nd transaction has a wait timeout in 1000 ms
543             PolicyDBDaoTransaction t2 = dbd2.getNewTransaction();
544             /*
545              * Give it plenty of time to time out the second transaction
546              * It will actually hang right here until it either gets the lock from the DB or the
547              * request for the DB lock times out. The timers are very sloppy so, I have given
548              * this plenty of leeway.
549              */
550
551             if(logger.isDebugEnabled()){
552                 Date date= new java.util.Date();
553                 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
554                         + "\n   Thread.sleep(3000)"
555                         + "\n   TimeStamp = " + date.getTime()
556                         + "\n\n");
557             }
558             Thread.sleep(3000);
559             if(logger.isDebugEnabled()){
560                 Date date= new java.util.Date();
561                 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
562                         + "\n   Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")"
563                         + "\n   Assert.assertFalse(t2.isTransactionOpen() = " + t2.isTransactionOpen() + ")"
564                         + "\n   TimeStamp = " + date.getTime()
565                         + "\n\n");
566             }
567             //Assert.assertTrue(t1.isTransactionOpen());
568             //Assert.assertFalse(t2.isTransactionOpen());
569
570             Assert.fail("\n\nTransaction timeout of 1000 ms exceeded without a PersistenceException\n\n");
571         } catch (PersistenceException e) {
572             //success
573             if(logger.isDebugEnabled()){
574                 Date date= new java.util.Date();
575                 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
576                         + "\n   SUCCESS! Transaction Wait Timeout worked!"
577                         + "\n   Caught PersistenceException = " + e
578                         + "\n   TimeStamp = " + date.getTime()
579                         + "\n\n");
580             }
581         } catch (Exception e) {
582             // failure due to some other reason
583             if(logger.isDebugEnabled()){
584                 Date date= new java.util.Date();
585                 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() FAILURE"
586                         + "\n   Caught Exception = " + e
587                         + "\n   TimeStamp = " + date.getTime()
588                         + "\n\n");
589             }
590             logger.error("Exception Occured"+e);
591             Assert.fail();
592         }
593
594         if(logger.isDebugEnabled()){
595             Date date= new java.util.Date();
596             logger.debug("\n\nthreadingStabilityTest() exit"
597                     + "\n   TimeStamp = " + date.getTime()
598                     + "\n\n");
599         }
600     }
601
602 }