From 97956f188f4a8d92d734bf491d5e15a78a03459f Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Wed, 12 Sep 2018 18:01:03 -0400 Subject: implement Serializable in additional classes Change-Id: I5d5acb9d71dc49eaa9fb397da5988ba3d8bd5f1d Issue-ID: POLICY-1106 Signed-off-by: Jim Hahn --- controlloop/common/eventmanager/pom.xml | 6 +++ .../eventmanager/ControlLoopEventManager.java | 4 +- .../eventmanager/ControlLoopOperationManager.java | 8 +-- .../processor/ControlLoopProcessor.java | 6 ++- .../eventmanager/ControlLoopEventManagerTest.java | 12 ++++- .../ControlLoopOperationManagerTest.java | 63 ++++++++++++++++++++-- 6 files changed, 88 insertions(+), 11 deletions(-) (limited to 'controlloop/common/eventmanager') diff --git a/controlloop/common/eventmanager/pom.xml b/controlloop/common/eventmanager/pom.xml index deb17b8aa..6897317d5 100644 --- a/controlloop/common/eventmanager/pom.xml +++ b/controlloop/common/eventmanager/pom.xml @@ -187,6 +187,12 @@ ${project.version} provided + + org.onap.policy.common + utils-test + ${project.version} + test + org.onap.policy.drools-applications.controlloop.common simulators diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java index 930f9578f..8641ddc27 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java @@ -90,7 +90,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable { public final UUID requestID; private String controlLoopResult; - private transient ControlLoopProcessor processor = null; + private ControlLoopProcessor processor = null; private VirtualControlLoopEvent onset; private Integer numOnsets = 0; private Integer numAbatements = 0; @@ -101,7 +101,7 @@ public class ControlLoopEventManager implements LockCallback, Serializable { private LinkedList controlLoopHistory = new LinkedList<>(); private ControlLoopOperationManager currentOperation = null; private ControlLoopOperationManager lastOperationManager = null; - private transient TargetLock targetLock = null; + private TargetLock targetLock = null; private AaiGetVnfResponse vnfResponse = null; private AaiGetVserverResponse vserverResponse = null; diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager.java index 1ad1e5af7..466c826b1 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManager.java @@ -77,13 +77,13 @@ public class ControlLoopOperationManager implements Serializable { // for Drools Rule statements. // public final ControlLoopEvent onset; - public final transient Policy policy; + public final Policy policy; // // Properties used to track the Operation // private int attempts = 0; - private transient Operation currentOperation = null; + private Operation currentOperation = null; private LinkedList operationHistory = new LinkedList<>(); private PolicyResult policyResult = null; private ControlLoopEventManager eventManager = null; @@ -104,7 +104,9 @@ public class ControlLoopOperationManager implements Serializable { // // Internal class used for tracking // - private class Operation { + private class Operation implements Serializable { + private static final long serialVersionUID = 1L; + private ControlLoopOperation clOperation = new ControlLoopOperation(); private PolicyResult policyResult = null; private int attempt = 0; diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java index 3dbc25fcf..ac684fcda 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java @@ -20,6 +20,7 @@ package org.onap.policy.controlloop.processor; +import java.io.Serializable; import org.onap.policy.controlloop.ControlLoopException; import org.onap.policy.controlloop.policy.ControlLoop; import org.onap.policy.controlloop.policy.ControlLoopPolicy; @@ -29,8 +30,9 @@ import org.onap.policy.controlloop.policy.PolicyResult; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; -public class ControlLoopProcessor { - +public class ControlLoopProcessor implements Serializable { + private static final long serialVersionUID = 1L; + private final String yaml; private final ControlLoopPolicy policy; private String currentNestedPolicyId = null; diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java index 562a46e4e..1673df3be 100644 --- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java +++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java @@ -54,6 +54,7 @@ import org.onap.policy.aai.RelationshipData; import org.onap.policy.aai.RelationshipList; import org.onap.policy.aai.util.AaiException; import org.onap.policy.common.endpoints.http.server.HttpServletServer; +import org.onap.policy.common.utils.io.Serializer; import org.onap.policy.controlloop.ControlLoopEventStatus; import org.onap.policy.controlloop.ControlLoopException; import org.onap.policy.controlloop.ControlLoopNotificationType; @@ -212,7 +213,7 @@ public class ControlLoopEventManagerTest { } @Test - public void subsequentOnsetTest() { + public void subsequentOnsetTest() throws IOException { UUID requestId = UUID.randomUUID(); VirtualControlLoopEvent event = new VirtualControlLoopEvent(); event.setClosedLoopControlName("TwoOnsetTest"); @@ -555,6 +556,9 @@ public class ControlLoopEventManagerTest { VirtualControlLoopNotification clfNotification = manager.isControlLoopFinal(); assertNull(clfNotification); + + // serialize and de-serialize manager + manager = Serializer.roundTrip(manager); manager.getProcessor().nextPolicyForResult(PolicyResult.SUCCESS); clfNotification = manager.isControlLoopFinal(); @@ -626,6 +630,9 @@ public class ControlLoopEventManagerTest { ControlLoopOperationManager clom = manager.processControlLoop(); assertNotNull(clom); assertNull(clom.getOperationResult()); + + // serialize and de-serialize manager + manager = Serializer.roundTrip(manager); // Test operation in progress try { @@ -715,6 +722,9 @@ public class ControlLoopEventManagerTest { } assertNull(manager.unlockCurrentOperation()); + + // serialize and de-serialize manager + manager = Serializer.roundTrip(manager); ControlLoopOperationManager clom = manager.processControlLoop(); assertNotNull(clom); diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java index d1763f52c..dae03aa6e 100644 --- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java +++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopOperationManagerTest.java @@ -35,15 +35,12 @@ import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.HashMap; import java.util.UUID; - import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.NoResultException; import javax.persistence.NonUniqueResultException; import javax.persistence.Persistence; import javax.persistence.Query; - - import org.apache.commons.io.IOUtils; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -59,6 +56,7 @@ import org.onap.policy.appclcm.LcmRequestWrapper; import org.onap.policy.appclcm.LcmResponse; import org.onap.policy.appclcm.LcmResponseWrapper; import org.onap.policy.common.endpoints.http.server.HttpServletServer; +import org.onap.policy.common.utils.io.Serializer; import org.onap.policy.controlloop.ControlLoopEventStatus; import org.onap.policy.controlloop.ControlLoopException; import org.onap.policy.controlloop.ControlLoopNotificationType; @@ -850,4 +848,63 @@ public class ControlLoopOperationManagerTest { assertEquals(1, numEventsAfter - numEventsBefore); } + + @Test + public void testSerialization() throws Exception { + InputStream is = new FileInputStream(new File("src/test/resources/test.yaml")); + final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8); + + UUID requestId = UUID.randomUUID(); + VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent(); + onsetEvent.setClosedLoopControlName("TwoOnsetTest"); + onsetEvent.setRequestId(requestId); + onsetEvent.setTarget("generic-vnf.vnf-id"); + onsetEvent.setClosedLoopAlarmStart(Instant.now()); + onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET); + onsetEvent.setAai(new HashMap<>()); + onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne"); + + ControlLoopEventManager manager = + new ControlLoopEventManager(onsetEvent.getClosedLoopControlName(), onsetEvent.getRequestId()); + VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent); + assertNotNull(notification); + assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification()); + + Policy policy = manager.getProcessor().getCurrentPolicy(); + ControlLoopOperationManager clom = new ControlLoopOperationManager(onsetEvent, policy, manager); + assertNotNull(clom); + + clom.startOperation(onsetEvent); + assertTrue(clom.isOperationRunning()); + + clom = Serializer.roundTrip(clom); + assertNotNull(clom); + assertTrue(clom.isOperationRunning()); + + SOResponse soResponse = new SOResponse(); + final SOResponseWrapper soRw = new SOResponseWrapper(soResponse, null); + + PolicyEngine.manager.setEnvironmentProperty("guard.disabled", "false"); + PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_URL, + "http://somewhere.over.the.rainbow"); + PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_USER, "Dorothy"); + PolicyEngine.manager.setEnvironmentProperty(org.onap.policy.guard.Util.ONAP_KEY_PASS, "Toto"); + + assertEquals(PolicyResult.FAILURE, clom.onResponse(soRw)); + assertFalse(clom.isOperationRunning()); + assertEquals(1, clom.getHistory().size()); + + clom = Serializer.roundTrip(clom); + assertNotNull(clom); + assertFalse(clom.isOperationRunning()); + assertEquals(1, clom.getHistory().size()); + + System.setProperty("OperationsHistoryPU", "TestOperationsHistoryPU"); + assertEquals(PolicyResult.FAILURE, clom.onResponse(soRw)); + + clom = Serializer.roundTrip(clom); + assertNotNull(clom); + assertFalse(clom.isOperationRunning()); + assertEquals(1, clom.getHistory().size()); + } } -- cgit 1.2.3-korg