Pull request #512: RED-4609 - adjusted some metrics, added tests for metrics

Merge in RED/redaction-service from RED-4609 to master

* commit 'e23432096cb0ed486a294ed210646bbd8682350e':
  RED-4609 - adjusted some metrics, added tests for metrics
This commit is contained in:
Timo Bejan 2023-02-09 09:54:19 +01:00
commit 0e925f2f24
6 changed files with 55 additions and 3 deletions

View File

@ -37,7 +37,7 @@ public class ManualRedactionSurroundingTextService {
private final SurroundingWordsService surroundingWordsService;
@Timed("redactmanager_SurroundingTextAnalysis")
@Timed("redactmanager_surroundingTextAnalysis")
public AnalyzeResult addSurroundingText(String dossierId, String fileId, ManualRedactions manualRedactions) {
long startTime = System.currentTimeMillis();

View File

@ -43,7 +43,7 @@ public class SurroundingWordsService {
}
@Timed("redactmanager_addSurroundingText_tables")
@Timed("redactmanager_addSurroundingTextTables")
public void addSurroundingText(Set<Entity> entities, SearchableText searchableText, Dictionary dictionary, List<Integer> cellstarts) {
if (entities.isEmpty()) {

View File

@ -14,6 +14,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
import com.iqser.red.service.redaction.v1.model.AnalyzeRequest;
import com.iqser.red.service.redaction.v1.model.MessageType;
import com.iqser.red.service.redaction.v1.server.annotate.AnnotationService;
import com.iqser.red.service.redaction.v1.server.utils.MetricValidationUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@ -92,6 +93,16 @@ public class AnalyseFileRealDataIntegrationTest extends LiveDataIntegrationTest
// IOUtils.write(annotated.getDocument(), new FileOutputStream(tempFile));
// log.warn("File saved to: {}",tempFile.getAbsolutePath());
// Runtime.getRuntime().exec("open "+tempFile.getAbsolutePath());
//
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_getDeepCopyDictionary", 1, null);
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_analyzeDocumentStructure", 1, null);
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_getRedactionLog", 1, null);
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_getText", 1, null);
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_reanalyze", 1, null);
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_analyze", 1, null);
MetricValidationUtils.validateMetric(prometheusMeterRegistry, "redactmanager_updateDictionary", 1, null);
}
}

View File

@ -16,6 +16,7 @@ import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService
import com.iqser.red.storage.commons.StorageAutoConfiguration;
import com.iqser.red.storage.commons.service.StorageService;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import lombok.SneakyThrows;
import org.apache.commons.io.IOUtils;
@ -87,6 +88,9 @@ public class LiveDataIntegrationTest {
@Autowired
protected RedactionServiceSettings redactionServiceSettings;
@Autowired
protected PrometheusMeterRegistry prometheusMeterRegistry;
private List<Type> types;
@Configuration

View File

@ -0,0 +1,29 @@
package com.iqser.red.service.redaction.v1.server.utils;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import java.util.concurrent.TimeUnit;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import io.micrometer.prometheus.PrometheusTimer;
import lombok.experimental.UtilityClass;
@UtilityClass
public class MetricValidationUtils {
public static void validateMetric(PrometheusMeterRegistry registry, String name, int invocationCount, Integer time) {
var metricOptional = registry.getMeters().stream().filter(m -> m.getId().getName().equalsIgnoreCase(name)).findAny();
assertThat(metricOptional.isPresent()).isTrue();
PrometheusTimer metric = (PrometheusTimer) metricOptional.get();
assertThat(metric.count()).isGreaterThanOrEqualTo(invocationCount);
if (time != null) {
// for actually timing the method ...
assertThat(metric.mean(TimeUnit.MILLISECONDS)).isGreaterThan(time);
} else {
// everything takes at least one nano-second - test the meter is correctly initialized
assertThat(metric.mean(TimeUnit.NANOSECONDS)).isGreaterThan(1);
}
}
}

View File

@ -25,4 +25,12 @@ storage:
bucket-name: 'redaction'
region: 'us-east-1'
endpoint: 'https://s3.amazonaws.com'
backend: 's3'
backend: 's3'
management:
endpoint:
metrics.enabled: true
prometheus.enabled: true
health.enabled: true
endpoints.web.exposure.include: prometheus, health, metrics
metrics.export.prometheus.enabled: true