2 * ============LICENSE_START=======================================================
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.openecomp.policy.pap.xacml.rest.components;
23 import java.io.ByteArrayInputStream;
25 import java.io.FileOutputStream;
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.io.OutputStream;
29 import java.nio.file.Paths;
30 import java.util.Date;
31 import java.util.List;
33 import javax.persistence.EntityManager;
34 import javax.persistence.EntityManagerFactory;
35 import javax.persistence.Persistence;
36 import javax.persistence.PersistenceException;
37 import javax.persistence.Query;
39 import org.junit.Test;
40 import org.openecomp.policy.pap.xacml.rest.adapters.PolicyRestAdapter;
41 import org.openecomp.policy.pap.xacml.rest.components.ConfigPolicy;
42 import org.openecomp.policy.pap.xacml.rest.components.Policy;
43 import org.openecomp.policy.pap.xacml.rest.components.PolicyDBDao;
44 import org.openecomp.policy.pap.xacml.rest.components.PolicyDBDaoTransaction;
45 import org.openecomp.policy.pap.xacml.rest.components.PolicyDBDao.PolicyDBDaoTestClass;
46 import org.openecomp.policy.rest.XACMLRestProperties;
47 import org.openecomp.policy.rest.jpa.ActionBodyEntity;
48 import org.openecomp.policy.rest.jpa.GroupEntity;
49 import org.openecomp.policy.rest.jpa.PdpEntity;
50 import org.openecomp.policy.rest.jpa.PolicyEntity;
51 import org.openecomp.policy.rest.util.Webapps;
53 import com.att.research.xacml.api.pap.PAPException;
55 import org.openecomp.policy.xacml.api.pap.EcompPDPGroup;
56 import org.openecomp.policy.xacml.std.pap.StdPDPGroup;
57 import org.openecomp.policy.xacml.util.XACMLPolicyWriter;
58 import com.att.research.xacml.util.XACMLProperties;
60 import org.apache.commons.io.FileUtils;
61 import org.apache.commons.io.IOUtils;
62 //import org.apache.commons.logging.Log;
63 //import org.apache.commons.logging.LogFactory;
64 import org.junit.Before;
65 import org.junit.After;
66 import org.junit.Ignore;
68 import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
70 import org.junit.Assert;
71 import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
72 import org.openecomp.policy.common.logging.flexlogger.Logger;
74 @Ignore //only run locally as timing sometimes causes failures on Jenkins
75 public class PolicyDBDaoTest {
77 private static Logger logger = FlexLogger.getLogger(PolicyDBDaoTest.class);
79 PolicyDBDaoTestClass d;
82 EntityManagerFactory emf;
85 System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"xacml.pap.properties");
86 emf = Persistence.createEntityManagerFactory("testPapPU");
87 EntityManager em = emf.createEntityManager();
88 em.getTransaction().begin();
90 em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate();
91 em.createQuery("DELETE FROM PolicyEntity").executeUpdate();
92 em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate();
93 em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate();
94 em.createQuery("DELETE FROM PdpEntity").executeUpdate();
95 em.createQuery("DELETE FROM GroupEntity").executeUpdate();
97 em.getTransaction().commit();
100 em.getTransaction().rollback();
104 dbd = PolicyDBDao.getPolicyDBDaoInstance(emf);
105 dbd2 = PolicyDBDao.getPolicyDBDaoInstance(emf);
106 } catch (Exception e) {
107 //e.printStackTrace();
111 d = PolicyDBDao.getPolicyDBDaoTestClass();
115 public void cleanUp(){
116 EntityManager em = emf.createEntityManager();
117 em.getTransaction().begin();
119 em.createQuery("DELETE FROM PolicyDBDaoEntity").executeUpdate();
120 em.createQuery("DELETE FROM PolicyEntity").executeUpdate();
121 em.createQuery("DELETE FROM ConfigurationDataEntity").executeUpdate();
122 em.createQuery("DELETE FROM ActionBodyEntity").executeUpdate();
123 em.createQuery("DELETE FROM PdpEntity").executeUpdate();
124 em.createQuery("DELETE FROM GroupEntity").executeUpdate();
126 em.getTransaction().commit();
127 } catch(Exception e){
128 em.getTransaction().rollback();
132 FileUtils.forceDelete(new File("src/test/resources/junitTestCreatedDirectory"));
133 } catch (IOException e) {
140 public void getScopeAndNameAndTypeTest(){
142 String s = d.getGitPath();
143 String pathIwantToUse;
145 pathIwantToUse = "/root/users/" + s + "/org/openecomp/Config_mypolicy.xml";
147 pathIwantToUse = "C:\\root\\users\\" + s + "\\org\\openecomp\\Config_mypolicy.xml";
149 String[] snt = d.getScopeAndNameAndType(pathIwantToUse);
150 Assert.assertEquals("Scope was parsed wrong","org.openecomp", snt[0]);
151 Assert.assertEquals("Policy name was parsed wrong","Config_mypolicy.xml", snt[1]);
152 Assert.assertEquals("Policy type was parsed wrong","Config", snt[2]);
155 public void computeScopeTest(){
156 Assert.assertEquals("com",d.computeScope("C:\\Users\\testuser\\admin\\repo\\com\\", "C:\\Users\\testuser\\admin\\repo"));
157 Assert.assertEquals("org.openecomp.policy",d.computeScope("/Users/testuser/admin/repo/org/openecomp/policy", "/Users/testuser/admin/repo"));
160 public void getConfigFileTest(){
161 PolicyRestAdapter pra = new PolicyRestAdapter();
162 pra.setConfigType(ConfigPolicy.JSON_CONFIG);
163 String configFile = d.getConfigFile("Config_mypolicy.xml", "org.openecomp", pra);
164 Assert.assertEquals("org.openecomp.Config_mypolicy.json", configFile);
165 //yes, we can do action files too even though they don't have configs
166 configFile = d.getConfigFile("Action_mypolicy.xml", "org.openecomp", pra);
167 Assert.assertEquals("org.openecomp.Action_mypolicy.json", configFile);
171 public void transactionTests(){
175 // transac.commitTransaction();
177 // } catch(IllegalStateException e){
179 // } catch(Exception e2){
182 String filePath = null;
183 String xmlFile = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Policy xmlns=\"urn:oasis:names:tc:xacml:3.0:core:schema:wd-17\" PolicyId=\"urn:com:xacml:policy:id:eaa4bb64-59cf-4517-bb44-b2eeabd50b11\" Version=\"1\" RuleCombiningAlgId=\"urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides\">\n <Description></Description>\n <Target>\n <AnyOf>\n <AllOf>\n <Match MatchId=\"org.openecomp.function.regex-match\">\n <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#integer\">99</AttributeValue>\n <AttributeDesignator Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\" AttributeId=\"cpu\" DataType=\"http://www.w3.org/2001/XMLSchema#integer\" MustBePresent=\"false\"/>\n </Match>\n </AllOf>\n </AnyOf>\n </Target>\n <Rule RuleId=\"urn:com:xacml:rule:id:3350bf37-43d0-4a94-a317-febec81150d8\" Effect=\"Permit\">\n <Target/>\n <ObligationExpressions>\n <ObligationExpression ObligationId=\"test\" FulfillOn=\"Permit\">\n <AttributeAssignmentExpression AttributeId=\"performer\" Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject\">\n <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">PDPAction</AttributeValue>\n </AttributeAssignmentExpression>\n <AttributeAssignmentExpression AttributeId=\"type\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\">\n <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">REST</AttributeValue>\n </AttributeAssignmentExpression>\n <AttributeAssignmentExpression AttributeId=\"url\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\">\n <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">http://localhost:8056/pcd</AttributeValue>\n </AttributeAssignmentExpression>\n <AttributeAssignmentExpression AttributeId=\"method\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\">\n <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">GET</AttributeValue>\n </AttributeAssignmentExpression>\n <AttributeAssignmentExpression AttributeId=\"body\" Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\">\n <AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#anyURI\">$URLaction/com.Action_patbaction7.json</AttributeValue>\n </AttributeAssignmentExpression>\n </ObligationExpression>\n </ObligationExpressions>\n </Rule>\n</Policy>\n";
184 String jsonFile = "{\"actionAttribute\":\"Memory\"}";
188 InputStream in = new ByteArrayInputStream(xmlFile.getBytes());
189 String workspaceDir = "src/test/resources/junitTestCreatedDirectory/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WORKSPACE)+"/admin/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_REPOSITORY);
190 FileUtils.forceMkdir(new File(workspaceDir+"/org/openecomp"));
191 File outFile = new File(workspaceDir+"/org/openecomp/Action_mypol.xml");
192 OutputStream out = new FileOutputStream(outFile);
193 IOUtils.copy(in, out);
194 filePath = outFile.getAbsolutePath();
198 InputStream actionIn = new ByteArrayInputStream(jsonFile.getBytes());
199 String webappDir = "src/test/resources/junitTestCreatedDirectory/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WORKSPACE);
200 XACMLProperties.setProperty(XACMLRestProperties.PROP_PAP_WEBAPPS, webappDir);
201 String actionDir = Webapps.getActionHome();
202 FileUtils.forceMkdir(new File(actionDir));
203 File actionOutFile = new File(actionDir+"/org.openecomp.Action_mypol.json");
204 OutputStream actionOut = new FileOutputStream(actionOutFile);
205 IOUtils.copy(actionIn, actionOut);
211 PolicyDBDaoTransaction transac = dbd.getNewTransaction();
212 if(filePath != null){
214 transac.createPolicy(filePath, "tester");
215 transac.commitTransaction();
216 } catch(Exception e){
219 EntityManager getData = emf.createEntityManager();
220 Query getDataQuery = getData.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:name");
221 getDataQuery.setParameter("scope", "org.openecomp");
222 getDataQuery.setParameter("name","Action_mypol.xml");
223 PolicyEntity result = null;
225 result = (PolicyEntity)getDataQuery.getSingleResult();
226 } catch(Exception e){
230 Assert.assertEquals(xmlFile, result.getPolicyData());
235 transac = dbd.getNewTransaction();
236 transac.deletePolicy(filePath);
237 } catch(Exception e){
241 Assert.assertTrue(transac.isTransactionOpen());
243 transac.deletePolicy(filePath);
245 } catch(IllegalStateException e){
247 } catch(Exception e){
250 transac.commitTransaction();
251 //Assert.assertFalse(transac.isTransactionOpen());
253 transac = dbd.getNewTransaction();
254 transac.deletePolicy(filePath);
255 } catch(Exception e){
259 transac.commitTransaction();
260 //Assert.assertFalse(transac.isTransactionOpen());
261 String workspaceDir = "src/test/resources/junitTestCreatedDirectory/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WORKSPACE)+"/admin/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_REPOSITORY);
262 PolicyDBDaoTransaction willFail = dbd.getNewTransaction();
263 File fakeFile = new File("directorythatdoesnotexist/"+workspaceDir);
265 willFail.createPolicy(fakeFile.getAbsolutePath(), "user1");
267 } catch(IllegalArgumentException e){
268 if(!e.getMessage().equals("The file path could not be parsed")){
274 fakeFile = new File("directorythatdoesnotexist/"+workspaceDir+"/Action_mypol2.xml");
275 willFail = dbd.getNewTransaction();
277 willFail.createPolicy(fakeFile.getAbsolutePath(), "user1");
279 } catch(IllegalArgumentException e){
280 if(!e.getMessage().equals("The file path could not be parsed")){
286 fakeFile = new File("directorythatdoesnotexist/"+workspaceDir+"org/openecomp/Action_mypol2.xml");
287 willFail = dbd.getNewTransaction();
289 willFail.createPolicy(fakeFile.getAbsolutePath(), "user1");
291 } catch(IllegalArgumentException e){
292 if(!e.getMessage().equals("The file path does not exist")){
298 emf = Persistence.createEntityManagerFactory("testPU");
299 EntityManager aem = emf.createEntityManager();
300 Query actionQuery = aem.createQuery("SELECT a FROM ActionBodyEntity a WHERE a.actionBodyName=:actionBodyName");
301 actionQuery.setParameter("actionBodyName", "org.openecomp.Action_mypol.json");
302 List<?> actionQueryList = actionQuery.getResultList();
303 if(actionQueryList.size() < 1){
304 Assert.fail("ActionBodyEntity not found with actionBodyName=: org.openecomp.Action_mypol.json" );
305 } else if(actionQueryList.size() > 1){
306 //something went wrong
307 Assert.fail("Somehow, more than one ActionBodyEntity with the actionBodyName = org.openecomp.Action_mypol.json");
309 ActionBodyEntity abe = (ActionBodyEntity)actionQueryList.get(0);
310 logger.debug("\n\nPolicyDBDaoTest.transactionTests() Assert.assertEquals"
311 + "\n abe.getActionBody() = " + abe.getActionBody()
312 + "\n jsonFile = " + jsonFile
314 Assert.assertEquals(abe.getActionBody(),jsonFile);
320 public void createFromPolicyObject(){
321 String workspaceDir = "src/test/resources/junitTestCreatedDirectory/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WORKSPACE)+"/admin/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_REPOSITORY);
322 File parentPath = new File(workspaceDir+"/org/openecomp");
323 File scope = new File(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_WORKSPACE)+"/admin/"+XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_REPOSITORY));
324 Policy policyObject = new ConfigPolicy();
325 policyObject.policyAdapter = new PolicyRestAdapter();
326 policyObject.policyAdapter.setConfigName("testpolicy1");
327 policyObject.policyAdapter.setParentPath(parentPath.getAbsolutePath());
328 policyObject.policyAdapter.setUserGitPath(scope.getPath());
329 policyObject.policyAdapter.setPolicyDescription("my description");
330 policyObject.policyAdapter.setConfigBodyData("this is my test config file");
331 policyObject.policyAdapter.setPolicyName("testpolicy1");
332 policyObject.policyAdapter.setConfigType(ConfigPolicy.OTHER_CONFIG);
333 policyObject.policyAdapter.setPolicyType("Config");
334 PolicyType policyTypeObject = new PolicyType();
335 policyObject.policyAdapter.setPolicyData(policyTypeObject);
336 PolicyDBDaoTransaction transaction = dbd.getNewTransaction();
338 transaction.createPolicy(policyObject, "testuser1");
339 transaction.commitTransaction();
340 } catch(Exception e){
341 transaction.rollbackTransaction();
345 EntityManager getData = emf.createEntityManager();
346 Query getDataQuery = getData.createQuery("SELECT p FROM PolicyEntity p WHERE p.scope=:scope AND p.policyName=:name");
347 getDataQuery.setParameter("scope", "org.openecomp");
348 getDataQuery.setParameter("name","Config_testpolicy1.xml");
349 PolicyEntity result = null;
351 result = (PolicyEntity)getDataQuery.getSingleResult();
352 } catch(Exception e){
358 expectedData = IOUtils.toString(XACMLPolicyWriter.getXmlAsInputStream(policyTypeObject));
359 } catch (IOException e1) {
362 Assert.assertEquals(expectedData, result.getPolicyData());
365 File policyFile = new File(workspaceDir+"/org/openecomp/Config_testpolicy1.xml");
367 transaction = dbd.getNewTransaction();
368 transaction.deletePolicy(policyFile.getAbsolutePath());
369 } catch(Exception e){
373 Assert.assertTrue(transaction.isTransactionOpen());
375 transaction.deletePolicy(policyFile.getAbsolutePath());
377 } catch(IllegalStateException e){
379 } catch(Exception e){
382 transaction.commitTransaction();
383 Assert.assertFalse(transaction.isTransactionOpen());
385 transaction = dbd.getNewTransaction();
386 transaction.deletePolicy(policyFile.getAbsolutePath());
387 } catch(Exception e){
391 //Assert.assertFalse(transaction.isTransactionOpen());
392 transaction.commitTransaction();
396 public void groupTransactions(){
397 PolicyDBDaoTransaction group = dbd.getNewTransaction();
398 String groupName = "test group 1";
400 group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "this is a test group","testuser");
401 group.commitTransaction();
402 } catch(Exception e){
403 group.rollbackTransaction();
407 EntityManager em = emf.createEntityManager();
408 Query getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
409 getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName));
410 getGroup.setParameter("deleted", false);
411 List<?> groups = getGroup.getResultList();
412 if(groups.size() != 1){
415 GroupEntity groupEntity = (GroupEntity)groups.get(0);
417 Assert.assertEquals(groupName, groupEntity.getgroupName());
418 Assert.assertEquals("this is a test group", groupEntity.getDescription());
419 group = dbd.getNewTransaction();
421 EcompPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId(groupName),Paths.get("/"));
422 group.deleteGroup(groupToDelete, null,"testuser");
423 group.commitTransaction();
424 } catch(Exception e){
425 group.rollbackTransaction();
429 em = emf.createEntityManager();
430 getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
431 getGroup.setParameter("groupId", PolicyDBDao.createNewPDPGroupId(groupName));
432 getGroup.setParameter("deleted", false);
433 groups = getGroup.getResultList();
434 if(groups.size() != 0){
435 System.out.println("Group size: "+groups.size());
439 //add a pdp to a group
440 group = dbd.getNewTransaction();
442 group.createGroup(PolicyDBDao.createNewPDPGroupId(groupName), groupName, "test group", "testuser");
443 group.commitTransaction();
444 } catch(Exception e){
445 group.rollbackTransaction();
449 group = dbd.getNewTransaction();
451 group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId(groupName), "primary", "the main pdp", 3232, "testuser");
452 group.commitTransaction();
453 } catch(Exception e){
454 group.rollbackTransaction();
458 em = emf.createEntityManager();
459 Query getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
460 getPdp.setParameter("pdpId", "http://localhost:4344/pdp/");
461 getPdp.setParameter("deleted", false);
462 List<?> pdps = getPdp.getResultList();
463 if(pdps.size() != 1){
464 System.out.println("Group size: "+pdps.size());
467 PdpEntity pdp = (PdpEntity)pdps.get(0);
468 Assert.assertEquals(groupName, pdp.getGroup().getgroupName());
469 Assert.assertEquals(pdp.getPdpName(), "primary");
471 group = dbd.getNewTransaction();
473 group.removePdpFromGroup("http://localhost:4344/pdp/","testuser");
474 group.commitTransaction();
475 } catch(Exception e){
476 group.rollbackTransaction();
480 em = emf.createEntityManager();
481 getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.pdpId=:pdpId AND p.deleted=:deleted");
482 getPdp.setParameter("pdpId", "http://localhost:4344/pdp/");
483 getPdp.setParameter("deleted", false);
484 pdps = getPdp.getResultList();
485 if(pdps.size() != 0){
486 System.out.println("Group size: "+pdps.size());
491 //add some pdps to groups
492 group = dbd.getNewTransaction();
494 group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"), "testgroup1", "test group", "testuser");
495 group.commitTransaction();
496 } catch(Exception e){
497 group.rollbackTransaction();
501 group = dbd.getNewTransaction();
503 group.createGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"), "testgroup2", "test group", "testuser");
504 group.commitTransaction();
505 } catch(Exception e){
506 group.rollbackTransaction();
511 group = dbd.getNewTransaction();
513 group.addPdpToGroup("http://localhost:4344/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "primary", "the main pdp", 3232, "testuser");
514 group.commitTransaction();
515 } catch(Exception e){
516 group.rollbackTransaction();
520 group = dbd.getNewTransaction();
522 group.addPdpToGroup("http://localhost:4345/pdp/", PolicyDBDao.createNewPDPGroupId("testgroup1"), "secondary", "the second pdp", 3233, "testuser");
523 group.commitTransaction();
524 } catch(Exception e){
525 group.rollbackTransaction();
529 em = emf.createEntityManager();
530 getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted");
531 getPdp.setParameter("deleted", false);
532 pdps = getPdp.getResultList();
533 for(Object o : pdps){
534 Assert.assertEquals("testgroup1",((PdpEntity)o).getGroup().getgroupName());
538 group = dbd.getNewTransaction();
540 EcompPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup1"),Paths.get("/"));
541 EcompPDPGroup groupToMoveTo = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/"));
542 group.deleteGroup(groupToDelete, groupToMoveTo,"testuser");
543 group.commitTransaction();
544 } catch(Exception e){
545 group.rollbackTransaction();
549 em = emf.createEntityManager();
550 getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
551 getGroup.setParameter("groupId", "testgroup1");
552 getGroup.setParameter("deleted", false);
553 groups = getGroup.getResultList();
554 if(groups.size() != 0){
555 System.out.println("Group size: "+groups.size());
560 em = emf.createEntityManager();
561 getPdp = em.createQuery("SELECT p FROM PdpEntity p WHERE p.deleted=:deleted");
562 getPdp.setParameter("deleted", false);
563 pdps = getPdp.getResultList();
564 for(Object o : pdps){
565 Assert.assertEquals("testgroup2",((PdpEntity)o).getGroup().getgroupName());
569 group = dbd.getNewTransaction();
571 EcompPDPGroup groupToDelete = new StdPDPGroup(PolicyDBDao.createNewPDPGroupId("testgroup2"),Paths.get("/"));
572 EcompPDPGroup groupToMoveTo = null;
573 group.deleteGroup(groupToDelete, groupToMoveTo,"testuser");
574 group.commitTransaction();
576 } catch(PAPException pe){
577 //good, can't delete group with pdps
578 group.rollbackTransaction();
579 } catch(Exception e){
580 group.rollbackTransaction();
586 //add policy to group
589 EcompPDPGroup pdpGroup = new StdPDPGroup("testgroup2", false, "newtestgroup2", "this is my new description", Paths.get("/"));
590 group = dbd.getNewTransaction();
592 group.updateGroup(pdpGroup, "testuser");
593 group.commitTransaction();
594 }catch (Exception e){
596 group.rollbackTransaction();
599 em = emf.createEntityManager();
600 getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
601 getGroup.setParameter("groupId", "newtestgroup2");
602 getGroup.setParameter("deleted", false);
603 groups = getGroup.getResultList();
604 if(groups.size() != 1){
605 System.out.println("Group size: "+groups.size());
609 em = emf.createEntityManager();
610 getGroup = em.createQuery("SELECT g FROM GroupEntity g WHERE g.groupId=:groupId AND g.deleted=:deleted");
611 getGroup.setParameter("groupId", "testgroup2");
612 getGroup.setParameter("deleted", false);
613 groups = getGroup.getResultList();
614 if(groups.size() != 0){
615 System.out.println("Group size: "+groups.size());
621 //set group as default
623 //move pdp to new group
629 public void encryptionTest(){
631 String encr = d.encryptPassword("testpassword");
632 System.out.println("original password: "+"testpassword");
633 System.out.println("Encrypted password: "+encr);
634 String decr = d.decryptPassword(encr);
635 System.out.println("Decrypted password: "+decr);
636 Assert.assertEquals("testpassword", decr);
637 } catch (Exception e) {
638 // TODO Auto-generated catch block
645 public void getDescriptionFromXacmlTest(){
646 String myTestDesc = "hello this is a test";
647 String desc = d.getDescriptionFromXacml("<Description>"+myTestDesc+"</Description>");
648 Assert.assertEquals(myTestDesc, desc);
652 public void threadingStabilityTest(){
653 if(logger.isDebugEnabled()){
654 logger.debug("\n\n****************************"
655 + "threadingStabilityTest() entry"
656 + "******************************\n\n");
659 PolicyDBDaoTransaction t = dbd.getNewTransaction();
660 Assert.assertTrue(t.isTransactionOpen());
662 //Add 1000 ms to the timeout just to be sure it actually times out
663 int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000;
664 if(logger.isDebugEnabled()){
665 Date date= new java.util.Date();
666 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
667 + "\n sleepTime = " + sleepTime
668 + "\n TimeStamp = " + date.getTime()
671 Thread.sleep(sleepTime);
672 } catch (InterruptedException e) {
673 // TODO Auto-generated catch block
676 if(logger.isDebugEnabled()){
677 Date date= new java.util.Date();
678 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
679 + "\n Assert.assertFalse(t.isTransactionOpen() = " + t.isTransactionOpen() + ")"
680 + "\n TimeStamp = " + date.getTime()
683 Assert.assertFalse(t.isTransactionOpen());
686 if(logger.isDebugEnabled()){
687 Date date= new java.util.Date();
688 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
689 + "\n a = dbd.getNewTransaction() "
690 + "\n TimeStamp = " + date.getTime()
693 PolicyDBDaoTransaction a = dbd.getNewTransaction();
694 if(logger.isDebugEnabled()){
695 Date date= new java.util.Date();
696 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
697 + "\n Assert.assertTrue(a.isTransactionOpen() = " + a.isTransactionOpen() + ")"
698 + "\n TimeStamp = " + date.getTime()
701 Assert.assertTrue(a.isTransactionOpen());
704 //Add 1000 ms to the timeout just to be sure it actually times out
705 int sleepTime = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT)) + 1000;
706 if(logger.isDebugEnabled()){
707 Date date= new java.util.Date();
708 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
709 + "\n sleepTime = " + sleepTime
710 + "\n TimeStamp = " + date.getTime()
713 Thread.sleep(sleepTime);
714 } catch (InterruptedException e) {
715 // TODO Auto-generated catch block
718 if(logger.isDebugEnabled()){
719 Date date= new java.util.Date();
720 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
721 + "\n b = dbd.getNewTransaction() "
722 + "\n TimeStamp = " + date.getTime()
725 PolicyDBDaoTransaction b = dbd.getNewTransaction();
726 if(logger.isDebugEnabled()){
727 Date date= new java.util.Date();
728 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
729 + "\n Assert.assertFalse(a.isTransactionOpen() = " + a.isTransactionOpen() + ")"
730 + "\n TimeStamp = " + date.getTime()
733 Assert.assertFalse(a.isTransactionOpen());
734 if(logger.isDebugEnabled()){
735 Date date= new java.util.Date();
736 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
737 + "\n Assert.assertTrue(b.isTransactionOpen() = " + b.isTransactionOpen() + ")"
738 + "\n TimeStamp = " + date.getTime()
741 Assert.assertTrue(b.isTransactionOpen());
746 //Now let's test the transaction wait time timeout. Shorten the wait time to 1000 ms
747 System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_WAIT,"1000");
748 //And let's lengthen the transaction timeout to 5000 ms
749 System.setProperty(XACMLRestProperties.PROP_PAP_TRANS_TIMEOUT,"5000");
751 PolicyDBDaoTransaction t1 = dbd.getNewTransaction();
752 if(logger.isDebugEnabled()){
753 Date date= new java.util.Date();
754 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
755 + "\n Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")"
756 + "\n TimeStamp = " + date.getTime()
759 Assert.assertTrue(t1.isTransactionOpen());
760 //while it is open, get another from a different DB Dao so it will not collide on the synchronized code segment
761 //but will collide at the DB. Remember that the wait time is only 1000 ms
763 //Now the 2nd transaction has a wait timeout in 1000 ms
764 PolicyDBDaoTransaction t2 = dbd2.getNewTransaction();
766 * Give it plenty of time to time out the second transaction
767 * It will actually hang right here until it either gets the lock from the DB or the
768 * request for the DB lock times out. The timers are very sloppy so, I have given
769 * this plenty of leeway.
772 if(logger.isDebugEnabled()){
773 Date date= new java.util.Date();
774 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
775 + "\n Thread.sleep(3000)"
776 + "\n TimeStamp = " + date.getTime()
780 if(logger.isDebugEnabled()){
781 Date date= new java.util.Date();
782 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
783 + "\n Assert.assertTrue(t1.isTransactionOpen() = " + t1.isTransactionOpen() + ")"
784 + "\n Assert.assertFalse(t2.isTransactionOpen() = " + t2.isTransactionOpen() + ")"
785 + "\n TimeStamp = " + date.getTime()
788 //Assert.assertTrue(t1.isTransactionOpen());
789 //Assert.assertFalse(t2.isTransactionOpen());
791 Assert.fail("\n\nTransaction timeout of 1000 ms exceeded without a PersistenceException\n\n");
792 } catch (PersistenceException e) {
794 if(logger.isDebugEnabled()){
795 Date date= new java.util.Date();
796 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() "
797 + "\n SUCCESS! Transaction Wait Timeout worked!"
798 + "\n Caught PersistenceException = " + e
799 + "\n TimeStamp = " + date.getTime()
802 } catch (Exception e) {
803 // failure due to some other reason
804 if(logger.isDebugEnabled()){
805 Date date= new java.util.Date();
806 logger.debug("\n\nPolicyDBDaoTest.threadingStabilityTest() FAILURE"
807 + "\n Caught Exception = " + e
808 + "\n TimeStamp = " + date.getTime()
815 if(logger.isDebugEnabled()){
816 Date date= new java.util.Date();
817 logger.debug("\n\nthreadingStabilityTest() exit"
818 + "\n TimeStamp = " + date.getTime()