aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2021-05-04 17:34:03 -0400
committerJim Hahn <jrh3@att.com>2021-05-05 12:53:55 -0400
commitd304f7d3a058b024ab413374e1a6065411903e3c (patch)
tree08e3966a424e8234c4ba62a033aed0510852bc3f
parent7cc5fd31420bf71b41853a66c0a0b66bd9495ef3 (diff)
EventManagerServices shouldn't be static
Currently, the event manager uses a static EventManagerServices object, which precludes the possibility of configuring the actors, for each rule set, from using different properties. Modified the code to allow the rules to specify the event services to use on a per manager basis. Issue-ID: POLICY-3260 Change-Id: If493ae1b55cb752f11e0b2f72dced9c4f3883e34 Signed-off-by: Jim Hahn <jrh3@att.com>
-rw-r--r--controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java8
-rw-r--r--controlloop/common/controller-usecases/src/main/resources/usecases.drl26
-rw-r--r--controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManagerTest.java60
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEvent.java7
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcome.java7
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithSteps.java7
-rw-r--r--controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManager.java26
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEventTest.java28
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcomeTest.java30
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithStepsTest.java39
-rw-r--r--controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ControlLoopEventManagerTest.java33
11 files changed, 138 insertions, 133 deletions
diff --git a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java
index 4db243408..cb71f8ea0 100644
--- a/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java
+++ b/controlloop/common/controller-usecases/src/main/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManager.java
@@ -51,6 +51,7 @@ import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOp
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
import org.onap.policy.controlloop.eventmanager.ActorConstants;
import org.onap.policy.controlloop.eventmanager.ClEventManagerWithEvent;
+import org.onap.policy.controlloop.eventmanager.EventManagerServices;
import org.onap.policy.controlloop.eventmanager.StepContext;
import org.onap.policy.drools.apps.controller.usecases.step.AaiCqStep2;
import org.onap.policy.drools.apps.controller.usecases.step.AaiGetPnfStep2;
@@ -105,16 +106,17 @@ public class UsecasesEventManager extends ClEventManagerWithEvent<Step2> impleme
/**
* Constructs the object.
*
+ * @param services services the manager should use when processing the event
* @param params control loop parameters
* @param event event to be managed by this object
* @param workMem working memory to update if this changes
* @throws ControlLoopException if the event is invalid or if a YAML processor cannot
* be created
*/
- public UsecasesEventManager(ControlLoopParams params, VirtualControlLoopEvent event, WorkingMemory workMem)
- throws ControlLoopException {
+ public UsecasesEventManager(EventManagerServices services, ControlLoopParams params, VirtualControlLoopEvent event,
+ WorkingMemory workMem) throws ControlLoopException {
- super(params, event, workMem);
+ super(services, params, event, workMem);
if (isClosedLoopDisabled(event)) {
throw new IllegalStateException("is-closed-loop-disabled is set to true on VServer or VNF");
diff --git a/controlloop/common/controller-usecases/src/main/resources/usecases.drl b/controlloop/common/controller-usecases/src/main/resources/usecases.drl
index 49ab78d71..5074215bb 100644
--- a/controlloop/common/controller-usecases/src/main/resources/usecases.drl
+++ b/controlloop/common/controller-usecases/src/main/resources/usecases.drl
@@ -45,6 +45,7 @@ import org.onap.policy.drools.apps.controller.usecases.UsecasesEventManager;
import org.onap.policy.controlloop.eventmanager.ClEventManagerWithSteps.State;
import org.onap.policy.controlloop.eventmanager.ClEventManagerWithOutcome.OperationOutcome2;
import org.onap.policy.controlloop.eventmanager.ClEventManagerWithEvent.NewEventStatus;
+import org.onap.policy.controlloop.eventmanager.EventManagerServices;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.slf4j.LoggerFactory;
@@ -52,6 +53,27 @@ import org.slf4j.Logger;
import org.onap.policy.drools.system.PolicyEngineConstants;
+
+/*
+* Called at initial start-up, to create the event services that will be used by all
+* event managers in this rule engine instance.
+*/
+rule "CREATE.EVENT.SERVICES"
+ when
+ not (EventManagerServices())
+ then
+
+ Logger logger = LoggerFactory.getLogger(drools.getRule().getPackage());
+ logger.info("{}", drools.getRule().getName());
+
+ try {
+ insert(new EventManagerServices("event-manager"));
+
+ } catch(RuntimeException e) {
+ logger.warn("{}: cannot create event services", drools.getRule().getName(), e);
+ }
+end
+
/*
*
* Called when the ControlLoopParams object has been inserted into working memory from the PAP.
@@ -114,6 +136,7 @@ rule "EVENT"
when
$params : ControlLoopParams( $clName : getClosedLoopControlName() )
$event : CanonicalOnset( closedLoopControlName == $clName )
+ $services : EventManagerServices()
not ( UsecasesEventManager( closedLoopControlName == $event.getClosedLoopControlName(),
getEvent() == $event ) )
then
@@ -144,7 +167,8 @@ rule "EVENT"
notification.setPolicyVersion($params.getPolicyVersion());
} else {
- UsecasesEventManager manager = new UsecasesEventManager($params, $event, drools.getWorkingMemory());
+ UsecasesEventManager manager =
+ new UsecasesEventManager($services, $params, $event, drools.getWorkingMemory());
insert(manager);
try {
// load the first policy/step
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManagerTest.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManagerTest.java
index 318d6b7cc..434939d5d 100644
--- a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManagerTest.java
+++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/UsecasesEventManagerTest.java
@@ -57,7 +57,6 @@ import org.onap.policy.controlloop.ControlLoopException;
import org.onap.policy.controlloop.ControlLoopResponse;
import org.onap.policy.controlloop.ControlLoopTargetType;
import org.onap.policy.controlloop.VirtualControlLoopEvent;
-import org.onap.policy.controlloop.actorserviceprovider.ActorService;
import org.onap.policy.controlloop.actorserviceprovider.Operation;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
import org.onap.policy.controlloop.actorserviceprovider.OperationProperties;
@@ -68,6 +67,7 @@ import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOp
import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
import org.onap.policy.controlloop.eventmanager.ActorConstants;
+import org.onap.policy.controlloop.eventmanager.EventManagerServices;
import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
import org.onap.policy.drools.apps.controller.usecases.step.AaiCqStep2;
import org.onap.policy.drools.apps.controller.usecases.step.AaiGetPnfStep2;
@@ -113,7 +113,7 @@ public class UsecasesEventManagerTest {
@Mock
private Actor policyActor;
@Mock
- private ActorService actors;
+ private EventManagerServices services;
@Mock
private OperationHistoryDataManager dataMgr;
@Mock
@@ -134,6 +134,8 @@ public class UsecasesEventManagerTest {
*/
@Before
public void setUp() throws ControlLoopException, CoderException {
+ when(services.getDataManager()).thenReturn(dataMgr);
+
when(workMem.getFactHandle(any())).thenReturn(factHandle);
event = new VirtualControlLoopEvent();
@@ -154,7 +156,7 @@ public class UsecasesEventManagerTest {
locks = new ArrayList<>();
- mgr = new MyManager(params, event, workMem);
+ mgr = new MyManager(services, params, event, workMem);
}
@Test
@@ -165,37 +167,37 @@ public class UsecasesEventManagerTest {
Map<String, String> orig = event.getAai();
event.setAai(addAai(orig, UsecasesConstants.VSERVER_IS_CLOSED_LOOP_DISABLED, "true"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.hasMessage("is-closed-loop-disabled is set to true on VServer or VNF");
// vserver ACTIVE
event.setAai(addAai(orig, UsecasesConstants.VSERVER_PROV_STATUS,
UsecasesConstants.PROV_STATUS_ACTIVE.toUpperCase()));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
// vserver active
event.setAai(addAai(orig, UsecasesConstants.VSERVER_PROV_STATUS,
UsecasesConstants.PROV_STATUS_ACTIVE.toLowerCase()));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
// vserver inactive
event.setAai(addAai(orig, UsecasesConstants.VSERVER_PROV_STATUS, "inactive"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.hasMessage("prov-status is not ACTIVE on VServer or VNF");
// vnf ACTIVE
event.setAai(addAai(orig, UsecasesConstants.GENERIC_VNF_PROV_STATUS,
UsecasesConstants.PROV_STATUS_ACTIVE.toUpperCase()));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
// vnf active
event.setAai(addAai(orig, UsecasesConstants.GENERIC_VNF_PROV_STATUS,
UsecasesConstants.PROV_STATUS_ACTIVE.toLowerCase()));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
// vnf inactive
event.setAai(addAai(orig, UsecasesConstants.GENERIC_VNF_PROV_STATUS, "inactive"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.hasMessage("prov-status is not ACTIVE on VServer or VNF");
// valid
@@ -204,7 +206,7 @@ public class UsecasesEventManagerTest {
// invalid
event.setTarget("unknown-target");
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(ControlLoopException.class);
}
@@ -541,15 +543,15 @@ public class UsecasesEventManagerTest {
Map<String, String> orig = event.getAai();
event.setAai(addAai(orig, UsecasesConstants.VSERVER_IS_CLOSED_LOOP_DISABLED, "true"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(IllegalStateException.class);
event.setAai(addAai(orig, UsecasesConstants.GENERIC_VNF_IS_CLOSED_LOOP_DISABLED, "true"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(IllegalStateException.class);
event.setAai(addAai(orig, UsecasesConstants.PNF_IS_IN_MAINT, "true"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(IllegalStateException.class);
}
@@ -558,17 +560,17 @@ public class UsecasesEventManagerTest {
Map<String, String> orig = event.getAai();
event.setAai(addAai(orig, UsecasesConstants.VSERVER_PROV_STATUS, "ACTIVE"));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
event.setAai(addAai(orig, UsecasesConstants.VSERVER_PROV_STATUS, "inactive"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(IllegalStateException.class);
event.setAai(addAai(orig, UsecasesConstants.GENERIC_VNF_PROV_STATUS, "ACTIVE"));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
event.setAai(addAai(orig, UsecasesConstants.GENERIC_VNF_PROV_STATUS, "inactive"));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(IllegalStateException.class);
}
@@ -578,15 +580,15 @@ public class UsecasesEventManagerTest {
for (String value : Arrays.asList("yes", "y", "true", "t", "yEs", "trUe")) {
event.setAai(addAai(orig, UsecasesConstants.VSERVER_IS_CLOSED_LOOP_DISABLED, value));
- assertThatThrownBy(() -> new UsecasesEventManager(params, event, workMem))
+ assertThatThrownBy(() -> new UsecasesEventManager(services, params, event, workMem))
.isInstanceOf(IllegalStateException.class);
}
event.setAai(addAai(orig, UsecasesConstants.VSERVER_IS_CLOSED_LOOP_DISABLED, "false"));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
event.setAai(addAai(orig, UsecasesConstants.VSERVER_IS_CLOSED_LOOP_DISABLED, "no"));
- assertThatCode(() -> new UsecasesEventManager(params, event, workMem)).doesNotThrowAnyException();
+ assertThatCode(() -> new UsecasesEventManager(services, params, event, workMem)).doesNotThrowAnyException();
}
@@ -665,10 +667,10 @@ public class UsecasesEventManagerTest {
private class MyManager extends UsecasesEventManager {
private static final long serialVersionUID = 1L;
- public MyManager(ControlLoopParams params, VirtualControlLoopEvent event, WorkingMemory workMem)
- throws ControlLoopException {
+ public MyManager(EventManagerServices services, ControlLoopParams params, VirtualControlLoopEvent event,
+ WorkingMemory workMem) throws ControlLoopException {
- super(params, event, workMem);
+ super(services, params, event, workMem);
}
@Override
@@ -684,16 +686,6 @@ public class UsecasesEventManagerTest {
}
@Override
- public ActorService getActorService() {
- return actors;
- }
-
- @Override
- public OperationHistoryDataManager getDataManager() {
- return dataMgr;
- }
-
- @Override
protected PolicyEngine getPolicyEngineManager() {
return engineMgr;
}
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEvent.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEvent.java
index db7ec1d93..fef35e498 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEvent.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEvent.java
@@ -61,16 +61,17 @@ public abstract class ClEventManagerWithEvent<T extends Step> extends ClEventMan
/**
* Constructs the object.
*
+ * @param services services the manager should use when processing the event
* @param params control loop parameters
* @param event event to be managed by this object
* @param workMem working memory to update if this changes
* @throws ControlLoopException if the event is invalid or if a YAML processor cannot
* be created
*/
- public ClEventManagerWithEvent(ControlLoopParams params, VirtualControlLoopEvent event, WorkingMemory workMem)
- throws ControlLoopException {
+ public ClEventManagerWithEvent(EventManagerServices services, ControlLoopParams params,
+ VirtualControlLoopEvent event, WorkingMemory workMem) throws ControlLoopException {
- super(params, event.getRequestId(), workMem);
+ super(services, params, event.getRequestId(), workMem);
checkEventSyntax(event);
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcome.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcome.java
index a94598ef7..9d5d15808 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcome.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcome.java
@@ -70,16 +70,17 @@ public abstract class ClEventManagerWithOutcome<T extends Step> extends ClEventM
/**
* Constructs the object.
*
+ * @param services services the manager should use when processing the event
* @param params control loop parameters
* @param requestId event request ID
* @param workMem working memory to update if this changes
* @throws ControlLoopException if the event is invalid or if a YAML processor cannot
* be created
*/
- public ClEventManagerWithOutcome(ControlLoopParams params, UUID requestId, WorkingMemory workMem)
- throws ControlLoopException {
+ public ClEventManagerWithOutcome(EventManagerServices services, ControlLoopParams params, UUID requestId,
+ WorkingMemory workMem) throws ControlLoopException {
- super(params, requestId, workMem);
+ super(services, params, requestId, workMem);
}
@Override
diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithSteps.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithSteps.java
index 6f6cd0fda..0187db751 100644
--- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithSteps.java
+++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithSteps.java
@@ -130,16 +130,17 @@ public abstract class ClEventManagerWithSteps<T extends Step> extends ControlLoo
/**
* Constructs the object.
*
+ * @param services services the manager should use when processing the event
* @param params control loop parameters
* @param requestId event request ID
* @param workMem working memory to update if this changes
* @throws ControlLoopException if the event is invalid or if a YAML processor cannot
* be created
*/
- public ClEventManagerWithSteps(ControlLoopParams params, UUID requestId, WorkingMemory workMem)
- throws ControlLoopException {
+ public ClEventManagerWithSteps(EventManagerServices services, ControlLoopParams params, UUID requestId,
+ WorkingMemory workMem) throws ControlLoopException {
- super(params, requestId);
+ super(services, params, requestId);
if (requestId == null) {
throw new ControlLoopException("No request ID");
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 2c7e133af..f23f559e4 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
@@ -69,7 +69,6 @@ public class ControlLoopEventManager implements StepContext, Serializable {
private static final OperationHistoryDataManager STUB_DATA_MANAGER = new OperationHistoryDataManagerStub();
private static final String GUARD_DISABLED_PROPERTY = "guard.disabled";
- private static final String EVENT_MANAGER_SERVICE_CONFIG = "event-manager";
/**
* Counts the number of these objects that have been created. This is used by junit
@@ -84,6 +83,8 @@ public class ControlLoopEventManager implements StepContext, Serializable {
*/
private transient boolean createdByThisJvmInstance;
+ private final transient EventManagerServices services;
+
@Getter
@ToString.Include
public final String closedLoopControlName;
@@ -128,16 +129,19 @@ public class ControlLoopEventManager implements StepContext, Serializable {
/**
* Constructs the object.
*
+ * @param services services the manager should use when processing the event
* @param params control loop parameters
* @param requestId event request ID
* @throws ControlLoopException if the event is invalid or if a YAML processor cannot
* be created
*/
- public ControlLoopEventManager(ControlLoopParams params, UUID requestId) throws ControlLoopException {
+ public ControlLoopEventManager(EventManagerServices services, ControlLoopParams params, UUID requestId)
+ throws ControlLoopException {
createCount.incrementAndGet();
this.createdByThisJvmInstance = true;
+ this.services = services;
this.closedLoopControlName = params.getClosedLoopControlName();
this.requestId = requestId;
this.policyName = params.getPolicyName();
@@ -316,20 +320,6 @@ public class ControlLoopEventManager implements StepContext, Serializable {
properties.remove(name);
}
- /**
- * Initializes various components, on demand.
- */
- private static class LazyInitData {
- private static final OperationHistoryDataManager DATA_MANAGER;
- private static final ActorService ACTOR_SERVICE;
-
- static {
- EventManagerServices services = new EventManagerServices(EVENT_MANAGER_SERVICE_CONFIG);
- ACTOR_SERVICE = services.getActorService();
- DATA_MANAGER = services.getDataManager();
- }
- }
-
// the following methods may be overridden by junit tests
public Executor getExecutor() {
@@ -345,12 +335,12 @@ public class ControlLoopEventManager implements StepContext, Serializable {
}
public ActorService getActorService() {
- return LazyInitData.ACTOR_SERVICE;
+ return services.getActorService();
}
public OperationHistoryDataManager getDataManager() {
boolean guardDisabled = "true".equalsIgnoreCase(getEnvironmentProperty(GUARD_DISABLED_PROPERTY));
- return (guardDisabled ? STUB_DATA_MANAGER : LazyInitData.DATA_MANAGER);
+ return (guardDisabled ? STUB_DATA_MANAGER : services.getDataManager());
}
protected String getEnvironmentProperty(String propName) {
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEventTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEventTest.java
index 1a4c1b5b2..759ec90b1 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEventTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithEventTest.java
@@ -104,6 +104,8 @@ public class ClEventManagerWithEventTest {
@Mock
private Actor policyActor;
@Mock
+ private EventManagerServices services;
+ @Mock
private ActorService actors;
@Mock
private OperationHistoryDataManager dataMgr;
@@ -125,6 +127,9 @@ public class ClEventManagerWithEventTest {
*/
@Before
public void setUp() throws ControlLoopException, CoderException {
+ when(services.getActorService()).thenReturn(actors);
+ when(services.getDataManager()).thenReturn(dataMgr);
+
when(workMem.getFactHandle(any())).thenReturn(factHandle);
event = new VirtualControlLoopEvent();
@@ -145,7 +150,7 @@ public class ClEventManagerWithEventTest {
locks = new ArrayList<>();
- mgr = new MyManager(params, event, workMem);
+ mgr = new MyManager(services, params, event, workMem);
}
@Test
@@ -158,13 +163,14 @@ public class ClEventManagerWithEventTest {
// invalid
event.setTarget("");
- assertThatThrownBy(() -> new MyManager(params, event, workMem)).isInstanceOf(ControlLoopException.class);
+ assertThatThrownBy(() -> new MyManager(services, params, event, workMem))
+ .isInstanceOf(ControlLoopException.class);
}
@Test
public void testPopulateNotification() throws Exception {
loadPolicy(EVENT_MGR_MULTI_YAML);
- mgr = new MyManager(params, event, workMem);
+ mgr = new MyManager(services, params, event, workMem);
// before started
assertNotNull(mgr.makeNotification());
@@ -333,10 +339,10 @@ public class ClEventManagerWithEventTest {
private class MyManager extends ClEventManagerWithEvent<MyStep> {
private static final long serialVersionUID = 1L;
- public MyManager(ControlLoopParams params, VirtualControlLoopEvent event, WorkingMemory workMem)
- throws ControlLoopException {
+ public MyManager(EventManagerServices services, ControlLoopParams params, VirtualControlLoopEvent event,
+ WorkingMemory workMem) throws ControlLoopException {
- super(params, event, workMem);
+ super(services, params, event, workMem);
}
@Override
@@ -352,16 +358,6 @@ public class ClEventManagerWithEventTest {
}
@Override
- public ActorService getActorService() {
- return actors;
- }
-
- @Override
- public OperationHistoryDataManager getDataManager() {
- return dataMgr;
- }
-
- @Override
protected PolicyEngine getPolicyEngineManager() {
return engineMgr;
}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcomeTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcomeTest.java
index d64d2bbc5..ba293c1b5 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcomeTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithOutcomeTest.java
@@ -51,7 +51,6 @@ import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.controlloop.ControlLoopException;
import org.onap.policy.controlloop.ControlLoopResponse;
import org.onap.policy.controlloop.VirtualControlLoopNotification;
-import org.onap.policy.controlloop.actorserviceprovider.ActorService;
import org.onap.policy.controlloop.actorserviceprovider.Operation;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
@@ -59,7 +58,6 @@ import org.onap.policy.controlloop.actorserviceprovider.Operator;
import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
-import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
import org.onap.policy.drools.core.lock.LockCallback;
import org.onap.policy.drools.core.lock.LockImpl;
import org.onap.policy.drools.core.lock.LockState;
@@ -97,9 +95,7 @@ public class ClEventManagerWithOutcomeTest {
@Mock
private Actor policyActor;
@Mock
- private ActorService actors;
- @Mock
- private OperationHistoryDataManager dataMgr;
+ private EventManagerServices services;
@Mock
private ExecutorService executor;
@Mock
@@ -129,7 +125,7 @@ public class ClEventManagerWithOutcomeTest {
locks = new ArrayList<>();
- mgr = new MyManager(params, REQ_ID, workMem);
+ mgr = new MyManager(services, params, REQ_ID, workMem);
}
@Test
@@ -137,13 +133,14 @@ public class ClEventManagerWithOutcomeTest {
assertEquals(POLICY_NAME, mgr.getPolicyName());
// invalid
- assertThatThrownBy(() -> new MyManager(params, null, workMem)).isInstanceOf(ControlLoopException.class);
+ assertThatThrownBy(() -> new MyManager(services, params, null, workMem))
+ .isInstanceOf(ControlLoopException.class);
}
@Test
public void testLoadNextPolicy_testGetFullHistory_testGetPartialHistory() throws Exception {
loadPolicy(EVENT_MGR_MULTI_YAML);
- mgr = new MyManager(params, REQ_ID, workMem);
+ mgr = new MyManager(services, params, REQ_ID, workMem);
// start and load step for first policy
mgr.start();
@@ -249,7 +246,7 @@ public class ClEventManagerWithOutcomeTest {
@Test
public void testMakeNotification() throws Exception {
loadPolicy(EVENT_MGR_MULTI_YAML);
- mgr = new MyManager(params, REQ_ID, workMem);
+ mgr = new MyManager(services, params, REQ_ID, workMem);
// before started
assertNotNull(mgr.makeNotification());
@@ -353,9 +350,10 @@ public class ClEventManagerWithOutcomeTest {
private class MyManager extends ClEventManagerWithOutcome<MyStep> {
private static final long serialVersionUID = 1L;
- public MyManager(ControlLoopParams params, UUID requestId, WorkingMemory workMem) throws ControlLoopException {
+ public MyManager(EventManagerServices services, ControlLoopParams params, UUID requestId, WorkingMemory workMem)
+ throws ControlLoopException {
- super(params, requestId, workMem);
+ super(services, params, requestId, workMem);
}
@Override
@@ -371,16 +369,6 @@ public class ClEventManagerWithOutcomeTest {
}
@Override
- public ActorService getActorService() {
- return actors;
- }
-
- @Override
- public OperationHistoryDataManager getDataManager() {
- return dataMgr;
- }
-
- @Override
protected PolicyEngine getPolicyEngineManager() {
return engineMgr;
}
diff --git a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithStepsTest.java b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithStepsTest.java
index 06dc838e2..3a22d0cf5 100644
--- a/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithStepsTest.java
+++ b/controlloop/common/eventmanager/src/test/java/org/onap/policy/controlloop/eventmanager/ClEventManagerWithStepsTest.java
@@ -66,7 +66,6 @@ import org.onap.policy.controlloop.actorserviceprovider.Operator;
import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
-import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
import org.onap.policy.drools.core.lock.LockCallback;
import org.onap.policy.drools.core.lock.LockImpl;
import org.onap.policy.drools.core.lock.LockState;
@@ -105,11 +104,11 @@ public class ClEventManagerWithStepsTest {
@Mock
private Actor policyActor;
@Mock
- private ActorService actors;
+ private ExecutorService executor;
@Mock
- private OperationHistoryDataManager dataMgr;
+ private EventManagerServices services;
@Mock
- private ExecutorService executor;
+ private ActorService actors;
@Mock
private MyStep stepa;
@Mock
@@ -125,6 +124,8 @@ public class ClEventManagerWithStepsTest {
*/
@Before
public void setUp() throws ControlLoopException, CoderException {
+ when(services.getActorService()).thenReturn(actors);
+
when(workMem.getFactHandle(any())).thenReturn(factHandle);
params = new ControlLoopParams();
@@ -137,7 +138,7 @@ public class ClEventManagerWithStepsTest {
locks = new ArrayList<>();
- mgr = new MyManager(params, REQ_ID, workMem);
+ mgr = new MyManager(services, params, REQ_ID, workMem);
}
@Test
@@ -145,7 +146,8 @@ public class ClEventManagerWithStepsTest {
assertEquals(POLICY_NAME, mgr.getPolicyName());
// invalid
- assertThatThrownBy(() -> new MyManager(params, null, workMem)).isInstanceOf(ControlLoopException.class);
+ assertThatThrownBy(() -> new MyManager(services, params, null, workMem))
+ .isInstanceOf(ControlLoopException.class);
}
@Test
@@ -222,7 +224,7 @@ public class ClEventManagerWithStepsTest {
@Test
public void testStartInactive() throws Exception {
// make an inactive manager by deserializing it
- RealManager mgr2 = Serializer.roundTrip(new RealManager(params, REQ_ID, workMem));
+ RealManager mgr2 = Serializer.roundTrip(new RealManager(services, params, REQ_ID, workMem));
mgr = mgr2;
// cannot re-start
@@ -246,7 +248,7 @@ public class ClEventManagerWithStepsTest {
@Test
public void testLoadNextPolicy() throws Exception {
loadPolicy(EVENT_MGR_MULTI_YAML);
- mgr = new MyManager(params, REQ_ID, workMem);
+ mgr = new MyManager(services, params, REQ_ID, workMem);
// start and load step for first policy
mgr.start();
@@ -420,9 +422,10 @@ public class ClEventManagerWithStepsTest {
private class MyManager extends ClEventManagerWithSteps<MyStep> {
private static final long serialVersionUID = 1L;
- public MyManager(ControlLoopParams params, UUID requestId, WorkingMemory workMem) throws ControlLoopException {
+ public MyManager(EventManagerServices services, ControlLoopParams params, UUID requestId, WorkingMemory workMem)
+ throws ControlLoopException {
- super(params, requestId, workMem);
+ super(services, params, requestId, workMem);
}
@Override
@@ -438,16 +441,6 @@ public class ClEventManagerWithStepsTest {
}
@Override
- public ActorService getActorService() {
- return actors;
- }
-
- @Override
- public OperationHistoryDataManager getDataManager() {
- return dataMgr;
- }
-
- @Override
protected PolicyEngine getPolicyEngineManager() {
return engineMgr;
}
@@ -462,10 +455,10 @@ public class ClEventManagerWithStepsTest {
private static class RealManager extends ClEventManagerWithSteps<MyStep> {
private static final long serialVersionUID = 1L;
- public RealManager(ControlLoopParams params, UUID requestId, WorkingMemory workMem)
- throws ControlLoopException {
+ public RealManager(EventManagerServices services, ControlLoopParams params, UUID requestId,
+ WorkingMemory workMem) throws ControlLoopException {
- super(params, requestId, workMem);
+ super(services, params, requestId, workMem);
}
@Override
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 b930f57f8..ece13611b 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
@@ -28,6 +28,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.ArrayList;
@@ -50,6 +51,7 @@ import org.onap.policy.controlloop.ControlLoopException;
import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
import org.onap.policy.controlloop.actorserviceprovider.OperationResult;
import org.onap.policy.controlloop.drl.legacy.ControlLoopParams;
+import org.onap.policy.controlloop.ophistory.OperationHistoryDataManager;
import org.onap.policy.controlloop.ophistory.OperationHistoryDataManagerStub;
import org.onap.policy.drools.core.lock.LockCallback;
import org.onap.policy.drools.core.lock.LockImpl;
@@ -72,6 +74,10 @@ public class ControlLoopEventManagerTest {
@Mock
private ExecutorService executor;
+ @Mock
+ private EventManagerServices services;
+ @Mock
+ private OperationHistoryDataManager dataMgr;
private long preCreateTimeMs;
private List<LockImpl> locks;
@@ -84,6 +90,8 @@ public class ControlLoopEventManagerTest {
*/
@Before
public void setUp() throws ControlLoopException, CoderException {
+ when(services.getDataManager()).thenReturn(dataMgr);
+
params = new ControlLoopParams();
params.setClosedLoopControlName(CL_NAME);
params.setPolicyName(POLICY_NAME);
@@ -99,7 +107,7 @@ public class ControlLoopEventManagerTest {
MyManager.executor = executor;
MyManager.locks = locks;
- mgr = new MyManager(params, REQ_ID);
+ mgr = new MyManager(services, params, REQ_ID);
}
@Test
@@ -119,16 +127,16 @@ public class ControlLoopEventManagerTest {
public void testGetCreateCount() throws ControlLoopException {
long original = ControlLoopEventManager.getCreateCount();
- new MyManager(params, REQ_ID);
+ new MyManager(services, params, REQ_ID);
assertEquals(original + 1, ControlLoopEventManager.getCreateCount());
- new MyManager(params, REQ_ID);
+ new MyManager(services, params, REQ_ID);
assertEquals(original + 2, ControlLoopEventManager.getCreateCount());
}
@Test
public void testIsActive() throws Exception {
- mgr = new ControlLoopEventManager(params, REQ_ID);
+ mgr = new ControlLoopEventManager(services, params, REQ_ID);
assertTrue(mgr.isActive());
ControlLoopEventManager mgr2 = Serializer.roundTrip(mgr);
@@ -236,7 +244,7 @@ public class ControlLoopEventManagerTest {
*/
@Test
public void testReleaseLockException() throws ControlLoopException {
- mgr = new MyManager(params, REQ_ID) {
+ mgr = new MyManager(services, params, REQ_ID) {
private static final long serialVersionUID = 1L;
@Override
@@ -325,11 +333,19 @@ public class ControlLoopEventManagerTest {
}
/**
+ * Tests getDataManager() when not disabled.
+ */
+ @Test
+ public void testGetDataManagerNotDisabled() throws ControlLoopException {
+ assertThat(mgr.getDataManager()).isSameAs(dataMgr);
+ }
+
+ /**
* Tests getDataManager() when guard.disabled=true.
*/
@Test
public void testGetDataManagerDisabled() throws ControlLoopException {
- mgr = new MyManager(params, REQ_ID) {
+ mgr = new MyManager(services, params, REQ_ID) {
private static final long serialVersionUID = 1L;
@Override
@@ -368,8 +384,9 @@ public class ControlLoopEventManagerTest {
private static ExecutorService executor;
private static List<LockImpl> locks;
- public MyManager(ControlLoopParams params, UUID requestId) throws ControlLoopException {
- super(params, requestId);
+ public MyManager(EventManagerServices services, ControlLoopParams params, UUID requestId)
+ throws ControlLoopException {
+ super(services, params, requestId);
}
@Override