Make targetEntity a property
[policy/models.git] / models-interactions / model-actors / actorServiceProvider / src / test / java / org / onap / policy / controlloop / actorserviceprovider / impl / BidirectionalTopicOperationTest.java
index 5725a6d..f63e07e 100644 (file)
@@ -35,9 +35,11 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.BiConsumer;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 import org.junit.Before;
@@ -85,6 +87,7 @@ public class BidirectionalTopicOperationTest {
     private ControlLoopOperationParams params;
     private OperationOutcome outcome;
     private StandardCoderObject stdResponse;
+    private MyResponse response;
     private String responseText;
     private PseudoExecutor executor;
     private int ntimes;
@@ -107,9 +110,11 @@ public class BidirectionalTopicOperationTest {
         executor = new PseudoExecutor();
 
         params = ControlLoopOperationParams.builder().actor(ACTOR).operation(OPERATION).executor(executor).build();
-        outcome = params.makeOutcome();
+        outcome = params.makeOutcome(null);
 
-        responseText = coder.encode(new MyResponse());
+        response = new MyResponse();
+        response.setRequestId(REQ_ID);
+        responseText = coder.encode(response);
         stdResponse = coder.decode(responseText, StandardCoderObject.class);
 
         ntimes = 1;
@@ -159,6 +164,35 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, future.get());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(response, outcome.getResponse());
+
+        verify(forwarder).unregister(eq(Arrays.asList(REQ_ID)), eq(listenerCaptor.getValue()));
+    }
+
+    /**
+     * Tests startOperationAsync() when processResponse() throws an exception.
+     */
+    @Test
+    public void testStartOperationAsyncProcException() throws Exception {
+        oper = new MyOperation() {
+            @Override
+            protected OperationOutcome processResponse(OperationOutcome outcome, String rawResponse,
+                            StandardCoderObject scoResponse) {
+                throw EXPECTED_EXCEPTION;
+            }
+        };
+
+        CompletableFuture<OperationOutcome> future = oper.startOperationAsync(1, outcome);
+        assertFalse(future.isDone());
+
+        verify(forwarder).register(eq(Arrays.asList(REQ_ID)), listenerCaptor.capture());
+
+        verify(forwarder, never()).unregister(any(), any());
+
+        // provide a response
+        listenerCaptor.getValue().accept(responseText, stdResponse);
+        assertTrue(executor.runAll(MAX_REQUESTS));
+        assertTrue(future.isCompletedExceptionally());
 
         verify(forwarder).unregister(eq(Arrays.asList(REQ_ID)), eq(listenerCaptor.getValue()));
     }
@@ -167,7 +201,7 @@ public class BidirectionalTopicOperationTest {
      * Tests startOperationAsync() when the publisher throws an exception.
      */
     @Test
-    public void testStartOperationAsyncException() throws Exception {
+    public void testStartOperationAsyncPubException() throws Exception {
         // indicate that nothing was published
         when(handler.send(any())).thenReturn(false);
 
@@ -230,6 +264,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, oper2.processResponse(outcome, TEXT, null));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(TEXT, outcome.getResponse());
     }
 
     /**
@@ -242,6 +277,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, oper2.processResponse(outcome, responseText, stdResponse));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(stdResponse, outcome.getResponse());
     }
 
     /**
@@ -258,6 +294,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, oper.processResponse(outcome, responseText, stdResponse));
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertEquals(resp, outcome.getResponse());
     }
 
     /**
@@ -267,6 +304,7 @@ public class BidirectionalTopicOperationTest {
     public void testProcessResponseDecodeOk() throws CoderException {
         assertSame(outcome, oper.processResponse(outcome, responseText, stdResponse));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(response, outcome.getResponse());
     }
 
     /**
@@ -286,8 +324,8 @@ public class BidirectionalTopicOperationTest {
     }
 
     @Test
-    public void testMakeCoder() {
-        assertNotNull(oper.makeCoder());
+    public void testGetCoder() {
+        assertNotNull(oper.getCoder());
     }
 
     /**
@@ -296,7 +334,7 @@ public class BidirectionalTopicOperationTest {
     private void setOperCoderException() {
         oper = new MyOperation() {
             @Override
-            protected Coder makeCoder() {
+            protected Coder getCoder() {
                 return new StandardCoder() {
                     @Override
                     public String encode(Object object, boolean pretty) throws CoderException {
@@ -316,15 +354,17 @@ public class BidirectionalTopicOperationTest {
 
     @Getter
     @Setter
+    @EqualsAndHashCode
     public static class MyResponse {
-        private String requestId = REQ_ID;
+        private String requestId;
         private String output;
     }
 
 
     private class MyStringOperation extends BidirectionalTopicOperation<String, String> {
+
         public MyStringOperation() {
-            super(BidirectionalTopicOperationTest.this.params, config, String.class);
+            super(BidirectionalTopicOperationTest.this.params, config, String.class, Collections.emptyList());
         }
 
         @Override
@@ -346,7 +386,8 @@ public class BidirectionalTopicOperationTest {
 
     private class MyScoOperation extends BidirectionalTopicOperation<MyRequest, StandardCoderObject> {
         public MyScoOperation() {
-            super(BidirectionalTopicOperationTest.this.params, config, StandardCoderObject.class);
+            super(BidirectionalTopicOperationTest.this.params, config, StandardCoderObject.class,
+                            Collections.emptyList());
         }
 
         @Override
@@ -368,7 +409,7 @@ public class BidirectionalTopicOperationTest {
 
     private class MyOperation extends BidirectionalTopicOperation<MyRequest, MyResponse> {
         public MyOperation() {
-            super(BidirectionalTopicOperationTest.this.params, config, MyResponse.class);
+            super(BidirectionalTopicOperationTest.this.params, config, MyResponse.class, Collections.emptyList());
         }
 
         @Override