RED-9123: Improve performance of re-analysis (Spike)

* refactoring and more tracing
This commit is contained in:
maverickstuder 2024-07-05 16:59:58 +02:00
parent 03571697bf
commit d40ffcdb25

View File

@ -36,6 +36,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -56,6 +57,7 @@ import com.iqser.red.service.redaction.v1.server.model.dictionary.DictionaryMode
import com.iqser.red.service.redaction.v1.server.model.dictionary.DictionaryVersion;
import com.iqser.red.service.redaction.v1.server.service.AnalyzeService;
import com.iqser.red.service.redaction.v1.server.service.DictionaryService;
import com.iqser.red.service.redaction.v1.server.service.websocket.RedisSyncedWebSocketService;
import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService;
import com.iqser.red.service.redaction.v1.server.testcontainers.MongoDBTestContainer;
import com.iqser.red.service.redaction.v1.server.utils.exception.NotFoundException;
@ -74,7 +76,7 @@ import lombok.extern.slf4j.Slf4j;
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Import(RedactionIntegrationTest.RedactionIntegrationTestConfiguration.class)
@Disabled
//@Disabled
/*
* This test is meant to be used directly with a download from blob storage (e.g. minio). You need to define the dossier template you want to use by supplying an absolute path.
* The dossier template will then be parsed for dictionaries, colors, entities, and rules. This is defined for the all tests once.
@ -123,12 +125,18 @@ import lombok.extern.slf4j.Slf4j;
@MockBean
protected TenantAuthenticationManagerResolver tenantAuthenticationManagerResolver;
@MockBean
private RedisSyncedWebSocketService redisSyncedWebSocketService;
@MockBean
private RedisMessageListenerContainer redisPubsubContainer;
@Test
@SneakyThrows
public void runAnalysisEnd2End() {
String folder = "/Users/maverickstuder/Documents/RedactManager/redaction-service/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/files_end2end/file0"; // Should contain all files from minio directly, still zipped. Can contain multiple files.
String folder = "/Users/maverickstuder/Documents/RedactManager/redaction-service/redaction-service-v1/redaction-service-server-v1/src/test/resources/files/files_end2end/file_large2"; // Should contain all files from minio directly, still zipped. Can contain multiple files.
Path absoluteFolderPath;
if (folder.startsWith("files")) { // if it starts with "files" it is most likely in the resources folder, else it should be an absolute path
@ -145,7 +153,7 @@ import lombok.extern.slf4j.Slf4j;
AnalyzeRequest analyzeRequest = analyzeRequests.get(i);
log.info("{}/{}: Starting analysis for file {}", i + 1, analyzeRequests.size(), analyzeRequest.getFileId());
var times = new LinkedList<Long>();
for (int j = 1; j <= 10; j++) {
for (int j = 1; j <= 1; j++) {
var start = System.currentTimeMillis();
analyzeService.analyze(analyzeRequest);
times.add(System.currentTimeMillis() - start);