Skip to content
Snippets Groups Projects
Commit 009f5857 authored by George Tziavas's avatar George Tziavas
Browse files

Test running

parent 14a8a379
No related branches found
No related tags found
2 merge requests!5MR for Release 2024Q4,!1Creating first version of metrico
Pipeline #10380 failed
/target /target
*.iml *.iml
\ No newline at end of file .classpath
.project
\ No newline at end of file
eclipse.preferences.version=1
encoding//src/main/java=utf-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=utf-8
encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.compliance=17
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=17
package org.etsi.osl.metrico;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.etsi.osl.metrico.prometheus.PrometheusQueries;
import org.etsi.osl.metrico.reposervices.JobRepoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.etsi.osl.centrallog.client.CentralLogger;
@Configuration
@Component
public class MetricoRouteBuilder extends RouteBuilder {
private static final transient Log logger = LogFactory.getLog(MetricoRouteBuilder.class);
final JobRepoService jobRepoService;
private final PrometheusQueries prometheusQueries;
public MetricoRouteBuilder(JobRepoService jobRepoService, PrometheusQueries prometheusQueries) {
this.jobRepoService = jobRepoService;
this.prometheusQueries = prometheusQueries;
}
@Value("${MEASUREMENT_COLLECTION_JOB_CREATED}")
private static String MEASUREMENT_COLLECTION_JOB_CREATED;
@Value("${MEASUREMENT_COLLECTION_JOB_RESPONSE}")
private static String MEASUREMENT_COLLECTION_JOB_RESPONSE ;
public void configure() throws Exception{
from(MEASUREMENT_COLLECTION_JOB_CREATED)
.log(LoggingLevel.INFO, log, MEASUREMENT_COLLECTION_JOB_CREATED + "message received!")
.to("log:DEBUG?showBody=true&showHeaders=true")
.setBody(simple("Message received and processed"))
.to(MEASUREMENT_COLLECTION_JOB_RESPONSE);
}
}
//package org.etsi.osl.metrico;
//
//
//import org.apache.camel.LoggingLevel;
//import org.apache.camel.builder.RouteBuilder;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.etsi.osl.metrico.prometheus.PrometheusQueries;
//import org.etsi.osl.metrico.reposervices.JobRepoService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.stereotype.Component;
//import org.etsi.osl.centrallog.client.CentralLogger;
//
//@Configuration
//@Component
//public class MetricoRouteBuilder extends RouteBuilder {
//
// private static final transient Log logger = LogFactory.getLog(MetricoRouteBuilder.class);
//
// final JobRepoService jobRepoService;
// private final PrometheusQueries prometheusQueries;
//
// public MetricoRouteBuilder(JobRepoService jobRepoService, PrometheusQueries prometheusQueries) {
// this.jobRepoService = jobRepoService;
// this.prometheusQueries = prometheusQueries;
// }
//
// @Value("${MEASUREMENT_COLLECTION_JOB_CREATED}")
// private static String MEASUREMENT_COLLECTION_JOB_CREATED;
//
// @Value("${MEASUREMENT_COLLECTION_JOB_RESPONSE}")
// private static String MEASUREMENT_COLLECTION_JOB_RESPONSE ;
//
// public void configure() throws Exception{
// from(MEASUREMENT_COLLECTION_JOB_CREATED)
// .log(LoggingLevel.INFO, log, MEASUREMENT_COLLECTION_JOB_CREATED + "message received!")
// .to("log:DEBUG?showBody=true&showHeaders=true")
// .setBody(simple("Message received and processed"))
// .to(MEASUREMENT_COLLECTION_JOB_RESPONSE);
//
// }
//}
...@@ -14,6 +14,7 @@ import java.time.OffsetDateTime; ...@@ -14,6 +14,7 @@ import java.time.OffsetDateTime;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
@Getter @Getter
@Setter @Setter
@Entity @Entity
...@@ -100,4 +101,51 @@ public class Job{ ...@@ -100,4 +101,51 @@ public class Job{
'}'; '}';
} }
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
public void setState(ExecutionStateType state) {
this.state = state;
}
public void setStartDateTime(OffsetDateTime startDateTime) {
this.startDateTime = startDateTime;
}
public void setEndDateTime(OffsetDateTime endDateTime) {
this.endDateTime = endDateTime;
}
public void setExecutionInterval(Integer executionInterval) {
this.executionInterval = executionInterval;
}
public void setDataAccessEndPointRef(UUID dataAccessEndPointRef) {
this.dataAccessEndPointRef = dataAccessEndPointRef;
}
public void setScheduleDefinitionRef(UUID scheduleDefinitionRef) {
this.scheduleDefinitionRef = scheduleDefinitionRef;
}
public void setMeasurementCollectionJobRef(UUID measurementCollectionJobRef) {
this.measurementCollectionJobRef = measurementCollectionJobRef;
}
public void setDataAccessEndPointUri(URI dataAccessEndPointUri) {
this.dataAccessEndPointUri = dataAccessEndPointUri;
}
public void setApiType(String apiType) {
this.apiType = apiType;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
public void setFuture(ScheduledFuture<?> future) {
this.future = future;
}
} }
...@@ -7,6 +7,7 @@ import org.etsi.osl.tmf.pm628.model.ExecutionStateType; ...@@ -7,6 +7,7 @@ import org.etsi.osl.tmf.pm628.model.ExecutionStateType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
...@@ -18,7 +19,7 @@ import java.util.concurrent.TimeUnit; ...@@ -18,7 +19,7 @@ import java.util.concurrent.TimeUnit;
/** /**
* This class contains the Prometheus Queries for the metrics. * This class contains the Prometheus Queries for the metrics.
*/ */
@Service @Component
public class PrometheusQueries { public class PrometheusQueries {
private static final Logger logger = LoggerFactory.getLogger(PrometheusQueries.class); private static final Logger logger = LoggerFactory.getLogger(PrometheusQueries.class);
...@@ -34,7 +35,7 @@ public class PrometheusQueries { ...@@ -34,7 +35,7 @@ public class PrometheusQueries {
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(prometheusUrl) UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(prometheusUrl)
.path("/api/v1/query") .path("/api/v1/query")
.queryParam("query", query); .queryParam("query", query);
logger.atInfo().log("Sent query at prometheus with URL: " + prometheusUrl + "with query: " + query); logger.atInfo().log("Sent query at prometheus with URL: " + prometheusUrl + " with query: " + query);
ResponseEntity<String> response = restTemplate.getForEntity(builder.toUriString(), String.class); ResponseEntity<String> response = restTemplate.getForEntity(builder.toUriString(), String.class);
logger.atDebug().log("Received " + response.getBody()); logger.atDebug().log("Received " + response.getBody());
...@@ -46,7 +47,9 @@ public class PrometheusQueries { ...@@ -46,7 +47,9 @@ public class PrometheusQueries {
final Runnable queryHandler = new Runnable() { final Runnable queryHandler = new Runnable() {
public void run() { public void run() {
new Thread(() -> { new Thread(() -> {
sendQueryToPrometheus(prometheusUrl, query); sendQueryToPrometheus(prometheusUrl, query);
}).start(); }).start();
} }
}; };
......
...@@ -8,33 +8,28 @@ import org.etsi.osl.tmf.pm628.model.ExecutionStateType; ...@@ -8,33 +8,28 @@ import org.etsi.osl.tmf.pm628.model.ExecutionStateType;
import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob; import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.net.URI;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
@Service
public class MetricoService { public class MetricoService {
private static final Logger logger = LoggerFactory.getLogger(JobService.class); private static final Logger logger = LoggerFactory.getLogger(JobService.class);
private final PrometheusQueries prometheusQueries; private final PrometheusQueries prometheusQueries;
@Autowired
public MetricoService(PrometheusQueries prometheusQueries) { public MetricoService(PrometheusQueries prometheusQueries) {
this.prometheusQueries = prometheusQueries; this.prometheusQueries = prometheusQueries;
} }
public String sendQueryToPrometheus(String param1, String param2) { public String sendQueryToPrometheus(String promURL, String promQuery) {
return prometheusQueries.sendQueryToPrometheus(param1, param2); return prometheusQueries.sendQueryToPrometheus(promURL, promQuery);
} }
public String[] queryToPrometheus(@NotNull MeasurementCollectionJob givenMCJ){ public String[] queryToPrometheus(@NotNull MeasurementCollectionJob givenMCJ){
Job job = JobMapper.measurementCollectionJobMapToJob(givenMCJ); Job job = JobMapper.measurementCollectionJobMapToJob(givenMCJ);
URI uri = job.getDataAccessEndPointUri();
String promURL = job.getDataAccessEndPointUri().getScheme() + "://" + job.getDataAccessEndPointUri().getAuthority(); String promURL = job.getDataAccessEndPointUri().getScheme() + "://" + job.getDataAccessEndPointUri().getAuthority();
String promQuery = job.getDataAccessEndPointUri().getQuery(); String promQuery = job.getDataAccessEndPointUri().getQuery();
promQuery = promQuery.replace("query=", ""); promQuery = promQuery.replace("query=", "");
......
package org.etsi.osl.metrico.services; package org.etsi.osl.metrico.services;
import org.etsi.osl.metrico.mapper.JobMapper;
import org.etsi.osl.metrico.model.Job;
import org.etsi.osl.metrico.prometheus.PrometheusQueries;
import org.etsi.osl.tmf.pm628.model.DataAccessEndpoint; import org.etsi.osl.tmf.pm628.model.DataAccessEndpoint;
import org.etsi.osl.tmf.pm628.model.Granularity; import org.etsi.osl.tmf.pm628.model.Granularity;
import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob; import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks; import org.springframework.beans.factory.annotation.Autowired;
import org.mockito.Mock; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.*; import java.util.*;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
@SpringBootTest
@ExtendWith(SpringExtension.class)
public class MetricoServiceTest { public class MetricoServiceTest {
@Mock @Autowired
private PrometheusQueries prometheusQueries; private MetricoService metricoService;
@InjectMocks
private MetricoService metricoService = new MetricoService(prometheusQueries);
private MeasurementCollectionJob mcj; private MeasurementCollectionJob mcj;
private Job job;
@BeforeEach @BeforeEach
public void setUp() throws URISyntaxException { public void setUp() throws URISyntaxException {
...@@ -40,7 +34,7 @@ public class MetricoServiceTest { ...@@ -40,7 +34,7 @@ public class MetricoServiceTest {
DataAccessEndpoint dae = new DataAccessEndpoint(); DataAccessEndpoint dae = new DataAccessEndpoint();
dae.setApiType("PROMETHEUS"); dae.setApiType("PROMETHEUS");
dae.setUri(new URI("http://150.140.195.195:9090/api/v1/query?query=cell_dl_bitrate")); dae.setUri(new URI("http://150.140.195.195:9090/api/v1/query?query=netdata_app_disk_physical_io_KiB_persec_average"));
dae.setUuid("123e4567-e89b-12d3-a456-426614174011"); dae.setUuid("123e4567-e89b-12d3-a456-426614174011");
List<DataAccessEndpoint> daeList = new ArrayList<>(); List<DataAccessEndpoint> daeList = new ArrayList<>();
daeList.add(dae); daeList.add(dae);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment