From 2440b81428fa4bfa28a51f87c58e12c78ced744b Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Fri, 6 Mar 2020 18:22:28 -0500 Subject: Add subrequest ID to OperationOutcome Rule notifications need the subrequest ID to be populated in the OperationOutcome object, where possible. Issue-ID: POLICY-2385 Signed-off-by: Jim Hahn Change-Id: Ic44320f67ad8df7bcb3000cfa667f95427818e71 --- .../impl/BidirectionalTopicOperation.java | 11 ++++++++--- .../impl/BidirectionalTopicOperationTest.java | 17 +++++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'models-interactions/model-actors/actorServiceProvider/src') diff --git a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java index b38ddb08a..ec522a405 100644 --- a/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java +++ b/models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java @@ -25,6 +25,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; import java.util.function.BiConsumer; import lombok.Getter; +import org.apache.commons.lang3.tuple.Pair; import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoderObject; @@ -105,7 +106,10 @@ public abstract class BidirectionalTopicOperation extends OperationPartial @Override protected CompletableFuture startOperationAsync(int attempt, OperationOutcome outcome) { - final Q request = makeRequest(attempt); + final Pair pair = makeRequest(attempt); + final Q request = pair.getRight(); + outcome.setSubRequestId(pair.getLeft()); + final List expectedKeyValues = getExpectedKeyValues(attempt, request); final PipelineControllerFuture controller = new PipelineControllerFuture<>(); @@ -142,9 +146,10 @@ public abstract class BidirectionalTopicOperation extends OperationPartial * Makes the request. * * @param attempt operation attempt - * @return a new request + * @return a pair containing sub request ID, which may be {@code null} and the new + * request */ - protected abstract Q makeRequest(int attempt); + protected abstract Pair makeRequest(int attempt); /** * Gets values, expected in the response, that should match the selector keys. diff --git a/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java b/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java index 5725a6d61..587564a2e 100644 --- a/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java +++ b/models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java @@ -40,6 +40,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; import lombok.Getter; import lombok.Setter; +import org.apache.commons.lang3.tuple.Pair; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -66,6 +67,7 @@ public class BidirectionalTopicOperationTest { private static final String OPERATION = "my-operation"; private static final String REQ_ID = "my-request-id"; private static final String TEXT = "some text"; + private static final String SUB_REQID = "my-sub-request-id"; private static final int TIMEOUT_SEC = 10; private static final long TIMEOUT_MS = 1000 * TIMEOUT_SEC; private static final int MAX_REQUESTS = 100; @@ -136,6 +138,8 @@ public class BidirectionalTopicOperationTest { CompletableFuture future = oper.startOperationAsync(1, outcome); assertFalse(future.isDone()); + assertEquals(SUB_REQID, outcome.getSubRequestId()); + verify(forwarder).register(eq(Arrays.asList(REQ_ID)), listenerCaptor.capture()); verify(forwarder, never()).unregister(any(), any()); @@ -323,13 +327,14 @@ public class BidirectionalTopicOperationTest { private class MyStringOperation extends BidirectionalTopicOperation { + public MyStringOperation() { super(BidirectionalTopicOperationTest.this.params, config, String.class); } @Override - protected String makeRequest(int attempt) { - return TEXT; + protected Pair makeRequest(int attempt) { + return Pair.of(SUB_REQID, TEXT); } @Override @@ -350,8 +355,8 @@ public class BidirectionalTopicOperationTest { } @Override - protected MyRequest makeRequest(int attempt) { - return new MyRequest(); + protected Pair makeRequest(int attempt) { + return Pair.of(SUB_REQID, new MyRequest()); } @Override @@ -372,8 +377,8 @@ public class BidirectionalTopicOperationTest { } @Override - protected MyRequest makeRequest(int attempt) { - return new MyRequest(); + protected Pair makeRequest(int attempt) { + return Pair.of(SUB_REQID, new MyRequest()); } @Override -- cgit 1.2.3-korg