Fix sonars from depeendency upgrade
[policy/models.git] / models-interactions / model-actors / actorServiceProvider / src / test / java / org / onap / policy / controlloop / actorserviceprovider / impl / BidirectionalTopicOperatorTest.java
index 4fae782..4d19782 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP
  * ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.controlloop.actorserviceprovider.impl;
 
+import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
 import static org.mockito.Mockito.when;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.BiFunction;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.onap.policy.controlloop.actorserviceprovider.Operation;
+import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.policy.controlloop.actorserviceprovider.Util;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicConfig;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicParams;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ParameterValidationRuntimeException;
@@ -42,6 +46,7 @@ import org.onap.policy.controlloop.actorserviceprovider.topic.BidirectionalTopic
 import org.onap.policy.controlloop.actorserviceprovider.topic.Forwarder;
 import org.onap.policy.controlloop.actorserviceprovider.topic.SelectorKey;
 
+@RunWith(MockitoJUnitRunner.class)
 public class BidirectionalTopicOperatorTest {
     private static final String ACTOR = "my-actor";
     private static final String OPERATION = "my-operation";
@@ -67,8 +72,6 @@ public class BidirectionalTopicOperatorTest {
      */
     @Before
     public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
         keys = List.of(new SelectorKey(""));
 
         when(mgr.getTopicHandler(MY_SINK, MY_SOURCE)).thenReturn(handler);
@@ -86,9 +89,7 @@ public class BidirectionalTopicOperatorTest {
     public void testConstructor_testGetParams_testGetTopicHandler_testGetForwarder() {
         assertEquals(ACTOR, oper.getActorName());
         assertEquals(OPERATION, oper.getName());
-        assertEquals(params, oper.getParams());
-        assertSame(handler, oper.getTopicHandler());
-        assertSame(forwarder, oper.getForwarder());
+        assertNotNull(oper.getCurrentConfig());
     }
 
     @Test
@@ -97,36 +98,51 @@ public class BidirectionalTopicOperatorTest {
 
         // invalid parameters
         params.setSourceTopic(null);
-        assertThatThrownBy(() -> oper.configure(Util.translateToMap(OPERATION, params)))
+        Map<String, Object> map = Util.translateToMap(OPERATION, params);
+        assertThatThrownBy(() -> oper.configure(map))
                         .isInstanceOf(ParameterValidationRuntimeException.class);
     }
 
     @Test
-    public void testMakeOperator() {
+    public void testBuildOperator() {
         AtomicReference<ControlLoopOperationParams> paramsRef = new AtomicReference<>();
-        AtomicReference<BidirectionalTopicOperator> operRef = new AtomicReference<>();
+        AtomicReference<BidirectionalTopicConfig> configRef = new AtomicReference<>();
 
         // @formatter:off
-        BiFunction<ControlLoopOperationParams, BidirectionalTopicOperator,
-                    BidirectionalTopicOperation<String, Integer>> maker =
-                        (params, operator) -> {
-                            paramsRef.set(params);
-                            operRef.set(operator);
-                            return operation;
-                        };
+        OperationMaker<BidirectionalTopicConfig, BidirectionalTopicOperation<?, ?>> maker =
+            (params, config) -> {
+                paramsRef.set(params);
+                configRef.set(config);
+                return operation;
+            };
         // @formatter:on
 
         BidirectionalTopicOperator oper2 =
-                        BidirectionalTopicOperator.makeOperator(ACTOR, OPERATION, mgr, maker, new SelectorKey(""));
+                        new BidirectionalTopicOperator(ACTOR, OPERATION, mgr, maker, new SelectorKey(""));
 
         assertEquals(ACTOR, oper2.getActorName());
         assertEquals(OPERATION, oper2.getName());
 
         ControlLoopOperationParams params2 = ControlLoopOperationParams.builder().build();
 
+        // configure and start it
+        params = BidirectionalTopicParams.builder().sourceTopic(MY_SOURCE).sinkTopic(MY_SINK).timeoutSec(TIMEOUT_SEC)
+                        .build();
+        oper2.configure(Util.translateToMap(OPERATION, params));
+
+        // not running yet
+        assertThatIllegalStateException().isThrownBy(() -> oper2.buildOperation(params2));
+
+        oper2.start();
+
         assertSame(operation, oper2.buildOperation(params2));
         assertSame(params2, paramsRef.get());
-        assertSame(oper2, operRef.get());
+        assertSame(oper2.getCurrentConfig(), configRef.get());
+
+        // with no operation-maker
+        BidirectionalTopicOperator oper3 =
+                        new BidirectionalTopicOperator(ACTOR, OPERATION, mgr, Arrays.asList(new SelectorKey("")));
+        assertThatThrownBy(() -> oper3.buildOperation(params2)).isInstanceOf(UnsupportedOperationException.class);
     }
 
 
@@ -136,7 +152,7 @@ public class BidirectionalTopicOperatorTest {
         }
 
         @Override
-        public Operation buildOperation(ControlLoopOperationParams params) {
+        public BidirectionalTopicOperation<?, ?> buildOperation(ControlLoopOperationParams params) {
             return null;
         }
     }