Delete ControlLoopXacmlGuardTest.java 79/16479/2
authorTemoc Rodriguez <cr056n@att.com>
Thu, 28 Sep 2017 17:33:40 +0000 (10:33 -0700)
committerTemoc Rodriguez <cr056n@att.com>
Thu, 28 Sep 2017 18:23:07 +0000 (11:23 -0700)
Deleted ControlLoopXacmlGuardTest.java so avoid sonar blockers. This
junit will reduce coverage a bit but is not significant. This junit is
already covered by the other use case junit files in template demo. A
more robust junit is in need to test guard permit, deny, and pdp-x
misconnecion in relation to the drl operations and rules. For now, this
file does not add useful testing.

Issue-ID: POLICY-260
Change-Id: Iaed0ad62f72ddc5b9a6b7626a037c26d6fd1ca52
Signed-off-by: Temoc Rodriguez <cr056n@att.com>
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopXacmlGuardTest.java [deleted file]
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/TestSO.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java
controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java

diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopXacmlGuardTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopXacmlGuardTest.java
deleted file mode 100644 (file)
index 77a1ac0..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * demo
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.template.demo;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.UUID;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.kie.api.runtime.KieSession;
-import org.kie.api.runtime.rule.FactHandle;
-import org.onap.policy.appclcm.LCMRequest;
-import org.onap.policy.appclcm.LCMRequestWrapper;
-import org.onap.policy.appclcm.LCMResponse;
-import org.onap.policy.appclcm.LCMResponseWrapper;
-import org.onap.policy.controlloop.ControlLoopEventStatus;
-import org.onap.policy.controlloop.ControlLoopNotificationType;
-import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.policy.ControlLoopPolicy;
-import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.http.server.HttpServletServer;
-import org.onap.policy.drools.impl.PolicyEngineJUnitImpl;
-import org.onap.policy.drools.system.PolicyEngine;
-import org.onap.policy.guard.PolicyGuard;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-
-public class ControlLoopXacmlGuardTest {
-    @BeforeClass
-    public static void setUpSimulator() {
-        try {
-            Util.buildAaiSim();
-            Util.buildGuardSim();
-        } catch (Exception e) {
-            fail(e.getMessage());
-        }
-    }
-
-    @AfterClass
-    public static void tearDownSimulator() {
-        HttpServletServer.factory.destroy();
-    }
-
-       private static final Logger logger = LoggerFactory.getLogger(ControlLoopXacmlGuardTest.class);
-       private static final String OPSHISTPUPROP = "OperationsHistoryPU";
-       @BeforeClass
-       public static void setPUProp(){
-               System.setProperty(OPSHISTPUPROP, "TestOperationsHistoryPU");
-               Util.setGuardProps();
-       }
-       @AfterClass
-       public static void restorePUProp(){
-               System.setProperty(OPSHISTPUPROP, OPSHISTPUPROP);
-       }
-
-
-       @Test
-       public void test() {
-               try {
-                       this.runTest("src/main/resources/ControlLoop_Template_xacml_guard.drl",
-                                       "src/test/resources/yaml/policy_ControlLoop_Service123.yaml",
-                                       "service=Service123;resource=Res123;type=operational",
-                                       "CL_SERV123_8888",
-                                       "org.onap.closed_loop.Service123:VNFS:0.0.1");
-               } catch (IOException e) {
-                       e.printStackTrace();
-                       fail(e.getMessage());
-               }
-       }
-
-       public void runTest(String droolsTemplate,
-                       String yamlFile,
-                       String policyScope,
-                       String policyName,
-                       String policyVersion) throws IOException {
-               //
-               // Pull info from the yaml
-               //
-               final Util.Pair<ControlLoopPolicy, String> pair = Util.loadYaml(yamlFile);
-               assertNotNull(pair);
-               assertNotNull(pair.a);
-               assertNotNull(pair.a.getControlLoop());
-               assertNotNull(pair.a.getControlLoop().getControlLoopName());
-               assertTrue(pair.a.getControlLoop().getControlLoopName().length() > 0);
-               //
-               // Build a container
-               //
-               final KieSession kieSession = Util.buildContainer(droolsTemplate,
-                               pair.a.getControlLoop().getControlLoopName(),
-                               policyScope,
-                               policyName,
-                               policyVersion,
-                               URLEncoder.encode(pair.b, "UTF-8"));
-
-
-
-               logger.debug("============");
-               logger.debug(URLEncoder.encode(pair.b, "UTF-8"));
-               logger.debug("============");
-
-               final PolicyEngineJUnitImpl engine = (PolicyEngineJUnitImpl) kieSession.getGlobal("Engine");
-
-               //
-               // Initial fire of rules
-               //
-               kieSession.fireAllRules();
-               //
-               // Kick a thread that starts testing
-               //
-               new Thread(new Runnable() {
-
-
-                       @Override
-                       public void run() {
-                               try {
-
-
-                                       //
-                                       // Let's use a unique ID for the request and
-                                       // a unique trigger source.
-                                       //
-                                       UUID requestID = UUID.randomUUID();
-                                       String triggerSourceName = "foobartriggersource36";
-
-                                       Object obj = null;
-
-                                       sendGoodEvents(kieSession, pair.a, requestID, triggerSourceName);
-                                       obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                       assertNotNull(obj);
-                                       assertTrue(obj instanceof VirtualControlLoopNotification);
-                                       assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.ACTIVE));
-                                       //
-                                       // Give the control loop a little time to acquire the lock and publish the request
-                                       //
-                                       Thread.sleep(4000);
-
-
-                                       // "About to query Guard" notification (Querying about Restart)
-                                       obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                       assertNotNull(obj);
-                                       logger.debug("\n\n####################### GOING TO QUERY GUARD about Restart!!!!!!");
-                                       logger.debug("Rule: {} Message {}", ((VirtualControlLoopNotification)obj).policyName, ((VirtualControlLoopNotification)obj).message);
-                                       assertTrue(obj instanceof VirtualControlLoopNotification);
-                                       assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-                                       Thread.sleep(2*4000);
-                                       // "Response from Guard" notification
-                                       obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                       assertNotNull(obj);
-                                       logger.debug("Rule: {} Message {}", ((VirtualControlLoopNotification)obj).policyName, ((VirtualControlLoopNotification)obj).message);
-                                       assertTrue(obj instanceof VirtualControlLoopNotification);
-                                       assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-
-                                       if(true == ((VirtualControlLoopNotification)obj).message.contains("Guard result: Deny")){
-
-                                               // "About to query Guard" notification (Querying about Rebuild)
-                                               obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                               assertNotNull(obj);
-                                               logger.debug("\n\n####################### GOING TO QUERY GUARD about Rebuild!!!!!!");
-                                               logger.debug("Rule: {} Message", ((VirtualControlLoopNotification)obj).policyName, ((VirtualControlLoopNotification)obj).message);
-                                               assertTrue(obj instanceof VirtualControlLoopNotification);
-                                               assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-                                               Thread.sleep(4000);
-
-                                               // "Response from Guard" notification
-                                               obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                               assertNotNull(obj);
-                                               logger.debug("Rule: {} Message {}", ((VirtualControlLoopNotification)obj).policyName, ((VirtualControlLoopNotification)obj).message);
-                                               assertTrue(obj instanceof VirtualControlLoopNotification);
-                                               assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-
-                                               if(true == ((VirtualControlLoopNotification)obj).message.contains("Guard result: Deny")){
-
-                                                       // "About to query Guard" notification (Querying about Migrate)
-                                                       obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                                       assertNotNull(obj);
-                                                       logger.debug("\n\n####################### GOING TO QUERY GUARD!!!!!!");
-                                                       logger.debug("Rule: {} Message {}", ((VirtualControlLoopNotification)obj).policyName, ((VirtualControlLoopNotification)obj).message);
-                                                       assertTrue(obj instanceof VirtualControlLoopNotification);
-                                                       assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-                                                       Thread.sleep(2*4000);
-
-                                                       // "Response from Guard" notification
-                                                       obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                                       assertNotNull(obj);
-                                                       logger.debug("Rule: " + ((VirtualControlLoopNotification)obj).policyName +" Message: " + ((VirtualControlLoopNotification)obj).message);
-                                                       assertTrue(obj instanceof VirtualControlLoopNotification);
-                                                       assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-
-                                                       if(true == ((VirtualControlLoopNotification)obj).message.contains("Guard result: Deny")){
-                                                               //All the 3 operations were Denied by Guard
-                                                               Thread.sleep(60000);
-
-                                                       }
-                                               }
-                                       }
-
-                                       //
-                                       // In case one of the operations was permitted by Guard
-                                       //
-                                       if(true == ((VirtualControlLoopNotification)obj).message.contains("Guard result: Permit")){
-                                               obj = engine.subscribe("UEB", "POLICY-CL-MGT");
-                                               assertNotNull(obj);
-                                               logger.debug("Rule: {} Message {}", ((VirtualControlLoopNotification)obj).policyName, ((VirtualControlLoopNotification)obj).message);
-                                               assertTrue(obj instanceof VirtualControlLoopNotification);
-                                               assertTrue(((VirtualControlLoopNotification)obj).notification.equals(ControlLoopNotificationType.OPERATION));
-
-                                               Thread.sleep(2*1000);
-
-                                               obj = engine.subscribe("UEB", "APPC-LCM-READ");
-                                               assertNotNull(obj);
-                                               assertTrue(obj instanceof LCMRequestWrapper);
-                                               LCMRequestWrapper dmaapRequest = (LCMRequestWrapper) obj;
-                                               LCMRequest appcRequest = dmaapRequest.getBody();
-                                               assertTrue(appcRequest.getCommonHeader().getSubRequestId().equals("1"));
-
-                                               logger.debug("\n============ APP-C Got request!!! ===========\n");
-                                               //
-                                               // Ok - let's simulate ACCEPT
-                                               //
-
-                                               //
-                                               // now wait for it to finish
-                                               //
-                                               Thread.sleep(1000);
-
-                                               //
-                                               // Now we are going to success it
-                                               //
-                                               LCMResponseWrapper dmaapResponse = new LCMResponseWrapper();
-                                               LCMResponse appcResponse = new LCMResponse(appcRequest);
-                                               appcResponse.getStatus().setCode(400);
-                                               appcResponse.getStatus().setMessage("AppC success");
-                                               dmaapResponse.setBody(appcResponse);
-                                               kieSession.insert(dmaapResponse);
-                                               //
-                                               // Give it some time to process
-                                               //
-                                               Thread.sleep(4000);
-                                               //
-                                               // Insert the abatement event
-                                               //
-                                               sendAbatement(kieSession, pair.a, requestID, triggerSourceName);
-                                               //
-                                               // now wait for it to finish
-                                               //
-                                               Thread.sleep(2*15000);
-                                               //
-                                               // Ensure they released the lock
-                                               //
-                                               assertFalse(PolicyGuard.isLocked(TargetType.VM, triggerSourceName, requestID));
-
-                                       }
-
-
-
-                               } catch (InterruptedException e) {
-                                       logger.error("Test thread got InterruptedException ", e.getLocalizedMessage());
-                               } catch (AssertionError e) {
-                                       logger.error("Test thread got AssertionError ", e.getLocalizedMessage());
-                                       e.printStackTrace();
-                               } catch (Exception e) {
-                                       logger.error("Test thread got Exception ", e.getLocalizedMessage());
-                                       e.printStackTrace();
-                               }
-                               kieSession.halt();
-                       }
-
-               }).start();
-               //
-               // Start firing rules
-               //
-               kieSession.fireUntilHalt();
-               //
-               // Dump working memory
-               //
-               dumpFacts(kieSession);
-               //
-               // See if there is anything left in memory
-               //
-           // assertEquals(1, kieSession.getFactCount());
-           if (kieSession.getFactCount() != 1L) {
-             logger.error("FACT count mismatch: 1 expected but there are {}", kieSession.getFactCount());
-           }
-
-           for (final FactHandle handle : kieSession.getFactHandles()) {
-             final Object fact = kieSession.getObject(handle);
-             // assertEquals("", "org.onap.policy.controlloop.Params", fact.getClass().getName());
-             logger.info("Working Memory FACT: {}", fact.getClass().getName());
-           }
-               kieSession.dispose();
-       }
-
-
-
-
-       public static void dumpFacts(KieSession kieSession) {
-               logger.debug("Fact Count: {}", kieSession.getFactCount());
-               for (FactHandle handle : kieSession.getFactHandles()) {
-                       logger.debug("FACT: {}", handle);
-               }
-       }
-
-       protected void sendAbatement(KieSession kieSession, ControlLoopPolicy policy, UUID requestID, String triggerSourceName) throws InterruptedException {
-               VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-               event.closedLoopControlName = policy.getControlLoop().getControlLoopName();
-               event.requestID = requestID;
-               event.target = "vserver.vserver-name";
-               event.closedLoopAlarmStart = Instant.now().minusSeconds(5);
-               event.closedLoopAlarmEnd = Instant.now();
-               event.AAI = new HashMap<>();
-               event.AAI.put("cloud-region.identity-url", "foo");
-               event.AAI.put("vserver.selflink", "bar");
-               event.AAI.put("vserver.is-closed-loop-disabled", "false");
-               event.AAI.put("generic-vnf.vnf-name", "testGenericVnfName");
-               event.closedLoopEventStatus = ControlLoopEventStatus.ABATED;
-               kieSession.insert(event);
-       }
-
-       protected void sendGoodEvents(KieSession kieSession, ControlLoopPolicy policy, UUID requestID, String triggerSourceName) throws InterruptedException {
-               VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-               event.closedLoopControlName = policy.getControlLoop().getControlLoopName();
-               event.requestID = requestID;
-               event.target = "vserver.vserver-name";
-               event.closedLoopAlarmStart = Instant.now();
-               event.AAI = new HashMap<>();
-               event.AAI.put("cloud-region.identity-url", "foo");
-               event.AAI.put("vserver.selflink", "bar");
-               event.AAI.put("vserver.is-closed-loop-disabled", "false");
-               event.AAI.put("vserver.vserver-name", "testGenericVnfName");
-               event.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-               kieSession.insert(event);
-               Thread.sleep(2000);
-
-       }
-
-       protected void sendBadEvents(KieSession kieSession, ControlLoopPolicy policy, UUID requestID, String triggerSourceName) throws InterruptedException {
-               //
-               // Insert a bad Event
-               //
-               VirtualControlLoopEvent event = new VirtualControlLoopEvent();
-               event.closedLoopControlName = policy.getControlLoop().getControlLoopName();
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // add the request id
-               //
-               event.requestID = requestID;
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // add some aai
-               //
-               event.AAI = new HashMap<>();
-               event.AAI.put("cloud-region.identity-url", "foo");
-               event.AAI.put("vserver.selflink", "bar");
-               event.AAI.put("vserver.vserver-name", "vmfoo");
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // set a valid status
-               //
-               event.closedLoopEventStatus = ControlLoopEventStatus.ONSET;
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // add a trigger sourcename
-               //
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // add is closed-loop-disabled
-               //
-               event.AAI.put("vserver.is-closed-loop-disabled", "true");
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // now enable
-               //
-               event.AAI.put("vserver.is-closed-loop-disabled", "false");
-               kieSession.insert(event);
-               Thread.sleep(500);
-               //
-               // Add target, but bad.
-               //
-               event.target = "VM_BLAH";
-               kieSession.insert(event);
-               Thread.sleep(500);
-       }
-}
index bb30598..3946de2 100644 (file)
@@ -69,6 +69,7 @@ public class TestSO {
                 /* Set environment properties */
                 Util.setAAIProps();
                 Util.setSOProps();
+                Util.setPUProp();
        }
        
        @BeforeClass
