aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopXacmlGuardTest.java425
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/TestSO.java2
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java7
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java1
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java1
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java2
-rw-r--r--controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java1
7 files changed, 13 insertions, 426 deletions
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
index 77a1ac063..000000000
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/ControlLoopXacmlGuardTest.java
+++ /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);
- }
-}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/TestSO.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/TestSO.java
index bb30598e5..3946de2ee 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/TestSO.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/TestSO.java
@@ -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());
}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java
index 66a72bc2b..35b339e0f 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/Util.java
@@ -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");
+ }
+
}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java
index d43537b80..ad44de2fe 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VCPEControlLoopTest.java
@@ -61,6 +61,7 @@ public class VCPEControlLoopTest {
/* Set environment properties */
Util.setAAIProps();
Util.setGuardProps();
+ Util.setPUProp();
}
@BeforeClass
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
index 0b0cb6d1f..00e00cc24 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VDNSControlLoopTest.java
@@ -62,6 +62,7 @@ public class VDNSControlLoopTest {
Util.setAAIProps();
Util.setSOProps();
Util.setGuardProps();
+ Util.setPUProp();
}
@BeforeClass
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java
index fbe9129bd..648ac0abf 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFCControlLoopTest.java
@@ -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());
}
diff --git a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
index 2569768f9..533e9ac69 100644
--- a/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
+++ b/controlloop/templates/template.demo/src/test/java/org/onap/policy/template/demo/VFWControlLoopTest.java
@@ -63,6 +63,7 @@ public class VFWControlLoopTest {
/* Set environment properties */
Util.setAAIProps();
Util.setGuardProps();
+ Util.setPUProp();
}
@BeforeClass