import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Map;
import java.util.TreeMap;
-import org.apache.commons.lang3.tuple.Pair;
+import org.junit.After;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.policy.appc.CommonHeader;
import org.onap.policy.appc.Request;
import org.onap.policy.appc.ResponseCode;
import org.onap.policy.appc.ResponseStatus;
import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicOperation.Status;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicConfig;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
import org.onap.policy.controlloop.policy.PolicyResult;
public class AppcOperationTest extends BasicAppcOperation {
private AppcOperation oper;
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ // use same topic name for both sides
+ initBeforeClass(MY_SINK, MY_SINK);
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() {
+ destroyAfterClass();
+ }
+
/**
* Sets up.
*/
@Before
+ @Override
public void setUp() throws Exception {
super.setUp();
- oper = new AppcOperation(params, config) {
- @Override
- protected Pair<String, Request> makeRequest(int attempt) {
- return oper.makeRequest(attempt, MY_VNF);
- }
- };
+ oper = new MyOper(params, config);
+ }
+
+ @After
+ @Override
+ public void tearDown() {
+ super.tearDown();
}
@Test
- public void testAppcOperation() {
+ public void testConstructor() {
assertEquals(DEFAULT_ACTOR, oper.getActorName());
assertEquals(DEFAULT_OPERATION, oper.getName());
}
assertNotNull(oper.startPreprocessorAsync());
}
+ /**
+ * Tests startPreprocessorAsync(), when preprocessing is disabled.
+ */
+ @Test
+ public void testStartPreprocessorAsyncDisabled() {
+ params = params.toBuilder().preprocessed(true).build();
+ assertNull(new MyOper(params, config).startPreprocessorAsync());
+ }
+
@Test
public void testMakeRequest() {
- Pair<String, Request> result = oper.makeRequest(2, MY_VNF);
- String subreq = result.getLeft();
+ oper.generateSubRequestId(2);
+ String subreq = oper.getSubRequestId();
assertNotNull(subreq);
- Request request = result.getRight();
+ Request request = oper.makeRequest(2, MY_VNF);
assertEquals(DEFAULT_OPERATION, request.getAction());
assertNotNull(request.getPayload());
assertEquals(subreq, header.getSubRequestId());
- // a subsequent request should have a different sub-request id
- result = oper.makeRequest(2, MY_VNF);
- assertNotEquals(subreq, result.getLeft());
-
- assertNotNull(result.getLeft());
- assertEquals(result.getLeft(), result.getRight().getCommonHeader().getSubRequestId());
+ request = oper.makeRequest(2, MY_VNF);
+ assertEquals(subreq, request.getCommonHeader().getSubRequestId());
// repeat using a null payload
params = params.toBuilder().payload(null).build();
- oper = new AppcOperation(params, config) {
- @Override
- protected Pair<String, Request> makeRequest(int attempt) {
- return oper.makeRequest(attempt, MY_VNF);
- }
- };
- assertEquals(Map.of(AppcOperation.VNF_ID_KEY, MY_VNF), oper.makeRequest(2, MY_VNF).getRight().getPayload());
+ oper = new MyOper(params, config);
+ assertEquals(Map.of(AppcOperation.VNF_ID_KEY, MY_VNF), oper.makeRequest(2, MY_VNF).getPayload());
}
@Test
public void testConvertPayload() {
- Request request = oper.makeRequest(2, MY_VNF).getRight();
+ Request request = oper.makeRequest(2, MY_VNF);
// @formatter:off
assertEquals(
params = params.toBuilder().payload(payload).build();
- oper = new AppcOperation(params, config) {
- @Override
- protected Pair<String, Request> makeRequest(int attempt) {
- return oper.makeRequest(attempt, MY_VNF);
- }
- };
- request = oper.makeRequest(2, MY_VNF).getRight();
+ oper = new MyOper(params, config);
+ request = oper.makeRequest(2, MY_VNF);
// @formatter:off
assertEquals(
payload.put(KEY3, "def");
params = params.toBuilder().payload(payload).build();
- oper = new AppcOperation(params, config) {
- @Override
- protected Pair<String, Request> makeRequest(int attempt) {
- return oper.makeRequest(attempt, MY_VNF);
- }
- };
- request = oper.makeRequest(2, MY_VNF).getRight();
+ oper = new MyOper(params, config);
+ request = oper.makeRequest(2, MY_VNF);
payload.put(AppcOperation.VNF_ID_KEY, MY_VNF);
payload.put(KEY1, "abc");
@Test
public void testGetExpectedKeyValues() {
- Request request = oper.makeRequest(2, MY_VNF).getRight();
+ oper.generateSubRequestId(2);
+ Request request = oper.makeRequest(2, MY_VNF);
assertEquals(Arrays.asList(request.getCommonHeader().getSubRequestId()),
oper.getExpectedKeyValues(50, request));
}
public void testDetmStatusStringResponse() {
final ResponseStatus status = response.getStatus();
- // null status
+ // null status (i.e., it's a Request, not a Response)
response.setStatus(null);
- assertThatIllegalArgumentException().isThrownBy(() -> oper.detmStatus("", response))
- .withMessage("APP-C response is missing the response status");
+ assertEquals(Status.STILL_WAITING, oper.detmStatus("", response));
response.setStatus(status);
// invalid code
assertSame(outcome, oper.setOutcome(outcome, PolicyResult.SUCCESS, response));
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
assertNotNull(outcome.getMessage());
+ assertSame(response, outcome.getResponse());
response.setStatus(status);
// null description
assertSame(outcome, oper.setOutcome(outcome, PolicyResult.FAILURE, response));
assertEquals(PolicyResult.FAILURE, outcome.getResult());
assertNotNull(outcome.getMessage());
+ assertSame(response, outcome.getResponse());
status.setDescription(MY_DESCRIPTION);
for (PolicyResult result : PolicyResult.values()) {
assertSame(outcome, oper.setOutcome(outcome, result, response));
assertEquals(result, outcome.getResult());
assertEquals(MY_DESCRIPTION, outcome.getMessage());
+ assertSame(response, outcome.getResponse());
+ }
+ }
+
+ private static class MyOper extends AppcOperation {
+
+ public MyOper(ControlLoopOperationParams params, BidirectionalTopicConfig config) {
+ super(params, config, Collections.emptyList());
+ }
+
+ @Override
+ protected Request makeRequest(int attempt) {
+ return makeRequest(attempt, MY_VNF);
}
}
}