Clean up and enhancement of Actor re-design
[policy/models.git] / models-interactions / model-actors / actorServiceProvider / src / test / java / org / onap / policy / controlloop / actorserviceprovider / parameters / ControlLoopOperationParamsTest.java
index 0c8e77d..9dd19d5 100644 (file)
@@ -35,6 +35,8 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.Map;
+import java.util.TreeMap;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
@@ -47,20 +49,23 @@ import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.VirtualControlLoopEvent;
 import org.onap.policy.controlloop.actorserviceprovider.ActorService;
+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.Policy;
+import org.onap.policy.controlloop.policy.Target;
 
 public class ControlLoopOperationParamsTest {
     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 String TARGET = "my-target";
+    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
@@ -70,7 +75,7 @@ public class ControlLoopOperationParamsTest {
     private ActorService actorService;
 
     @Mock
-    private Consumer<ControlLoopOperation> completer;
+    private Consumer<OperationOutcome> completer;
 
     @Mock
     private ControlLoopEventContext context;
@@ -82,19 +87,18 @@ public class ControlLoopOperationParamsTest {
     private Executor executor;
 
     @Mock
-    private CompletableFuture<ControlLoopOperation> operation;
+    private CompletableFuture<OperationOutcome> operation;
 
     @Mock
     private Operator operator;
 
     @Mock
-    private Policy policy;
+    private Consumer<OperationOutcome> starter;
 
-    @Mock
-    private Consumer<ControlLoopOperation> starter;
+    private Map<String, String> payload;
 
     private ControlLoopOperationParams params;
-    private ControlLoopOperation outcome;
+    private OperationOutcome outcome;
 
 
     /**
@@ -112,12 +116,12 @@ public class ControlLoopOperationParamsTest {
 
         when(context.getEvent()).thenReturn(event);
 
-        when(policy.getActor()).thenReturn(ACTOR);
-        when(policy.getRecipe()).thenReturn(OPERATION);
+        payload = new TreeMap<>();
 
         params = ControlLoopOperationParams.builder().actorService(actorService).completeCallback(completer)
-                        .context(context).executor(executor).policy(policy).startCallback(starter).target(TARGET)
-                        .build();
+                        .context(context).executor(executor).actor(ACTOR).operation(OPERATION).payload(payload)
+                        .retry(RETRY).target(TARGET).targetEntity(TARGET_ENTITY).timeoutSec(TIMEOUT)
+                        .startCallback(starter).build();
 
         outcome = params.makeOutcome();
     }
@@ -129,30 +133,6 @@ public class ControlLoopOperationParamsTest {
         assertThatIllegalArgumentException().isThrownBy(() -> params.toBuilder().context(null).build().start());
     }
 
-    @Test
-    public void testGetActor() {
-        assertEquals(ACTOR, params.getActor());
-
-        // try with null policy
-        assertEquals(ControlLoopOperationParams.UNKNOWN, params.toBuilder().policy(null).build().getActor());
-
-        // try with null name in the policy
-        when(policy.getActor()).thenReturn(null);
-        assertEquals(ControlLoopOperationParams.UNKNOWN, params.getActor());
-    }
-
-    @Test
-    public void testGetOperation() {
-        assertEquals(OPERATION, params.getOperation());
-
-        // try with null policy
-        assertEquals(ControlLoopOperationParams.UNKNOWN, params.toBuilder().policy(null).build().getOperation());
-
-        // try with null name in the policy
-        when(policy.getRecipe()).thenReturn(null);
-        assertEquals(ControlLoopOperationParams.UNKNOWN, params.getOperation());
-    }
-
     @Test
     public void testGetRequestId() {
         assertSame(REQ_ID, params.getRequestId());
@@ -170,20 +150,14 @@ public class ControlLoopOperationParamsTest {
         assertEquals(ACTOR, outcome.getActor());
         assertEquals(OPERATION, outcome.getOperation());
         checkRemainingFields("with actor");
-
-        // try again with a null policy
-        outcome = params.toBuilder().policy(null).build().makeOutcome();
-        assertEquals(ControlLoopOperationParams.UNKNOWN, outcome.getActor());
-        assertEquals(ControlLoopOperationParams.UNKNOWN, outcome.getOperation());
-        checkRemainingFields("unknown actor");
     }
 
     protected void checkRemainingFields(String testName) {
-        assertEquals(testName, TARGET, outcome.getTarget());
-        assertNotNull(testName, outcome.getStart());
+        assertEquals(testName, TARGET_ENTITY, outcome.getTarget());
+        assertNull(testName, outcome.getStart());
         assertNull(testName, outcome.getEnd());
         assertNull(testName, outcome.getSubRequestId());
-        assertNull(testName, outcome.getOutcome());
+        assertNotNull(testName, outcome.getResult());
         assertNull(testName, outcome.getMessage());
     }
 
@@ -239,21 +213,23 @@ public class ControlLoopOperationParamsTest {
 
     @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("policy", "null", bldr -> bldr.policy(null));
-        testValidate("target", "null", bldr -> bldr.target(null));
+        testValidate("operation", "null", bldr -> bldr.operation(null));
+        testValidate("target", "null", bldr -> bldr.targetEntity(null));
 
         // check edge cases
         assertTrue(params.toBuilder().build().validate().isValid());
 
         // these can be null
-        assertTrue(params.toBuilder().startCallback(null).completeCallback(null).build().validate().isValid());
+        assertTrue(params.toBuilder().payload(null).retry(null).target(null).timeoutSec(null).startCallback(null)
+                        .completeCallback(null).build().validate().isValid());
 
         // test with minimal fields
-        assertTrue(ControlLoopOperationParams.builder().actorService(actorService).context(context).policy(policy)
-                        .target(TARGET).build().validate().isValid());
+        assertTrue(ControlLoopOperationParams.builder().actorService(actorService).context(context).actor(ACTOR)
+                        .operation(OPERATION).targetEntity(TARGET_ENTITY).build().validate().isValid());
     }
 
     private void testValidate(String fieldName, String expected,
@@ -275,7 +251,12 @@ public class ControlLoopOperationParamsTest {
     }
 
     @Test
-    public void testActorService() {
+    public void testGetActor() {
+        assertSame(ACTOR, params.getActor());
+    }
+
+    @Test
+    public void testGetActorService() {
         assertSame(actorService, params.getActorService());
     }
 
@@ -293,8 +274,43 @@ public class ControlLoopOperationParamsTest {
     }
 
     @Test
-    public void testGetPolicy() {
-        assertSame(policy, params.getPolicy());
+    public void testGetOperation() {
+        assertSame(OPERATION, params.getOperation());
+    }
+
+    @Test
+    public void testGetPayload() {
+        assertSame(payload, params.getPayload());
+
+        // should be null when unspecified
+        assertNull(ControlLoopOperationParams.builder().build().getPayload());
+    }
+
+    @Test
+    public void testGetRetry() {
+        assertSame(RETRY, params.getRetry());
+
+        // should be null when unspecified
+        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());
+
+        // should be 300 when unspecified
+        assertEquals(Integer.valueOf(300), ControlLoopOperationParams.builder().build().getTimeoutSec());
+
+        // null should be ok too
+        assertNull(ControlLoopOperationParams.builder().timeoutSec(null).build().getTimeoutSec());
     }
 
     @Test
@@ -308,7 +324,7 @@ public class ControlLoopOperationParamsTest {
     }
 
     @Test
-    public void testGetTarget() {
-        assertEquals(TARGET, params.getTarget());
+    public void testGetTargetEntity() {
+        assertEquals(TARGET_ENTITY, params.getTargetEntity());
     }
 }