diff options
Diffstat (limited to 'controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/step/LockStep2Test.java')
-rw-r--r-- | controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/step/LockStep2Test.java | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/step/LockStep2Test.java b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/step/LockStep2Test.java new file mode 100644 index 000000000..2afd39547 --- /dev/null +++ b/controlloop/common/controller-usecases/src/test/java/org/onap/policy/drools/apps/controller/usecases/step/LockStep2Test.java @@ -0,0 +1,134 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2020 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.drools.apps.controller.usecases.step; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.concurrent.CompletableFuture; +import java.util.function.Consumer; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.policy.controlloop.VirtualControlLoopEvent; +import org.onap.policy.controlloop.actorserviceprovider.Operation; +import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; +import org.onap.policy.controlloop.actorserviceprovider.OperationProperties; +import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams; +import org.onap.policy.controlloop.eventmanager.ActorConstants; +import org.onap.policy.controlloop.eventmanager.StepContext; + +public class LockStep2Test { + private static final String MY_TARGET = "my-target"; + + @Mock + private StepContext stepContext; + @Mock + private Operation policyOper; + @Mock + private VirtualControlLoopEvent event; + @Mock + private Consumer<OperationOutcome> callback; + + private ControlLoopOperationParams params; + private CompletableFuture<OperationOutcome> future; + private Step2 master; + private LockStep2 step; + + /** + * Sets up. + */ + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + future = new CompletableFuture<>(); + + when(stepContext.requestLock(MY_TARGET)).thenReturn(future); + when(stepContext.getProperty(OperationProperties.AAI_TARGET_ENTITY)).thenReturn(MY_TARGET); + + params = ControlLoopOperationParams.builder().completeCallback(callback).build(); + + master = new Step2(stepContext, params, event) { + @Override + protected Operation buildOperation() { + return policyOper; + } + }; + + // force it to build the operation + master.init(); + + step = new LockStep2(master); + } + + @Test + public void testConstructor() { + assertEquals(ActorConstants.LOCK_ACTOR, step.getActorName()); + assertEquals(ActorConstants.LOCK_OPERATION, step.getOperationName()); + assertSame(stepContext, step.stepContext); + assertSame(event, step.event); + } + + @Test + public void testAcceptsEvent() { + // it should always accept events + assertTrue(step.acceptsEvent()); + } + + @Test + public void testStart() { + // start the operation + step.init(); + step.setProperties(); + assertTrue(step.start(100)); + + // complete the operation's future + OperationOutcome outcome = params.makeOutcome(); + outcome.setTarget(MY_TARGET); + + future.complete(outcome); + + // ensure it invoked the callback + verify(callback).accept(outcome); + } + + /** + * Tests start when the operation throws an exception. + */ + @Test + public void testStartNoFuture() { + // start the operation + step.init(); + + // force an exception by NOT invoking setProperties() + + assertTrue(step.start(100)); + + // should have already invoked the callback + verify(callback).accept(any()); + } +} |