</dependencyManagement>
<properties>
+ <jakarta-servlet.version>5.0.0</jakarta-servlet.version>
<maven.compiler.release>17</maven.compiler.release>
<start-class>org.onap.aai.modelloader.service.ModelLoaderApplication</start-class>
<nexusproxy>https://nexus.onap.org</nexusproxy>
<docker.location>${basedir}/target</docker.location>
- <spring-boot.version>2.7.18</spring-boot.version>
- <spring-cloud.version>2021.0.8</spring-cloud.version>
+ <spring-boot.version>3.1.12</spring-boot.version>
+ <spring-cloud.version>2023.0.6</spring-cloud.version>
<spring-kafka.version>2.9.13</spring-kafka.version>
<apache.commons-text.version>1.10.0</apache.commons-text.version>
<commons-compress.version>1.27.0</commons-compress.version>
<gson.version>2.10.1</gson.version>
<babel.version>1.13.0</babel.version>
<sdc-distribution-client.version>2.0.0</sdc-distribution-client.version>
- <logback.version>1.2.11</logback.version>
+ <logback.version>1.4.14</logback.version>
<!-- docker related properties -->
<docker.fabric.version>0.39.0</docker.fabric.version>
<aai.docker.version>1.0.0</aai.docker.version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${apache.commons-text.version}</version>
</dependency>
<dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-sleuth</artifactId>
+ <groupId>org.apache.httpcomponents.client5</groupId>
+ <artifactId>httpclient5</artifactId>
</dependency>
<dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-sleuth-zipkin</artifactId>
+ <groupId>io.micrometer</groupId>
+ <artifactId>micrometer-tracing-bridge-brave</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.zipkin.reporter2</groupId>
+ <artifactId>zipkin-reporter-brave</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
import java.util.Timer;
import java.util.TimerTask;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PreDestroy;
import org.onap.aai.cl.api.Logger;
import org.onap.aai.cl.eelf.LoggerFactory;
import javax.xml.parsers.DocumentBuilder;\r
import javax.xml.parsers.DocumentBuilderFactory;\r
import org.apache.commons.text.StringEscapeUtils;\r
-import org.apache.http.client.utils.URIBuilder;\r
+import org.apache.hc.core5.net.URIBuilder;\r
import org.onap.aai.cl.api.Logger;\r
import org.onap.aai.cl.eelf.LoggerFactory;\r
import org.onap.aai.modelloader.config.AaiProperties;\r
spring.application.name=model-loader
-spring.sleuth.enabled=false
+management.tracing.enabled=false
spring.zipkin.baseUrl=http://jaeger-collector.istio-system:9411
spring.sleuth.messaging.jms.enabled=false
-spring.sleuth.trace-id128=true
-spring.sleuth.sampler.probability=1.0
-spring.sleuth.propagation.type=w3c,b3
-spring.sleuth.supports-join=false
+management.tracing.sampling.probability=1.0
+management.tracing.propagation.type=w3c,b3
spring.sleuth.web.skip-pattern=/aai/util.*
server.tomcat.threads.max=200
# Spring Boot logging
logging.config=${logback.configurationFile}
+# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default
+logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
management.endpoints.web.exposure.include=*
import org.onap.sdc.utils.DistributionStatusEnum;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
- import static org.mockito.Mockito.*;
+ import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
assertNull(statusMsg.getConsumerID());
assertEquals(DistributionStatusEnum.DEPLOY_OK, statusMsg.getStatus());
}
-}
\ No newline at end of file
+}
import org.onap.sdc.api.consumer.IDistributionStatusMessage;
import org.onap.sdc.api.notification.IArtifactInfo;
import org.onap.sdc.api.notification.INotificationData;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import org.onap.sdc.utils.DistributionStatusEnum;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import java.util.Base64;
import java.util.List;
-import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.onap.aai.babel.service.data.BabelArtifact;
import org.onap.aai.babel.service.data.BabelRequest;
@Value("${wiremock.server.port}")
private int wiremockPort;
- @Autowired BabelServiceClient client;
+ @Autowired
+ private BabelServiceClient client;
- @BeforeAll
- public static void setup() throws JsonProcessingException {
+ @BeforeEach
+ public void setup() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
List<BabelArtifact> artifacts = List.of(
new BabelArtifact("art1", null, ""),
new BabelArtifact("art2", null, ""),
- new BabelArtifact("art3", null, ""));
+ new BabelArtifact("art3", null, "")
+ );
+
WireMock.stubFor(
WireMock.post(WireMock.urlEqualTo("/services/babel-service/v1/app/generateArtifacts"))
.withHeader("X-TransactionId", WireMock.equalTo("Test-Transaction-ID-BabelClient"))
.willReturn(
WireMock.aResponse()
.withHeader("Content-Type", "application/json")
- .withBody(objectMapper.writeValueAsString(artifacts))));
+ .withBody(objectMapper.writeValueAsString(artifacts))
+ )
+ );
}
@Test
public void testRestClient() throws BabelServiceClientException, IOException, URISyntaxException {
BabelRequest babelRequest = new BabelRequest();
babelRequest.setArtifactName("service-Vscpass-Test");
- babelRequest.setCsar(Base64.getEncoder().encodeToString(readBytesFromFile("compressedArtifacts/service-VscpaasTest-csar.csar")));
+ babelRequest.setCsar(Base64.getEncoder().encodeToString(
+ readBytesFromFile("compressedArtifacts/service-VscpaasTest-csar.csar")
+ ));
babelRequest.setArtifactVersion("1.0");
- List<BabelArtifact> result =
- client.postArtifact(babelRequest, "Test-Transaction-ID-BabelClient");
+ List<BabelArtifact> result = client.postArtifact(babelRequest, "Test-Transaction-ID-BabelClient");
assertThat(result.size(), is(equalTo(3)));
}
-
private byte[] readBytesFromFile(String resourceFile) throws IOException, URISyntaxException {
return Files.readAllBytes(Path.of(ClassLoader.getSystemResource(resourceFile).toURI()));
}
import com.github.tomakehurst.wiremock.client.WireMock;
@SpringBootTest(properties = {
- "spring.sleuth.enabled=true",
- "spring.zipkin.baseUrl=http://localhost:${wiremock.server.port}"
+ "spring.sleuth.enabled=true",
+ "spring.zipkin.base-url=http://localhost:${wiremock.server.port}",
+ "spring.main.allow-bean-definition-overriding=true",
+ "spring.security.enabled=false"
})
@AutoConfigureWireMock(port = 0)
public class TracingTest {
- @Value("${wiremock.server.port}")
- private int wiremockPort;
-
- @Autowired RestTemplate restTemplate;
-
- @Test
- public void thatArtifactsCanBePushed() {
- WireMock.stubFor(
- WireMock.post(WireMock.urlEqualTo("/api/v2/spans"))
- .willReturn(
- WireMock.aResponse()
- .withStatus(HttpStatus.OK.value())));
-
- WireMock.stubFor(
- WireMock.get(WireMock.urlEqualTo("/"))
- .withHeader("X-B3-TraceId", WireMock.matching(".*"))
- .willReturn(
- WireMock.aResponse()
- .withStatus(HttpStatus.OK.value())));
-
-
- String response = restTemplate.getForObject("http://localhost:" + wiremockPort + "/", String.class);
- }
-
+ @Value("${wiremock.server.port}")
+ private int wiremockPort;
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Test
+ public void thatArtifactsCanBePushed() {
+ // Stub Zipkin POST /api/v2/spans
+ WireMock.stubFor(
+ WireMock.post(WireMock.urlEqualTo("/api/v2/spans"))
+ .willReturn(WireMock.aResponse()
+ .withStatus(HttpStatus.OK.value()))
+ );
+
+ // Stub GET /
+ WireMock.stubFor(
+ WireMock.get(WireMock.urlEqualTo("/"))
+ .willReturn(WireMock.aResponse()
+ .withStatus(HttpStatus.OK.value())
+ .withBody("ok"))
+ );
+
+ // Call the WireMock GET endpoint
+ String response = restTemplate.getForObject(
+ "http://localhost:" + wiremockPort + "/", String.class);
+ }
}
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.mockito.*;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import org.onap.aai.cl.api.Logger;
import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.modelloader.config.ModelLoaderConfig;
CONFIG_HOME=src/test/resources
+# Logging pattern containing traceId and spanId; no longer provided through Sleuth by default
+logging.pattern.level="%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.group-id=aai
spring.kafka.consumer.client-id=aai-model-loader
topics.distribution.notification=SDC-DISTR-NOTIF-TOPIC-AUTO
-spring.sleuth.enabled=false
+management.tracing.enabled=false
ml.distribution.connection.enabled=false # avoid having the distribution client running in the background (requires active kafka)
ml.babel.generate-artifacts-url=/services/babel-service/v1/app/generateArtifacts