RED-4510: Added generated RedactionLog Json files and optimizations for RulesTest.java for Bamboo
This commit is contained in:
parent
5834e8891f
commit
f228f06809
@ -113,10 +113,16 @@ public class RulesTest {
|
|||||||
private static final String IMPORTED_REDACTION = "imported_redaction";
|
private static final String IMPORTED_REDACTION = "imported_redaction";
|
||||||
private static final String PII = "PII";
|
private static final String PII = "PII";
|
||||||
private static final String RESOURCES_PATH = "src/test/resources/";
|
private static final String RESOURCES_PATH = "src/test/resources/";
|
||||||
private static final String REDACTION_LOG_PATH = RESOURCES_PATH + "RedactionLog/";
|
|
||||||
|
private static final String REDACTION_LOG_PATH = "RedactionLog/";
|
||||||
|
private static final String REDACTION_LOG_RESOURCES_PATH = RESOURCES_PATH + REDACTION_LOG_PATH;
|
||||||
private final static String TEST_DOSSIER_TEMPLATE_ID = "123";
|
private final static String TEST_DOSSIER_TEMPLATE_ID = "123";
|
||||||
private final static String TEST_DOSSIER_ID = "123";
|
private final static String TEST_DOSSIER_ID = "123";
|
||||||
private String TEST_FILE_ID = "123";
|
private String TEST_FILE_ID = "123";
|
||||||
|
|
||||||
|
private int counter = 0;
|
||||||
|
|
||||||
|
private int fileSize = 0;
|
||||||
private final Map<String, List<String>> dictionary = new HashMap<>();
|
private final Map<String, List<String>> dictionary = new HashMap<>();
|
||||||
private final Map<String, List<String>> dossierDictionary = new HashMap<>();
|
private final Map<String, List<String>> dossierDictionary = new HashMap<>();
|
||||||
private final Map<String, List<String>> falsePositive = new HashMap<>();
|
private final Map<String, List<String>> falsePositive = new HashMap<>();
|
||||||
@ -175,7 +181,9 @@ public class RulesTest {
|
|||||||
.hexColor("#ffe187")
|
.hexColor("#ffe187")
|
||||||
.isHint(hintTypeMap.get(DOSSIER_REDACTIONS))
|
.isHint(hintTypeMap.get(DOSSIER_REDACTIONS))
|
||||||
.isCaseInsensitive(caseInSensitiveMap.get(DOSSIER_REDACTIONS))
|
.isCaseInsensitive(caseInSensitiveMap.get(DOSSIER_REDACTIONS))
|
||||||
.isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS)).rank(rankTypeMap.get(DOSSIER_REDACTIONS)).build()));
|
.isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS))
|
||||||
|
.rank(rankTypeMap.get(DOSSIER_REDACTIONS))
|
||||||
|
.build()));
|
||||||
|
|
||||||
mockDictionaryCalls(null);
|
mockDictionaryCalls(null);
|
||||||
mockDictionaryCalls(0L);
|
mockDictionaryCalls(0L);
|
||||||
@ -195,7 +203,7 @@ public class RulesTest {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates RedactionLog for given file and saves it here: REDACTION_LOG_PATH.
|
* Generates RedactionLog for given file and saves it here: REDACTION_LOG_PATH.
|
||||||
* If the RedactionLog already exists, the generating will be skipped
|
* If the RedactionLog already exists, it will be overwritten
|
||||||
* Test is ignored, because it's for manual tests.
|
* Test is ignored, because it's for manual tests.
|
||||||
*/
|
*/
|
||||||
@Ignore
|
@Ignore
|
||||||
@ -203,7 +211,8 @@ public class RulesTest {
|
|||||||
public void generateRedactionLogForOneFile() {
|
public void generateRedactionLogForOneFile() {
|
||||||
|
|
||||||
String fileName = "files/Compounds/31 A14111B - EU AIR3 - MCP Section 1 - Identity of the plant protection product.pdf";
|
String fileName = "files/Compounds/31 A14111B - EU AIR3 - MCP Section 1 - Identity of the plant protection product.pdf";
|
||||||
generateAndSaveRedactionLog(fileName);
|
fileSize = 1;
|
||||||
|
generateAndSaveRedactionLog(fileName, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -217,6 +226,7 @@ public class RulesTest {
|
|||||||
|
|
||||||
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
|
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
|
||||||
System.out.println("Will generate RedactionLog for " + files.size() + " files.");
|
System.out.println("Will generate RedactionLog for " + files.size() + " files.");
|
||||||
|
fileSize = files.size();
|
||||||
files.forEach(this::generateAndSaveRedactionLog);
|
files.forEach(this::generateAndSaveRedactionLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,13 +234,12 @@ public class RulesTest {
|
|||||||
/**
|
/**
|
||||||
* Analyses file and compares its RedactionLog with saved one from here: REDACTION_LOG_PATH.
|
* Analyses file and compares its RedactionLog with saved one from here: REDACTION_LOG_PATH.
|
||||||
* If RedactionLog Json does not exist, test will fail.
|
* If RedactionLog Json does not exist, test will fail.
|
||||||
* Test is ignored, because it's for manual tests.
|
|
||||||
*/
|
*/
|
||||||
@Ignore
|
|
||||||
@Test
|
@Test
|
||||||
public void analyseFileAndCompareRedactionLog() {
|
public void analyseFileAndCompareRedactionLog() {
|
||||||
|
|
||||||
String fileName = "files/Compounds/31 A14111B - EU AIR3 - MCP Section 1 - Identity of the plant protection product.pdf";
|
String fileName = "files/RulesTest/SYNGENTA_EFSA_sanitisation_GFL_v1_withHighlights.pdf";
|
||||||
|
fileSize = 1;
|
||||||
analyseFileAndCompareRedactionLog(fileName);
|
analyseFileAndCompareRedactionLog(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,20 +254,28 @@ public class RulesTest {
|
|||||||
|
|
||||||
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
|
Set<String> files = getFileNames(new HashSet<>(), FileSystems.getDefault().getPath(RESOURCES_PATH));
|
||||||
System.out.println("Will analyse " + files.size() + " files and compare its RedactionLogs.");
|
System.out.println("Will analyse " + files.size() + " files and compare its RedactionLogs.");
|
||||||
|
fileSize = files.size();
|
||||||
files.forEach(this::analyseFileAndCompareRedactionLog);
|
files.forEach(this::analyseFileAndCompareRedactionLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SneakyThrows
|
|
||||||
private void generateAndSaveRedactionLog(String fileName) {
|
private void generateAndSaveRedactionLog(String fileName) {
|
||||||
|
|
||||||
if (doesRedactionLogExist(fileName)) {
|
generateAndSaveRedactionLog(fileName, false);
|
||||||
System.out.println("Skip generating RedactionLog as Json for " + fileName + " because it already exists.");
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
private void generateAndSaveRedactionLog(String fileName, boolean force) {
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
if (!force && doesRedactionLogExist(fileName)) {
|
||||||
|
System.out.println("(" + counter + "/" + fileSize + ") Skip generating RedactionLog as Json for " + fileName + " because it already exists.");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
generateTestFileId(fileName);
|
generateTestFileId(fileName);
|
||||||
|
|
||||||
System.out.println("Generate RedactionLog as Json for " + fileName + " with fileId " + TEST_FILE_ID);
|
System.out.println("(" + counter + "/" + fileSize + ") Generate RedactionLog as Json for " + fileName + " with fileId " + TEST_FILE_ID);
|
||||||
|
|
||||||
loadNerForTest();
|
loadNerForTest();
|
||||||
|
|
||||||
@ -277,8 +294,9 @@ public class RulesTest {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public void analyseFileAndCompareRedactionLog(String fileName) {
|
public void analyseFileAndCompareRedactionLog(String fileName) {
|
||||||
|
|
||||||
|
counter++;
|
||||||
generateTestFileId(fileName);
|
generateTestFileId(fileName);
|
||||||
System.out.println("Analyse " + fileName + " with fileId " + TEST_FILE_ID + " and compare it with its saved RedactionLog");
|
System.out.println("(" + counter + "/" + fileSize + ") Analyse " + fileName + " with fileId " + TEST_FILE_ID + " and compare it with its saved RedactionLog");
|
||||||
|
|
||||||
RedactionLog savedRedactionLog = loadSavedRedactionLog(fileName);
|
RedactionLog savedRedactionLog = loadSavedRedactionLog(fileName);
|
||||||
|
|
||||||
@ -386,7 +404,7 @@ public class RulesTest {
|
|||||||
assertThat(savedManualChange).isPresent();
|
assertThat(savedManualChange).isPresent();
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(savedRedactionLogEntry.get().getEngines()).containsExactly(redactionLogEntry.getEngines().toArray(new Engine[0]));
|
assertThat(savedRedactionLogEntry.get().getEngines()).containsExactlyInAnyOrder(redactionLogEntry.getEngines().toArray(new Engine[0]));
|
||||||
|
|
||||||
assertThat(savedRedactionLogEntry.get().getReference()).containsAll(redactionLogEntry.getReference());
|
assertThat(savedRedactionLogEntry.get().getReference()).containsAll(redactionLogEntry.getReference());
|
||||||
assertThat(savedRedactionLogEntry.get().getImportedRedactionIntersections()).containsAll(redactionLogEntry.getImportedRedactionIntersections());
|
assertThat(savedRedactionLogEntry.get().getImportedRedactionIntersections()).containsAll(redactionLogEntry.getImportedRedactionIntersections());
|
||||||
@ -398,7 +416,7 @@ public class RulesTest {
|
|||||||
private boolean doesRedactionLogExist(String pdfFileName) {
|
private boolean doesRedactionLogExist(String pdfFileName) {
|
||||||
|
|
||||||
File pdfFile = new File(pdfFileName);
|
File pdfFile = new File(pdfFileName);
|
||||||
String directory = REDACTION_LOG_PATH + pdfFile.getParentFile().getPath();
|
String directory = REDACTION_LOG_RESOURCES_PATH + pdfFile.getParentFile().getPath();
|
||||||
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
||||||
File file = new File(directory, fileName);
|
File file = new File(directory, fileName);
|
||||||
return file.exists();
|
return file.exists();
|
||||||
@ -420,7 +438,7 @@ public class RulesTest {
|
|||||||
|
|
||||||
File pdfFile = new File(pdfFileName);
|
File pdfFile = new File(pdfFileName);
|
||||||
|
|
||||||
String directory = REDACTION_LOG_PATH + pdfFile.getParentFile().getPath();
|
String directory = REDACTION_LOG_RESOURCES_PATH + pdfFile.getParentFile().getPath();
|
||||||
File dr = new File(directory);
|
File dr = new File(directory);
|
||||||
boolean created = dr.mkdirs();
|
boolean created = dr.mkdirs();
|
||||||
if (created) {
|
if (created) {
|
||||||
@ -440,8 +458,20 @@ public class RulesTest {
|
|||||||
private RedactionLog loadSavedRedactionLog(String pdfFileName) {
|
private RedactionLog loadSavedRedactionLog(String pdfFileName) {
|
||||||
|
|
||||||
File pdfFile = new File(pdfFileName);
|
File pdfFile = new File(pdfFileName);
|
||||||
String directory = REDACTION_LOG_PATH + pdfFile.getParentFile().getPath();
|
String directory = cleanPath(pdfFile.getParentFile().getPath());
|
||||||
|
if (StringUtils.contains(directory, RESOURCES_PATH)) {
|
||||||
|
if (!StringUtils.endsWith(directory, "/")) {
|
||||||
|
directory = directory + "/";
|
||||||
|
}
|
||||||
|
directory = directory + REDACTION_LOG_PATH;
|
||||||
|
} else {
|
||||||
|
if (StringUtils.startsWith(directory, "/")) {
|
||||||
|
directory = StringUtils.substring(directory, 1);
|
||||||
|
}
|
||||||
|
directory = REDACTION_LOG_RESOURCES_PATH + directory;
|
||||||
|
}
|
||||||
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
String fileName = StringUtils.replace(pdfFile.getName(), ".pdf", ".json");
|
||||||
|
|
||||||
File file = new File(directory, fileName);
|
File file = new File(directory, fileName);
|
||||||
assertThat(file).exists();
|
assertThat(file).exists();
|
||||||
|
|
||||||
@ -449,6 +479,31 @@ public class RulesTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
|
private Set<String> getFileNames(Set<String> fileNames, Path dir) {
|
||||||
|
|
||||||
|
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
|
||||||
|
for (Path path : stream) {
|
||||||
|
if (path.toFile().isDirectory()) {
|
||||||
|
getFileNames(fileNames, path);
|
||||||
|
} else if (StringUtils.endsWith(path.toAbsolutePath().toString(), ".pdf")) {
|
||||||
|
String absolutePath = cleanPath(path.toAbsolutePath().toString());
|
||||||
|
int pos = StringUtils.indexOf(absolutePath, RESOURCES_PATH) + RESOURCES_PATH.length();
|
||||||
|
|
||||||
|
fileNames.add(StringUtils.substring(absolutePath, pos));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fileNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String cleanPath(String path) {
|
||||||
|
|
||||||
|
return StringUtils.replace(path, "\\", "/");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
private void loadNerForTest() {
|
private void loadNerForTest() {
|
||||||
|
|
||||||
@ -587,24 +642,6 @@ public class RulesTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SneakyThrows
|
|
||||||
private Set<String> getFileNames(Set<String> fileNames, Path dir) {
|
|
||||||
|
|
||||||
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
|
|
||||||
for (Path path : stream) {
|
|
||||||
if (path.toFile().isDirectory()) {
|
|
||||||
getFileNames(fileNames, path);
|
|
||||||
} else if (StringUtils.endsWith(path.toAbsolutePath().toString(), ".pdf")) {
|
|
||||||
String absolutePath = path.toAbsolutePath().toString();
|
|
||||||
int pos = StringUtils.indexOf(absolutePath, StringUtils.replace(RESOURCES_PATH, "/", "\\")) + 18;
|
|
||||||
fileNames.add(StringUtils.substring(absolutePath, pos));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fileNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Type getDictionaryResponse(String type, boolean isDossierDictionary) {
|
private Type getDictionaryResponse(String type, boolean isDossierDictionary) {
|
||||||
|
|
||||||
return Type.builder()
|
return Type.builder()
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user