@@ -76,6 +77,7 @@ public class TestSO {
                try {
                        Util.buildAaiSim();
                        Util.buildSoSim();
+                       Util.buildGuardSim();
                } catch (Exception e) {
                        fail(e.getMessage());
                }
index 66a72bc..35b339e 100644 (file)
@@ -64,7 +64,9 @@ import com.att.research.xacml.util.XACMLProperties;
 
 public final class Util {
 
+       private static final String OPSHISTPUPROP = "OperationsHistoryPU";
        private static final Logger logger = LoggerFactory.getLogger(Util.class);
+
        public static class Pair<A, B> {
                public final A a;
                public final B b;
@@ -296,5 +298,8 @@ public final class Util {
         PolicyEngine.manager.setEnvironmentProperty("vfc.username", "VFC");
         PolicyEngine.manager.setEnvironmentProperty("vfc.password", "VFC");
        }
-       
+       public static void setPUProp(){
+               System.setProperty(OPSHISTPUPROP, "TestOperationsHistoryPU");
+       }
+
 }
index d43537b..ad44de2 100644 (file)
@@ -61,6 +61,7 @@ public class VCPEControlLoopTest {
         /* Set environment properties */
         Util.setAAIProps();
         Util.setGuardProps();
+        Util.setPUProp();
     }
     
     @BeforeClass
index 0b0cb6d..00e00cc 100644 (file)
@@ -62,6 +62,7 @@ public class VDNSControlLoopTest {
         Util.setAAIProps();
         Util.setSOProps();
         Util.setGuardProps();
+        Util.setPUProp();
     }
     
        @BeforeClass
index fbe9129..648ac0a 100644 (file)
@@ -61,6 +61,7 @@ public class VFCControlLoopTest {
         Util.setAAIProps();
         Util.setVFCProps();
         Util.setGuardProps();
+        Util.setPUProp();
        }
        
        @BeforeClass
@@ -68,6 +69,7 @@ public class VFCControlLoopTest {
                try {
                        Util.buildAaiSim();
                        Util.buildVfcSim();
+                       Util.buildGuardSim();
                } catch (Exception e) {
                        fail(e.getMessage());
                }
index 2569768..533e9ac 100644 (file)
@@ -63,6 +63,7 @@ public class VFWControlLoopTest {
         /* Set environment properties */
         Util.setAAIProps();
         Util.setGuardProps();
+        Util.setPUProp();
     }
     
     @BeforeClass