Stop sdc-distribution-client upon service shutdown 15/137915/1
authorFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Thu, 16 May 2024 06:54:54 +0000 (08:54 +0200)
committerFiete Ostkamp <Fiete.Ostkamp@telekom.de>
Thu, 16 May 2024 06:59:11 +0000 (08:59 +0200)
- restore old behaviour by calling distributionClient.stop()
- downgrade sdc-distribution-client version to 2.0.0

Issue-ID: AAI-3848
Change-Id: Id252f4d8e387a916dcbdebd5110b46432858ee6b
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
pom.xml
src/main/java/org/onap/aai/modelloader/config/DistributionClientStartupConfig.java
src/test/java/org/onap/aai/modelloader/config/DistributionClientStartupConfigTest.java [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index fb4aad4..7e50b9c 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -65,7 +65,7 @@
                <gson.version>2.10.1</gson.version>
                <hamcrest-all.version>1.3</hamcrest-all.version>
                <babel.version>1.13.0</babel.version>
                <gson.version>2.10.1</gson.version>
                <hamcrest-all.version>1.3</hamcrest-all.version>
                <babel.version>1.13.0</babel.version>
-               <sdc-distribution-client.version>2.1.1</sdc-distribution-client.version>
+               <sdc-distribution-client.version>2.0.0</sdc-distribution-client.version>
                <logback.version>1.2.11</logback.version>
                <!-- docker related properties -->
                <docker.fabric.version>0.39.0</docker.fabric.version>
                <logback.version>1.2.11</logback.version>
                <!-- docker related properties -->
                <docker.fabric.version>0.39.0</docker.fabric.version>
index cd9d919..937c62d 100644 (file)
@@ -23,6 +23,8 @@ import java.util.Date;
 import java.util.Timer;
 import java.util.TimerTask;
 
 import java.util.Timer;
 import java.util.TimerTask;
 
+import javax.annotation.PreDestroy;
+
 import org.onap.aai.cl.api.Logger;
 import org.onap.aai.cl.eelf.LoggerFactory;
 import org.onap.aai.modelloader.notification.EventCallback;
 import org.onap.aai.cl.api.Logger;
 import org.onap.aai.cl.eelf.LoggerFactory;
 import org.onap.aai.modelloader.notification.EventCallback;
@@ -42,13 +44,13 @@ public class DistributionClientStartupConfig {
 
     private static final Logger logger = LoggerFactory.getInstance().getLogger(DistributionClientStartupConfig.class);
 
 
     private static final Logger logger = LoggerFactory.getInstance().getLogger(DistributionClientStartupConfig.class);
 
-    private final IDistributionClient client;
+    private final IDistributionClient distributionClient;
     private final ModelLoaderConfig config;
     private final EventCallback eventCallback;
 
     private final ModelLoaderConfig config;
     private final EventCallback eventCallback;
 
-    public DistributionClientStartupConfig(IDistributionClient client, ModelLoaderConfig config,
+    public DistributionClientStartupConfig(IDistributionClient distributionClient, ModelLoaderConfig config,
             EventCallback eventCallback) {
             EventCallback eventCallback) {
-        this.client = client;
+        this.distributionClient = distributionClient;
         this.config = config;
         this.eventCallback = eventCallback;
     }
         this.config = config;
         this.eventCallback = eventCallback;
     }
@@ -58,12 +60,12 @@ public class DistributionClientStartupConfig {
         // Initialize distribution client
         logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client...");
         IDistributionClientResult initResult = null;
         // Initialize distribution client
         logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client...");
         IDistributionClientResult initResult = null;
-        initResult = client.init(config, eventCallback);
+        initResult = distributionClient.init(config, eventCallback);
 
         if (initResult.getDistributionActionResult() == DistributionActionResultEnum.SUCCESS) {
             // Start distribution client
             logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client...");
 
         if (initResult.getDistributionActionResult() == DistributionActionResultEnum.SUCCESS) {
             // Start distribution client
             logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client...");
-            IDistributionClientResult startResult = client.start();
+            IDistributionClientResult startResult = distributionClient.start();
             if (startResult.getDistributionActionResult() == DistributionActionResultEnum.SUCCESS) {
                 logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established");
             } else {
             if (startResult.getDistributionActionResult() == DistributionActionResultEnum.SUCCESS) {
                 logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established");
             } else {
@@ -72,7 +74,7 @@ public class DistributionClientStartupConfig {
 
                 // Kick off a timer to retry the SDC connection
                 Timer timer = new Timer();
 
                 // Kick off a timer to retry the SDC connection
                 Timer timer = new Timer();
-                TimerTask task = new SdcConnectionJob(client, config, eventCallback, timer);
+                TimerTask task = new SdcConnectionJob(distributionClient, config, eventCallback, timer);
                 timer.schedule(task, new Date(), 60000);
             }
         } else {
                 timer.schedule(task, new Date(), 60000);
             }
         } else {
@@ -81,8 +83,16 @@ public class DistributionClientStartupConfig {
 
             // Kick off a timer to retry the SDC connection
             Timer timer = new Timer();
 
             // Kick off a timer to retry the SDC connection
             Timer timer = new Timer();
-            TimerTask task = new SdcConnectionJob(client, config, eventCallback, timer);
+            TimerTask task = new SdcConnectionJob(distributionClient, config, eventCallback, timer);
             timer.schedule(task, new Date(), 60000);
         }
     }
             timer.schedule(task, new Date(), 60000);
         }
     }
+
+    @PreDestroy
+    public void destroy() {
+        logger.info(ModelLoaderMsgs.STOPPING_CLIENT);
+        if (distributionClient != null) {
+            distributionClient.stop();
+        }
+    }
 }
 }
diff --git a/src/test/java/org/onap/aai/modelloader/config/DistributionClientStartupConfigTest.java b/src/test/java/org/onap/aai/modelloader/config/DistributionClientStartupConfigTest.java
new file mode 100644 (file)
index 0000000..4dbdddb
--- /dev/null
@@ -0,0 +1,62 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2024 Deutsche Telekom AG 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.
+ * You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.aai.modelloader.config;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.onap.aai.modelloader.notification.EventCallback;
+import org.onap.sdc.api.IDistributionClient;
+import org.onap.sdc.api.results.IDistributionClientResult;
+import org.onap.sdc.utils.DistributionActionResultEnum;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class DistributionClientStartupConfigTest {
+
+  @Mock IDistributionClient distributionClient;
+  @Mock ModelLoaderConfig config;
+  @Mock EventCallback eventCallback;
+  @InjectMocks DistributionClientStartupConfig startupConfig;
+
+  @Test
+  public void thatClientIsInitialized() {
+    IDistributionClientResult initResult = mock(IDistributionClientResult.class);
+    when(distributionClient.init(any(), any())).thenReturn(initResult);
+    when(distributionClient.start()).thenReturn(initResult);
+    when(initResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS);
+    startupConfig.initSdcClient();
+    verify(distributionClient, times(1)).init(any(), any());
+    verify(distributionClient, times(1)).start();
+  }
+
+  @Test
+  public void thatClientIsStoppedOnPreDestroy() {
+    startupConfig.destroy();
+    verify(distributionClient, times(1)).stop();
+  }
+  
+}