import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.onap.policy.common.parameters.BeanValidationResult;
-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.Operator;
-import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams.ControlLoopOperationParamsBuilder;
import org.onap.policy.controlloop.actorserviceprovider.spi.Actor;
-import org.onap.policy.controlloop.policy.Target;
public class ControlLoopOperationParamsTest {
+ private static final String NULL_MSG = "null";
private static final String EXPECTED_EXCEPTION = "expected exception";
private static final String ACTOR = "my-actor";
private static final String OPERATION = "my-operation";
- private static final Target TARGET = new Target();
- private static final String TARGET_ENTITY = "my-target";
private static final Integer RETRY = 3;
private static final Integer TIMEOUT = 100;
private static final UUID REQ_ID = UUID.randomUUID();
@Mock
private Consumer<OperationOutcome> completer;
- @Mock
- private ControlLoopEventContext context;
-
- @Mock
- private VirtualControlLoopEvent event;
-
@Mock
private Executor executor;
@Mock
- private CompletableFuture<OperationOutcome> operation;
+ private CompletableFuture<OperationOutcome> operFuture;
@Mock
private Operator operator;
+ @Mock
+ private Operation operation;
+
@Mock
private Consumer<OperationOutcome> starter;
- private Map<String, String> payload;
+ private Map<String, Object> payload;
private ControlLoopOperationParams params;
private OperationOutcome outcome;
when(actorService.getActor(ACTOR)).thenReturn(actor);
when(actor.getOperator(OPERATION)).thenReturn(operator);
- when(operator.startOperation(any())).thenReturn(operation);
-
- when(event.getRequestId()).thenReturn(REQ_ID);
-
- when(context.getEvent()).thenReturn(event);
+ when(operator.buildOperation(any())).thenReturn(operation);
+ when(operation.start()).thenReturn(operFuture);
payload = new TreeMap<>();
params = ControlLoopOperationParams.builder().actorService(actorService).completeCallback(completer)
- .context(context).executor(executor).actor(ACTOR).operation(OPERATION).payload(payload)
- .retry(RETRY).target(TARGET).targetEntity(TARGET_ENTITY).timeoutSec(TIMEOUT)
+ .requestId(REQ_ID).executor(executor).actor(ACTOR).operation(OPERATION).payload(payload)
+ .retry(RETRY).timeoutSec(TIMEOUT)
.startCallback(starter).build();
outcome = params.makeOutcome();
@Test
public void testStart() {
- assertSame(operation, params.start());
+ assertThatIllegalArgumentException().isThrownBy(() -> params.toBuilder().requestId(null).build().start());
- assertThatIllegalArgumentException().isThrownBy(() -> params.toBuilder().context(null).build().start());
+ assertSame(operFuture, params.start());
}
@Test
- public void testGetRequestId() {
- assertSame(REQ_ID, params.getRequestId());
+ public void testBuild() {
+ assertThatIllegalArgumentException().isThrownBy(() -> params.toBuilder().requestId(null).build().build());
- // try with null context
- assertNull(params.toBuilder().context(null).build().getRequestId());
+ assertSame(operation, params.build());
+ }
- // try with null event
- when(context.getEvent()).thenReturn(null);
- assertNull(params.getRequestId());
+ @Test
+ public void testGetRequestId() {
+ assertSame(REQ_ID, params.getRequestId());
}
@Test
public void testMakeOutcome() {
assertEquals(ACTOR, outcome.getActor());
assertEquals(OPERATION, outcome.getOperation());
- checkRemainingFields("with actor");
- }
-
- protected void checkRemainingFields(String testName) {
- assertEquals(testName, TARGET_ENTITY, outcome.getTarget());
- assertNull(testName, outcome.getStart());
- assertNull(testName, outcome.getEnd());
- assertNull(testName, outcome.getSubRequestId());
- assertNotNull(testName, outcome.getResult());
- assertNull(testName, outcome.getMessage());
+ assertNull(outcome.getStart());
+ assertNull(outcome.getEnd());
+ assertNull(outcome.getSubRequestId());
+ assertNotNull(outcome.getResult());
+ assertNull(outcome.getMessage());
}
@Test
@Test
public void testValidateFields() {
- testValidate("actor", "null", bldr -> bldr.actor(null));
- testValidate("actorService", "null", bldr -> bldr.actorService(null));
- testValidate("context", "null", bldr -> bldr.context(null));
- testValidate("executor", "null", bldr -> bldr.executor(null));
- testValidate("operation", "null", bldr -> bldr.operation(null));
- testValidate("target", "null", bldr -> bldr.targetEntity(null));
+ testValidate("actor", NULL_MSG, bldr -> bldr.actor(null));
+ testValidate("actorService", NULL_MSG, bldr -> bldr.actorService(null));
+ testValidate("executor", NULL_MSG, bldr -> bldr.executor(null));
+ testValidate("operation", NULL_MSG, bldr -> bldr.operation(null));
+ testValidate("requestId", NULL_MSG, bldr -> bldr.requestId(null));
+
+ // has no target entity
+ BeanValidationResult result = params.toBuilder().build().validate();
+ assertTrue(result.isValid());
// check edge cases
assertTrue(params.toBuilder().build().validate().isValid());
// these can be null
- assertTrue(params.toBuilder().payload(null).retry(null).target(null).timeoutSec(null).startCallback(null)
+ assertTrue(params.toBuilder().payload(null).retry(null).timeoutSec(null).startCallback(null)
.completeCallback(null).build().validate().isValid());
// test with minimal fields
- assertTrue(ControlLoopOperationParams.builder().actorService(actorService).context(context).actor(ACTOR)
- .operation(OPERATION).targetEntity(TARGET_ENTITY).build().validate().isValid());
+ assertTrue(ControlLoopOperationParams.builder().actorService(actorService).requestId(REQ_ID).actor(ACTOR)
+ .operation(OPERATION).build().validate().isValid());
}
private void testValidate(String fieldName, String expected,
assertSame(actorService, params.getActorService());
}
- @Test
- public void testGetContext() {
- assertSame(context, params.getContext());
- }
-
@Test
public void testGetExecutor() {
assertSame(executor, params.getExecutor());
assertNull(ControlLoopOperationParams.builder().build().getRetry());
}
- @Test
- public void testTarget() {
- assertSame(TARGET, params.getTarget());
-
- // should be null when unspecified
- assertNull(ControlLoopOperationParams.builder().build().getTarget());
- }
-
@Test
public void testGetTimeoutSec() {
assertSame(TIMEOUT, params.getTimeoutSec());
public void testGetCompleteCallback() {
assertSame(completer, params.getCompleteCallback());
}
-
- @Test
- public void testGetTargetEntity() {
- assertEquals(TARGET_ENTITY, params.getTargetEntity());
- }
}