Uplift Spring dependencies 87/138487/2
authoradheli.tavares <adheli.tavares@est.tech>
Fri, 12 Jul 2024 08:58:15 +0000 (09:58 +0100)
committeradheli.tavares <adheli.tavares@est.tech>
Tue, 16 Jul 2024 15:49:22 +0000 (16:49 +0100)
Issue-ID: POLICY-5074
Change-Id: Ib88e02ffc6867a007abfd0322319caf672c00e45
Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
29 files changed:
models/src/main/java/org/onap/policy/clamp/models/acm/utils/StateDefinition.java
participant/participant-impl/participant-impl-a1pms/src/main/java/org/onap/policy/clamp/acm/participant/a1pms/config/MicrometerConfig.java
participant/participant-impl/participant-impl-acelement/src/main/java/org/onap/policy/clamp/acm/element/config/MicrometerConfig.java
participant/participant-impl/participant-impl-http/src/main/java/org/onap/policy/clamp/acm/participant/http/config/MicrometerConfig.java
participant/participant-impl/participant-impl-kserve/pom.xml
participant/participant-impl/participant-impl-kserve/src/main/java/org/onap/policy/clamp/acm/participant/kserve/config/MicrometerConfig.java
participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/configurations/MicrometerConfig.java
participant/participant-impl/participant-impl-policy/src/main/java/org/onap/policy/clamp/acm/participant/policy/config/MicrometerConfig.java
participant/participant-impl/participant-impl-simulator/src/main/java/org/onap/policy/clamp/acm/participant/sim/config/MicrometerConfig.java
participant/participant-impl/participant-impl-simulator/src/main/java/org/onap/policy/clamp/acm/participant/sim/parameters/ParticipantSimParameters.java
participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/parameters/ParticipantIntermediaryParameters.java
participant/participant-intermediary/src/main/java/org/onap/policy/clamp/acm/participant/intermediary/parameters/Topics.java
runtime-acm/pom.xml
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/config/MetricsConfiguration.java
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/config/OpenTelConfiguration.java
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/config/messaging/MessageDispatcherActivator.java
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/AcRuntimeParameterGroup.java
runtime-acm/src/main/java/org/onap/policy/clamp/acm/runtime/main/parameters/Topics.java
runtime-acm/src/main/resources/application.yaml
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/commissioning/CommissioningProviderTest.java
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/commissioning/rest/CommissioningControllerTest.java
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/config/TestOpenTelemetry.java [new file with mode: 0644]
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/main/rest/ActuatorControllerTest.java
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/main/rest/PrometheusNoAuthTest.java
runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/util/rest/CommonRestController.java
runtime-acm/src/test/resources/application-prometheus-noauth.yaml
runtime-acm/src/test/resources/application-test.yaml
runtime-acm/src/test/resources/application-tracing.yaml [new file with mode: 0644]
runtime-acm/src/test/resources/testscripts/listenOnTopic.sh [deleted file]

index b7c6a31..491ae10 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2023 Nordix Foundation.
+ *  Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -74,7 +74,7 @@ public class StateDefinition<V> {
             if (key == null || key.contains(separator)) {
                 throw new PfModelRuntimeException(Status.INTERNAL_SERVER_ERROR, "wrong key " + key);
             }
-            sb.append(key + separator);
+            sb.append(key).append(separator);
         }
         return sb.toString();
     }
index 5e3441d..e599b7c 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation.
+ * Copyright (C) 2022, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.participant.a1pms.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index d34b34a..5621587 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation.
+ * Copyright (C) 2022, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.element.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 06cecc6..ec9c95a 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation.
+ * Copyright (C) 2022, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.participant.http.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 8b5ba56..05cc2dc 100644 (file)
@@ -52,7 +52,7 @@
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-dependencies</artifactId>
-                <version>2022.0.5</version>
+                <version>2023.0.3</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 92dc5d3..1192f77 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2023 Nordix Foundation.
+ * Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.participant.kserve.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 0532dc9..b4afe5e 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation.
+ * Copyright (C) 2022, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.participant.kubernetes.configurations;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 2f942ea..de1242b 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- * Copyright (C) 2022 Nordix Foundation.
+ * Copyright (C) 2022, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.participant.policy.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 2a319c3..4ddec02 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2023 Nordix Foundation.
+ *  Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.participant.sim.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MicrometerConfig {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 4c78451..4157bfd 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2023 Nordix Foundation.
+ *  Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -41,5 +41,5 @@ public class ParticipantSimParameters implements ParticipantParameters {
 
     @NotNull
     @Valid
-    private ParticipantIntermediaryParameters intermediaryParameters;
+    private ParticipantIntermediaryParameters intermediaryParameters = new ParticipantIntermediaryParameters();
 }
index ddf7205..7a93255 100644 (file)
@@ -24,6 +24,7 @@ import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 /**
@@ -32,6 +33,7 @@ import lombok.Setter;
 @Getter
 @Setter
 @AllArgsConstructor
+@NoArgsConstructor
 public class Topics {
 
     @NotNull
index 0b3624d..82283ea 100644 (file)
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter</artifactId>
-            <version>${version.jupiter}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
index 084f7c7..f5c8368 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2022 Nordix Foundation.
+ *  Copyright (C) 2022, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.runtime.config;
 import io.micrometer.core.aop.TimedAspect;
 import io.micrometer.core.instrument.MeterRegistry;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,8 +35,9 @@ public class MetricsConfiguration {
      * Load up the metrics registry.
      */
     @Bean
-    public InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor,
-            MeterRegistry registry) {
+    public InitializingBean forcePrometheusPostProcessor(@Qualifier("meterRegistryPostProcessor")
+                                                         BeanPostProcessor meterRegistryPostProcessor,
+                                                         MeterRegistry registry) {
         return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
     }
 
index 3727333..05d47d4 100644 (file)
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
 public class OpenTelConfiguration {
 
     @Bean
-    @ConditionalOnProperty(prefix = "tracing", name = "enabled", havingValue = "true", matchIfMissing = false)
+    @ConditionalOnProperty(prefix = "tracing", name = "enabled", havingValue = "true")
     @ConditionalOnExpression("'http'.equals('${tracing.exporter.protocol}')")
     OtlpHttpSpanExporter otlpHttpSpanExporter(@Value("${tracing.exporter.endpoint:http://jaeger:4318/v1/traces}") String url) {
         return OtlpHttpSpanExporter.builder()
@@ -44,7 +44,7 @@ public class OpenTelConfiguration {
     }
 
     @Bean
-    @ConditionalOnProperty(prefix = "tracing", name = "enabled", havingValue = "true", matchIfMissing = false)
+    @ConditionalOnProperty(prefix = "tracing", name = "enabled", havingValue = "true")
     @ConditionalOnExpression("'grpc'.equals('${tracing.exporter.protocol}')")
     OtlpGrpcSpanExporter otlpGrpcSpanExporter(@Value("${tracing.exporter.endpoint:http://jaeger:4317}") String url) {
         return OtlpGrpcSpanExporter.builder()
@@ -53,7 +53,7 @@ public class OpenTelConfiguration {
     }
 
     @Bean
-    @ConditionalOnProperty(prefix = "tracing", name = "enabled", havingValue = "true", matchIfMissing = false)
+    @ConditionalOnProperty(prefix = "tracing", name = "enabled", havingValue = "true")
     JaegerRemoteSampler jaegerRemoteSampler(
             @Value("${tracing.sampler.jaeger-remote.endpoint:http://jaeger:14250}") String url,
             @Value("${SERVICE_ID:unknown_service}") String serviceId) {
index a3e55c3..ff1f60b 100644 (file)
@@ -22,7 +22,6 @@
 package org.onap.policy.clamp.acm.runtime.config.messaging;
 
 import java.io.Closeable;
-import java.io.IOException;
 import java.util.List;
 import java.util.function.UnaryOperator;
 import java.util.stream.Collectors;
@@ -139,7 +138,7 @@ public class MessageDispatcherActivator extends ServiceManagerContainer implemen
     }
 
     @Override
-    public void close() throws IOException {
+    public void close() {
         if (isAlive()) {
             super.shutdown();
         }
index d485a24..6e230d3 100644 (file)
@@ -20,6 +20,7 @@ package org.onap.policy.clamp.acm.runtime.main.parameters;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
+import lombok.NoArgsConstructor;
 import lombok.Setter;
 import org.springframework.validation.annotation.Validated;
 
@@ -27,6 +28,7 @@ import org.springframework.validation.annotation.Validated;
 @Setter
 @Validated
 @AllArgsConstructor
+@NoArgsConstructor
 public class Topics {
 
     private String operationTopic;
index 0e2585d..bca01ac 100644 (file)
@@ -44,21 +44,18 @@ runtime:
     maxStatusWaitMs: 200000
   topicParameterGroup:
     topicSources:
-      -
-        topic: ${runtime.topics.operationTopic}
+      - topic: ${runtime.topics.operationTopic}
         servers:
           - ${topicServer:kafka:9092}
         topicCommInfrastructure: NOOP
         fetchTimeout: 15000
     topicSinks:
-      -
-        topic: ${runtime.topics.operationTopic}
+      - topic: ${runtime.topics.operationTopic}
         servers:
           - ${topicServer:kafka:9092}
         topicCommInfrastructure: NOOP
 
-      -
-        topic: ${runtime.topics.syncTopic}
+      - topic: ${runtime.topics.syncTopic}
         servers:
           - ${topicServer:kafka:9092}
         topicCommInfrastructure: NOOP
index 4137191..e001d91 100644 (file)
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.runtime.commissioning;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
@@ -53,8 +54,6 @@ class CommissioningProviderTest {
 
     /**
      * Test the fetching of automation composition definitions (ToscaServiceTemplates).
-     *
-     * @throws Exception .
      */
     @Test
     void testGetAutomationCompositionDefinitions() {
@@ -63,7 +62,7 @@ class CommissioningProviderTest {
         var acRuntimeParameterGroup = mock(AcRuntimeParameterGroup.class);
 
         var provider = new CommissioningProvider(acDefinitionProvider, acProvider, null, null, null,
-                acRuntimeParameterGroup);
+            acRuntimeParameterGroup);
 
         var serviceTemplates = provider.getAutomationCompositionDefinitions(null, null);
         assertThat(serviceTemplates.getServiceTemplates()).isEmpty();
@@ -75,12 +74,11 @@ class CommissioningProviderTest {
 
     /**
      * Test the creation of automation composition definitions (ToscaServiceTemplates).
-     *
-     * @throws Exception .
      */
     @Test
     void testCreateAutomationCompositionDefinitions() {
         var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
+        assertNotNull(serviceTemplate);
         serviceTemplate.setName("Name");
         serviceTemplate.setVersion("1.0.0");
         var acmDefinition = new AutomationCompositionDefinition();
@@ -88,15 +86,15 @@ class CommissioningProviderTest {
         acmDefinition.setServiceTemplate(serviceTemplate);
         var acDefinitionProvider = mock(AcDefinitionProvider.class);
         when(acDefinitionProvider.createAutomationCompositionDefinition(serviceTemplate,
-                CommonTestData.TOSCA_ELEMENT_NAME, CommonTestData.TOSCA_COMP_NAME)).thenReturn(acmDefinition);
+            CommonTestData.TOSCA_ELEMENT_NAME, CommonTestData.TOSCA_COMP_NAME)).thenReturn(acmDefinition);
 
         var acProvider = mock(AutomationCompositionProvider.class);
         var provider = new CommissioningProvider(acDefinitionProvider, acProvider, null, null, null,
-                CommonTestData.getTestParamaterGroup());
+            CommonTestData.getTestParamaterGroup());
         var affectedDefinitions = provider.createAutomationCompositionDefinition(serviceTemplate)
-                .getAffectedAutomationCompositionDefinitions();
+            .getAffectedAutomationCompositionDefinitions();
         verify(acDefinitionProvider).createAutomationCompositionDefinition(serviceTemplate,
-                CommonTestData.TOSCA_ELEMENT_NAME, CommonTestData.TOSCA_COMP_NAME);
+            CommonTestData.TOSCA_ELEMENT_NAME, CommonTestData.TOSCA_COMP_NAME);
         // Response should return the number of node templates present in the service template
         assertThat(affectedDefinitions).hasSize(7);
     }
@@ -104,7 +102,6 @@ class CommissioningProviderTest {
     /**
      * Test the fetching of a full ToscaServiceTemplate object - as opposed to the reduced template that is being
      * tested in the testGetToscaServiceTemplateReduced() test.
-     *
      */
     @Test
     void testGetToscaServiceTemplateList() {
@@ -113,6 +110,7 @@ class CommissioningProviderTest {
 
         var provider = new CommissioningProvider(acDefinitionProvider, acProvider, null, null, null, null);
         var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
+        assertNotNull(serviceTemplate);
         when(acDefinitionProvider.getServiceTemplateList(null, null)).thenReturn(List.of(serviceTemplate));
 
         var returnedServiceTemplate = provider.getAutomationCompositionDefinitions(null, null);
@@ -121,7 +119,7 @@ class CommissioningProviderTest {
     }
 
     @Test
-    void testDeletecDefinitionDabRequest() {
+    void testDeleteAcDefinitionDabRequest() {
         var acDefinitionProvider = mock(AcDefinitionProvider.class);
         var acProvider = mock(AutomationCompositionProvider.class);
 
@@ -131,7 +129,7 @@ class CommissioningProviderTest {
         var provider = new CommissioningProvider(acDefinitionProvider, acProvider, null, null, null, null);
 
         assertThatThrownBy(() -> provider.deleteAutomationCompositionDefinition(compositionId))
-                .hasMessageMatching("Delete instances, to commission automation composition definitions");
+            .hasMessageMatching("Delete instances, to commission automation composition definitions");
     }
 
     @Test
@@ -139,6 +137,7 @@ class CommissioningProviderTest {
         var acDefinitionProvider = mock(AcDefinitionProvider.class);
         var compositionId = UUID.randomUUID();
         var serviceTemplate = InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML);
+        assertNotNull(serviceTemplate);
         when(acDefinitionProvider.deleteAcDefintion(compositionId)).thenReturn(serviceTemplate);
 
         var acmDefinition = new AutomationCompositionDefinition();
@@ -159,14 +158,14 @@ class CommissioningProviderTest {
     void testPriming() {
         var acDefinitionProvider = mock(AcDefinitionProvider.class);
         var acmDefinition = CommonTestData.createAcDefinition(
-                InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML), AcTypeState.COMMISSIONED);
+            InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML), AcTypeState.COMMISSIONED);
         var compositionId = acmDefinition.getCompositionId();
         when(acDefinitionProvider.getAcDefinition(compositionId)).thenReturn(acmDefinition);
 
         var participantPrimePublisher = mock(ParticipantPrimePublisher.class);
         var provider = new CommissioningProvider(acDefinitionProvider, mock(AutomationCompositionProvider.class),
-                mock(ParticipantProvider.class), new AcTypeStateResolver(), participantPrimePublisher,
-                CommonTestData.getTestParamaterGroup());
+            mock(ParticipantProvider.class), new AcTypeStateResolver(), participantPrimePublisher,
+            CommonTestData.getTestParamaterGroup());
 
         var acTypeStateUpdate = new AcTypeStateUpdate();
         acTypeStateUpdate.setPrimeOrder(PrimeOrder.PRIME);
@@ -179,15 +178,15 @@ class CommissioningProviderTest {
     void testDepriming() {
         var acDefinitionProvider = mock(AcDefinitionProvider.class);
         var acmDefinition = CommonTestData.createAcDefinition(
-                InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML), AcTypeState.PRIMED);
+            InstantiationUtils.getToscaServiceTemplate(TOSCA_SERVICE_TEMPLATE_YAML), AcTypeState.PRIMED);
         var compositionId = acmDefinition.getCompositionId();
         when(acDefinitionProvider.getAcDefinition(compositionId)).thenReturn(acmDefinition);
 
         var participantPrimePublisher = mock(ParticipantPrimePublisher.class);
         var participantProvider = mock(ParticipantProvider.class);
         var provider = new CommissioningProvider(acDefinitionProvider, mock(AutomationCompositionProvider.class),
-                participantProvider, new AcTypeStateResolver(), participantPrimePublisher,
-                CommonTestData.getTestParamaterGroup());
+            participantProvider, new AcTypeStateResolver(), participantPrimePublisher,
+            CommonTestData.getTestParamaterGroup());
 
         var acTypeStateUpdate = new AcTypeStateUpdate();
         acTypeStateUpdate.setPrimeOrder(PrimeOrder.DEPRIME);
@@ -201,19 +200,19 @@ class CommissioningProviderTest {
     void testBadRequest() {
         var acProvider = mock(AutomationCompositionProvider.class);
         var provider = new CommissioningProvider(mock(AcDefinitionProvider.class), acProvider,
-                mock(ParticipantProvider.class), new AcTypeStateResolver(), mock(ParticipantPrimePublisher.class),
-                mock(AcRuntimeParameterGroup.class));
+            mock(ParticipantProvider.class), new AcTypeStateResolver(), mock(ParticipantPrimePublisher.class),
+            mock(AcRuntimeParameterGroup.class));
 
         var compositionId = UUID.randomUUID();
         when(acProvider.getAcInstancesByCompositionId(compositionId)).thenReturn(List.of(new AutomationComposition()));
 
         var toscaServiceTemplate = new ToscaServiceTemplate();
         assertThatThrownBy(() -> provider.updateCompositionDefinition(compositionId, toscaServiceTemplate))
-                .hasMessageMatching("There are ACM instances, Update of ACM Definition not allowed");
+            .hasMessageMatching("There are ACM instances, Update of ACM Definition not allowed");
 
         var acTypeStateUpdate = new AcTypeStateUpdate();
         assertThatThrownBy(() -> provider.compositionDefinitionPriming(compositionId, acTypeStateUpdate))
-                .hasMessageMatching("There are instances, Priming/Depriming not allowed");
+            .hasMessageMatching("There are instances, Priming/Depriming not allowed");
     }
 
     @Test
@@ -225,14 +224,14 @@ class CommissioningProviderTest {
         when(acDefinitionProvider.getAcDefinition(compositionId)).thenReturn(acmDefinition);
 
         var provider = new CommissioningProvider(acDefinitionProvider, mock(AutomationCompositionProvider.class),
-                mock(ParticipantProvider.class), new AcTypeStateResolver(), mock(ParticipantPrimePublisher.class),
-                mock(AcRuntimeParameterGroup.class));
+            mock(ParticipantProvider.class), new AcTypeStateResolver(), mock(ParticipantPrimePublisher.class),
+            mock(AcRuntimeParameterGroup.class));
 
         assertThatThrownBy(() -> provider.updateCompositionDefinition(compositionId, toscaServiceTemplate))
-                .hasMessageMatching("ACM not in COMMISSIONED state, Update of ACM Definition not allowed");
+            .hasMessageMatching("ACM not in COMMISSIONED state, Update of ACM Definition not allowed");
 
         assertThatThrownBy(() -> provider.deleteAutomationCompositionDefinition(compositionId))
-                .hasMessageMatching("ACM not in COMMISSIONED state, Delete of ACM Definition not allowed");
+            .hasMessageMatching("ACM not in COMMISSIONED state, Delete of ACM Definition not allowed");
     }
 
     @Test
@@ -245,11 +244,11 @@ class CommissioningProviderTest {
         when(acDefinitionProvider.getAcDefinition(compositionId)).thenReturn(acmDefinition);
 
         var provider = new CommissioningProvider(acDefinitionProvider, mock(AutomationCompositionProvider.class),
-                mock(ParticipantProvider.class), new AcTypeStateResolver(), mock(ParticipantPrimePublisher.class),
-                mock(AcRuntimeParameterGroup.class));
+            mock(ParticipantProvider.class), new AcTypeStateResolver(), mock(ParticipantPrimePublisher.class),
+            mock(AcRuntimeParameterGroup.class));
 
         var acTypeStateUpdate = new AcTypeStateUpdate();
         assertThatThrownBy(() -> provider.compositionDefinitionPriming(compositionId, acTypeStateUpdate))
-                .hasMessageMatching("There is a restarting process, Priming/Depriming not allowed");
+            .hasMessageMatching("There is a restarting process, Priming/Depriming not allowed");
     }
 }
index ed8badf..16de37e 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2021-2023 Nordix Foundation.
+ *  Copyright (C) 2021-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,6 +34,7 @@ import jakarta.ws.rs.core.Response;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -61,7 +62,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 @ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@ActiveProfiles({ "test", "default" })
+@ActiveProfiles({"test", "default"})
 class CommissioningControllerTest extends CommonRestController {
 
     private static final String COMMISSIONING_ENDPOINT = "compositions";
@@ -72,6 +73,7 @@ class CommissioningControllerTest extends CommonRestController {
 
     @Autowired
     private ParticipantProvider participantProvider;
+
     @LocalServerPort
     private int randomServerPort;
 
@@ -88,6 +90,11 @@ class CommissioningControllerTest extends CommonRestController {
         super.setHttpPrefix(randomServerPort);
     }
 
+    @AfterEach
+    void after() {
+        super.client.close();
+    }
+
     @Test
     void testSwagger() {
         super.testSwagger(COMMISSIONING_ENDPOINT);
@@ -111,15 +118,16 @@ class CommissioningControllerTest extends CommonRestController {
     @Test
     void testCreateBadRequest() {
         var invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
-        var resp = invocationBuilder.post(Entity.json("NotToscaServiceTempalte"));
+        var resp = invocationBuilder.post(Entity.json("NotToscaServiceTemplate"));
 
         assertThat(Response.Status.BAD_REQUEST.getStatusCode()).isEqualTo(resp.getStatus());
         var commissioningResponse = resp.readEntity(CommissioningResponse.class);
         assertThat(commissioningResponse.getErrorDetails())
             .isEqualTo("org.springframework.http.converter.HttpMessageNotReadableException "
-                + "Bad Request Could not read JSON: java.lang.IllegalStateException: "
+                + "Could not read JSON: java.lang.IllegalStateException: "
                 + "Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $");
         assertThat(commissioningResponse.getAffectedAutomationCompositionDefinitions()).isNull();
+        resp.close();
     }
 
     @Test
@@ -132,7 +140,7 @@ class CommissioningControllerTest extends CommonRestController {
 
         var commissioningResponse = createServiceTemplate(serviceTemplateCreate, Response.Status.INTERNAL_SERVER_ERROR);
         assertThat(commissioningResponse.getErrorDetails())
-            .isEqualTo("java.lang.IllegalArgumentException Internal Server Error parameter "
+            .isEqualTo("java.lang.IllegalArgumentException parameter "
                 + "\"version\": value \"1.0.wrong\", does not match regular expression \""
                 + PfKey.VERSION_REGEXP + "\"");
         assertThat(commissioningResponse.getAffectedAutomationCompositionDefinitions()).isNull();
@@ -149,7 +157,7 @@ class CommissioningControllerTest extends CommonRestController {
         assertThat(commissioningResponse.getAffectedAutomationCompositionDefinitions()).hasSize(7);
         for (var nodeTemplateName : serviceTemplateCreate.getToscaTopologyTemplate().getNodeTemplates().keySet()) {
             assertTrue(commissioningResponse.getAffectedAutomationCompositionDefinitions().stream()
-                    .anyMatch(ac -> ac.getName().equals(nodeTemplateName)));
+                .anyMatch(ac -> ac.getName().equals(nodeTemplateName)));
         }
     }
 
@@ -161,6 +169,7 @@ class CommissioningControllerTest extends CommonRestController {
         assertNull(commissioningResponse.getErrorDetails());
         // Response should return the number of node templates present in the service template
         assertThat(commissioningResponse.getAffectedAutomationCompositionDefinitions()).hasSize(11);
+        assertNotNull(serviceTemplateCreate);
         for (var nodeTemplateName : serviceTemplateCreate.getToscaTopologyTemplate().getNodeTemplates().keySet()) {
             assertTrue(commissioningResponse.getAffectedAutomationCompositionDefinitions().stream()
                 .anyMatch(ac -> ac.getName().equals(nodeTemplateName)));
@@ -168,7 +177,7 @@ class CommissioningControllerTest extends CommonRestController {
     }
 
     private CommissioningResponse createServiceTemplate(ToscaServiceTemplate serviceTemplateCreate,
-        Response.Status statusExpected) {
+                                                        Response.Status statusExpected) {
         var invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
         try (var resp = invocationBuilder.post(Entity.json(serviceTemplateCreate))) {
             assertEquals(statusExpected.getStatusCode(), resp.getStatus());
@@ -199,17 +208,17 @@ class CommissioningControllerTest extends CommonRestController {
         assertThat(commissioningResponse.getAffectedAutomationCompositionDefinitions()).hasSize(7);
         for (var nodeTemplateName : serviceTemplateUpdate.getToscaTopologyTemplate().getNodeTemplates().keySet()) {
             assertTrue(commissioningResponse.getAffectedAutomationCompositionDefinitions().stream()
-                    .anyMatch(ac -> ac.getName().equals(nodeTemplateName)));
+                .anyMatch(ac -> ac.getName().equals(nodeTemplateName)));
         }
 
-        var entity = getServiceTemplate(COMMISSIONING_ENDPOINT + "/" + compositionId, Response.Status.OK);
+        var entity = getServiceTemplate(COMMISSIONING_ENDPOINT + "/" + compositionId);
         assertThat(entity.getServiceTemplate().getDataTypes()).containsKey(toscaDataType.getName());
     }
 
-    private AutomationCompositionDefinition getServiceTemplate(String url, Response.Status statusExpected) {
+    private AutomationCompositionDefinition getServiceTemplate(String url) {
         var invocationBuilder = super.sendRequest(url);
         try (var resp = invocationBuilder.buildGet().invoke()) {
-            assertEquals(statusExpected.getStatusCode(), resp.getStatus());
+            assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
             return resp.readEntity(AutomationCompositionDefinition.class);
         }
     }
@@ -221,6 +230,7 @@ class CommissioningControllerTest extends CommonRestController {
         assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
         var entityList = rawresp.readEntity(ToscaServiceTemplate.class);
         assertThat(entityList.getNodeTypes()).isNull();
+        rawresp.close();
     }
 
     @Test
@@ -232,6 +242,7 @@ class CommissioningControllerTest extends CommonRestController {
         assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
         var entityList = rawresp.readEntity(ToscaServiceTemplate.class);
         assertNotNull(entityList);
+        rawresp.close();
     }
 
     @Test
@@ -264,14 +275,15 @@ class CommissioningControllerTest extends CommonRestController {
         body.setPrimeOrder(PrimeOrder.PRIME);
         var resp = invocationBuilder.put(Entity.json(body));
         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
+        resp.close();
     }
 
     private UUID createEntryInDB(String name) {
         var serviceTemplateCreate = new ToscaServiceTemplate(serviceTemplate);
         serviceTemplateCreate.setName(name);
         var acmDefinition = acDefinitionProvider
-                .createAutomationCompositionDefinition(serviceTemplateCreate, CommonTestData.TOSCA_ELEMENT_NAME,
-                        CommonTestData.TOSCA_COMP_NAME);
+            .createAutomationCompositionDefinition(serviceTemplateCreate, CommonTestData.TOSCA_ELEMENT_NAME,
+                CommonTestData.TOSCA_COMP_NAME);
 
         return acmDefinition.getCompositionId();
     }
diff --git a/runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/config/TestOpenTelemetry.java b/runtime-acm/src/test/java/org/onap/policy/clamp/acm/runtime/config/TestOpenTelemetry.java
new file mode 100644 (file)
index 0000000..8996d77
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START===============================================
+ *  Copyright (C) 2024 Nordix Foundation.
+ * ========================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=================================================
+ */
+
+package org.onap.policy.clamp.acm.runtime.config;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.ActiveProfiles;
+
+@ActiveProfiles("tracing")
+@SpringBootTest(classes = OpenTelConfiguration.class)
+class TestOpenTelemetry {
+
+    @Autowired
+    ApplicationContext context;
+
+    @Test
+    void testOpenTelemetry() {
+        assertThat(context).isNotNull();
+        assertTrue(context.containsBean("otlpGrpcSpanExporter"));
+        assertTrue(context.containsBean("jaegerRemoteSampler"));
+        assertFalse(context.containsBean("otlpHttpSpanExporter"));
+    }
+}
index bdfaedc..18911f4 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2021-2023 Nordix Foundation.
+ *  Copyright (C) 2021-2024 Nordix Foundation.
  * ================================================================================
  * 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.clamp.acm.runtime.main.rest;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.springframework.http.MediaType.APPLICATION_JSON;
+import static org.springframework.http.MediaType.TEXT_PLAIN;
 
-import jakarta.ws.rs.core.Response;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.onap.policy.clamp.acm.runtime.util.rest.CommonRestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.autoconfigure.actuate.observability.AutoConfigureObservability;
+import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.test.web.server.LocalServerPort;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.web.reactive.server.WebTestClient;
+import org.springframework.web.reactive.function.client.ExchangeFilterFunctions;
 
-@AutoConfigureObservability(tracing = false)
-@ExtendWith(SpringExtension.class)
+@AutoConfigureObservability
+@AutoConfigureWebTestClient
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@ActiveProfiles({ "test", "default" })
-class ActuatorControllerTest extends CommonRestController {
+@ActiveProfiles("test")
+class ActuatorControllerTest {
 
-    private static final String HEALTH_ENDPOINT = "health";
-    private static final String METRICS_ENDPOINT = "metrics";
-    private static final String PROMETHEUS_ENDPOINT = "prometheus";
-    private static final String SWAGGER_ENDPOINT = "v3/api-docs";
+    @Autowired
+    WebTestClient webClient;
 
-    @LocalServerPort
-    private int randomServerPort;
+    @Value("${spring.security.user.name}")
+    String username;
+    @Value("${spring.security.user.password}")
+    String password;
 
     @BeforeEach
-    public void setUpPort() {
-        super.setHttpPrefix(randomServerPort);
-    }
-
-    @Test
-    void testGetHealth_Unauthorized() {
-        assertUnauthorizedActGet(HEALTH_ENDPOINT);
-    }
-
-    @Test
-    void testGetMetrics_Unauthorized() {
-        assertUnauthorizedActGet(METRICS_ENDPOINT);
-    }
-
-    @Test
-    void testGetPrometheus_Unauthorized() {
-        assertUnauthorizedActGet(PROMETHEUS_ENDPOINT);
-    }
-
-    @Test
-    void testGetSwagger_Unauthorized() {
-        assertUnauthorizedActGet(SWAGGER_ENDPOINT);
+    void beforeEach() {
+        var filter = ExchangeFilterFunctions.basicAuthentication(username, password);
+        webClient = webClient.mutate().filter(filter).build();
     }
 
     @Test
     void testGetHealth() {
-        var invocationBuilder = super.sendActRequest(HEALTH_ENDPOINT);
-        var rawresp = invocationBuilder.buildGet().invoke();
-        assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+        webClient.get().uri("/health").accept(APPLICATION_JSON)
+            .exchange().expectStatus().isOk();
     }
 
     @Test
     void testGetMetrics() {
-        var invocationBuilder = super.sendActRequest(METRICS_ENDPOINT);
-        var rawresp = invocationBuilder.buildGet().invoke();
-        assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+        webClient.get().uri("/metrics").accept(APPLICATION_JSON)
+            .exchange().expectStatus().isOk();
     }
 
     @Test
     void testGetPrometheus() {
-        var invocationBuilder = super.sendActRequest(PROMETHEUS_ENDPOINT);
-        var rawresp = invocationBuilder.buildGet().invoke();
-        assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+        webClient.get().uri("/prometheus").accept(TEXT_PLAIN)
+            .exchange().expectStatus().isOk();
     }
 
     @Test
     void testGetSwagger() {
-        var invocationBuilder = super.sendActRequest(SWAGGER_ENDPOINT);
-        var rawresp = invocationBuilder.buildGet().invoke();
-        assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+        webClient.get().uri("/v3/api-docs").accept(APPLICATION_JSON)
+            .exchange().expectStatus().isOk();
     }
 }
index 5b94814..87e43ea 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2023 Nordix Foundation.
+ *  Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * 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.clamp.acm.runtime.main.rest;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.springframework.http.MediaType.TEXT_PLAIN;
 
-import jakarta.ws.rs.client.Invocation;
-import jakarta.ws.rs.core.Response;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.onap.policy.clamp.acm.runtime.util.rest.CommonRestController;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.actuate.observability.AutoConfigureObservability;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.web.server.LocalServerPort;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.web.reactive.server.WebTestClient;
 
 @AutoConfigureObservability(tracing = false)
 @ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
-@ActiveProfiles({ "prometheus-noauth", "default" })
-class PrometheusNoAuthTest extends CommonRestController {
-    private static final String PROMETHEUS_ENDPOINT = "prometheus";
+@ActiveProfiles({"prometheus-noauth", "default"})
+class PrometheusNoAuthTest {
 
-    @LocalServerPort
-    private int randomServerPort;
-
-    @BeforeEach
-    public void setUpPort() {
-        super.setHttpPrefix(randomServerPort);
-    }
+    @Autowired
+    WebTestClient webClient;
 
     @Test
-    void testGetPrometheusNoAuth() {
-        Invocation.Builder invocationBuilder = super.sendNoAuthActRequest(PROMETHEUS_ENDPOINT);
-        Response rawresp = invocationBuilder.buildGet().invoke();
-        assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
+    void testGetPrometheus() {
+        webClient.get().uri("/prometheus").accept(TEXT_PLAIN)
+            .exchange().expectStatus().isOk();
     }
 }
index 0df9719..9c765e1 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2021-2023 Nordix Foundation.
+ *  Copyright (C) 2021-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ package org.onap.policy.clamp.acm.runtime.util.rest;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import jakarta.ws.rs.client.Client;
 import jakarta.ws.rs.client.ClientBuilder;
 import jakarta.ws.rs.client.Entity;
 import jakarta.ws.rs.client.Invocation;
@@ -45,6 +46,7 @@ public class CommonRestController {
     public static final String ACTUATOR_ENDPOINT = CONTEXT_PATH + "/";
 
     private static String httpPrefix;
+    protected Client client;
 
     /**
      * Verifies that an endpoint appears within the swagger response.
@@ -52,7 +54,7 @@ public class CommonRestController {
      * @param endpoint the endpoint of interest
      */
     protected void testSwagger(final String endpoint) {
-        final var invocationBuilder = sendActRequest("v3/api-docs");
+        final var invocationBuilder = sendActRequest();
         final var resp = invocationBuilder.get(String.class);
 
         assertThat(resp).contains(endpoint);
@@ -71,15 +73,14 @@ public class CommonRestController {
     /**
      * Sends a request to an actuator endpoint.
      *
-     * @param endpoint the target endpoint
      * @return a request builder
      */
-    protected Invocation.Builder sendActRequest(final String endpoint) {
-        return sendFqeRequest(httpPrefix + ACTUATOR_ENDPOINT + endpoint, true);
+    protected Invocation.Builder sendActRequest() {
+        return sendFqeRequest(httpPrefix + ACTUATOR_ENDPOINT + "v3/api-docs", true);
     }
 
     /**
-     * Sends a request to an Rest Api endpoint, without any authorization header.
+     * Sends a request to a Rest Api endpoint, without any authorization header.
      *
      * @param endpoint the target endpoint
      * @return a request builder
@@ -88,16 +89,6 @@ public class CommonRestController {
         return sendFqeRequest(httpPrefix + ENDPOINT_PREFIX + endpoint, false);
     }
 
-    /**
-     * Sends a request to an actuator endpoint, without any authorization header.
-     *
-     * @param endpoint the target endpoint
-     * @return a request builder
-     */
-    protected Invocation.Builder sendNoAuthActRequest(final String endpoint) {
-        return sendFqeRequest(httpPrefix + ACTUATOR_ENDPOINT + endpoint, false);
-    }
-
     /**
      * Sends a request to a fully qualified endpoint.
      *
@@ -106,7 +97,7 @@ public class CommonRestController {
      * @return a request builder
      */
     protected Invocation.Builder sendFqeRequest(final String fullyQualifiedEndpoint, boolean includeAuth) {
-        final var client = ClientBuilder.newBuilder().build();
+        client = ClientBuilder.newBuilder().build();
 
         client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
         client.register(GsonMessageBodyHandler.class);
@@ -124,11 +115,12 @@ public class CommonRestController {
      * Assert that POST call is Unauthorized.
      *
      * @param endPoint the endpoint
-     * @param entity the entity ofthe body
+     * @param entity the entity of the body
      */
     protected void assertUnauthorizedPost(final String endPoint, final Entity<?> entity) {
         var rawresp = sendNoAuthRequest(endPoint).post(entity);
         assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
+        rawresp.close();
     }
 
     /**
@@ -140,6 +132,7 @@ public class CommonRestController {
     protected void assertUnauthorizedPut(final String endPoint, final Entity<?> entity) {
         var rawresp = sendNoAuthRequest(endPoint).put(entity);
         assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
+        rawresp.close();
     }
 
     /**
@@ -150,16 +143,7 @@ public class CommonRestController {
     protected void assertUnauthorizedGet(final String endPoint) {
         var rawresp = sendNoAuthRequest(endPoint).buildGet().invoke();
         assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
-    }
-
-    /**
-     * Assert that GET call to actuator endpoint is Unauthorized.
-     *
-     * @param endPoint the endpoint
-     */
-    protected void assertUnauthorizedActGet(final String endPoint) {
-        var rawresp = sendNoAuthActRequest(endPoint).buildGet().invoke();
-        assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
+        rawresp.close();
     }
 
     /**
@@ -170,6 +154,7 @@ public class CommonRestController {
     protected void assertUnauthorizedDelete(final String endPoint) {
         var rawresp = sendNoAuthRequest(endPoint).delete();
         assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
+        rawresp.close();
     }
 
     /**
@@ -181,7 +166,4 @@ public class CommonRestController {
         httpPrefix = "http://" + SELF + ":" + port + "/";
     }
 
-    protected String getHttpPrefix() {
-        return httpPrefix;
-    }
 }
index 57da3af..a75c5d3 100644 (file)
@@ -10,37 +10,6 @@ spring:
       ddl-auto: create
     open-in-view: false
 
-server:
-  servlet:
-    context-path: /onap/policy/clamp/acm
-
-runtime:
-  topics:
-    operationTopic: policy-acruntime-participant
-    syncTopic: acm-ppnt-sync
-  participantParameters:
-    updateParameters:
-      maxRetryCount: 3
-  topicParameterGroup:
-    topicSources:
-      -
-        topic: ${runtime.topics.operationTopic}
-        servers:
-          - localhost
-        topicCommInfrastructure: noop
-        fetchTimeout: 15000
-    topicSinks:
-      -
-        topicCommInfrastructure: noop
-        servers:
-          - localhost
-        topic: ${runtime.topics.operationTopic}
-
-      - topic: ${runtime.topics.syncTopic}
-        servers:
-          - ${topicServer:kafka:9092}
-        topicCommInfrastructure: noop
-
 tracing:
   enabled: true
   exporter:
index 31e5473..e3d4a48 100644 (file)
@@ -7,60 +7,5 @@ spring:
       maximumPoolSize: 3
   jpa:
     hibernate:
-      ddl-auto: create
+      ddl-auto: create-drop
     open-in-view: false
-
-server:
-  servlet:
-    context-path: /onap/policy/clamp/acm
-
-runtime:
-  topics:
-    operationTopic: policy-acruntime-participant
-    syncTopic: acm-ppnt-sync
-  participantParameters:
-    updateParameters:
-      maxRetryCount: 3
-  topicParameterGroup:
-    topicSources:
-      -
-        topic: ${runtime.topics.operationTopic}
-        servers:
-          - kafka:9092
-        topicCommInfrastructure: NOOP
-        fetchTimeout: 15000
-    topicSinks:
-      -
-        topicCommInfrastructure: NOOP
-        servers:
-          - kafka:9092
-        topic: ${runtime.topics.operationTopic}
-      -
-        topic: ${runtime.topics.syncTopic}
-        servers:
-            - ${topicServer:kafka:9092}
-        topicCommInfrastructure: NOOP
-  acmParameters:
-    acElementName: org.onap.policy.clamp.acm.AutomationCompositionElement
-    acNodeType: org.onap.policy.clamp.acm.AutomationComposition
-
-management:
-  endpoints:
-    web:
-      base-path: /
-      exposure:
-        include: health, metrics, prometheus
-  tracing:
-    propagation:
-      produce: b3
-    sampling:
-      probability: 1.0
-
-tracing:
-  enabled: true
-  exporter:
-    endpoint: http://jaeger:4317
-    protocol: grpc
-  sampler:
-    jaeger-remote:
-      endpoint: http://jaeger:14250
\ No newline at end of file
diff --git a/runtime-acm/src/test/resources/application-tracing.yaml b/runtime-acm/src/test/resources/application-tracing.yaml
new file mode 100644 (file)
index 0000000..d24fe9c
--- /dev/null
@@ -0,0 +1,27 @@
+spring:
+  datasource:
+    url: jdbc:h2:mem:testdb
+    driverClassName: org.h2.Driver
+    hikari:
+      maxLifetime: 1800000
+      maximumPoolSize: 3
+  jpa:
+    hibernate:
+      ddl-auto: create-drop
+    open-in-view: false
+
+management:
+  tracing:
+    propagation:
+      produce: b3
+    sampling:
+      probability: 1.0
+
+tracing:
+  enabled: true
+  exporter:
+    endpoint: http://jaeger:4317
+    protocol: grpc
+  sampler:
+    jaeger-remote:
+      endpoint: http://jaeger:14250
\ No newline at end of file
diff --git a/runtime-acm/src/test/resources/testscripts/listenOnTopic.sh b/runtime-acm/src/test/resources/testscripts/listenOnTopic.sh
deleted file mode 100755 (executable)
index 5e66177..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#! /bin/bash
-#  ============LICENSE_START=======================================================
-#  Copyright (C) 2021 Nordix Foundation.
-#  ================================================================================
-#  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.
-#
-#  SPDX-License-Identifier: Apache-2.0
-#  ============LICENSE_END=========================================================
-
-if [ $# -ne 1 ]
-then
-    echo invalid parameters $*, specify a single parameter as the topic to listen on
-    exit 1
-fi
-
-while true
-do
-    curl "http://localhost:3904/events/$1/TEST/1?timeout=60000"
-    echo ""
-done
-