2019-11-15 14:40:11 +01:00
|
|
|
package org.gcube.accounting.datamodel.validations.validators;
|
|
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.FileReader;
|
|
|
|
import java.net.URL;
|
|
|
|
|
|
|
|
import org.gcube.documentstore.records.DSMapper;
|
|
|
|
import org.junit.Test;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
|
|
|
public class TestRules {
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(TestRules.class);
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testAllRules() throws Exception {
|
|
|
|
|
|
|
|
String[] aggregationTests = new String[]{
|
2019-11-15 15:59:46 +01:00
|
|
|
"AuthorizationService-generate",
|
|
|
|
"AuthorizationService-retrieve",
|
|
|
|
"AuthorizationService-scopes",
|
2019-11-15 16:42:11 +01:00
|
|
|
"Catalogue-WS-licenses",
|
|
|
|
"Catalogue-WS-organizations",
|
|
|
|
"Catalogue-WS-UNKNOWN",
|
2019-11-15 15:59:46 +01:00
|
|
|
"CkanConnector-connect",
|
|
|
|
"CkanConnector-disconnect",
|
2019-11-22 16:20:53 +01:00
|
|
|
"data-transfer-service-getCapabilities",
|
2019-11-22 12:55:19 +01:00
|
|
|
"data-transfer-service-upload",
|
2019-11-15 15:59:46 +01:00
|
|
|
"FullTextIndexNode-delete",
|
|
|
|
"FullTextIndexNode-dropCollection",
|
|
|
|
"FullTextIndexNode-insert",
|
|
|
|
"FullTextIndexNode-listCollections",
|
|
|
|
"FullTextIndexNode-search",
|
2019-11-21 18:23:41 +01:00
|
|
|
"geoanalytics-main-service-UNKNOWN",
|
2019-11-15 15:59:46 +01:00
|
|
|
"GeoNetwork-login",
|
2019-11-25 11:04:53 +01:00
|
|
|
"GRSFPublisher-create",
|
|
|
|
"GRSFPublisher-delete",
|
|
|
|
"GRSFPublisher-getURLandIdFromName",
|
|
|
|
"GRSFPublisher-UNKNOWN",
|
|
|
|
"GRSFPublisher-update",
|
2019-11-15 17:56:03 +01:00
|
|
|
"RConnector-connect",
|
|
|
|
"RConnector-UNKNOWN",
|
2019-11-21 17:49:58 +01:00
|
|
|
"ShareLatex-connect",
|
|
|
|
"ShareLatex-disconnect",
|
2019-11-22 16:20:53 +01:00
|
|
|
"SimulFishGrowthData-BroodstockQuality",
|
|
|
|
"SimulFishGrowthData-CurrentRating",
|
|
|
|
"SimulFishGrowthData-FeedQuality",
|
|
|
|
"SimulFishGrowthData-Modeler",
|
|
|
|
"SimulFishGrowthData-OxygenRating",
|
|
|
|
"SimulFishGrowthData-Region",
|
|
|
|
"SimulFishGrowthData-Scenario",
|
|
|
|
"SimulFishGrowthData-Site",
|
|
|
|
"SimulFishGrowthData-Species",
|
|
|
|
"SimulFishGrowthData-UNKNOWN",
|
2019-11-22 17:39:04 +01:00
|
|
|
"storage-UNKNOWN",
|
2019-11-15 15:59:46 +01:00
|
|
|
"TagMe-tag"
|
2019-11-15 14:40:11 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
for(String aggregationTest : aggregationTests) {
|
|
|
|
testRule(aggregationTest);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2019-11-15 17:00:14 +01:00
|
|
|
public File getRulesDirectory() throws Exception {
|
|
|
|
URL logbackFileURL = TestRules.class.getClassLoader().getResource("logback-test.xml");
|
|
|
|
File logbackFile = new File(logbackFileURL.toURI());
|
|
|
|
File resourcesDirectory = logbackFile.getParentFile();
|
|
|
|
return new File(resourcesDirectory, "rules");
|
|
|
|
}
|
|
|
|
|
2019-11-15 14:40:11 +01:00
|
|
|
public void testRule(String rulePrefix) throws Exception {
|
2019-11-15 17:00:14 +01:00
|
|
|
File rulesDirectory = getRulesDirectory();
|
|
|
|
|
2019-11-25 10:54:01 +01:00
|
|
|
File rulesFile = new File(rulesDirectory, rulePrefix + ".json");
|
2019-11-15 14:40:11 +01:00
|
|
|
ObjectMapper mapper = DSMapper.getObjectMapper();
|
2019-11-15 17:00:14 +01:00
|
|
|
MatcherReplace matcherReplace = mapper.readValue(rulesFile, MatcherReplace.class);
|
2019-11-15 14:40:11 +01:00
|
|
|
Replacer replacer = matcherReplace.getReplacer();
|
|
|
|
|
2019-11-25 10:54:01 +01:00
|
|
|
File elaborationFile = new File(rulesDirectory,rulePrefix + ".csv");
|
2019-11-15 14:40:11 +01:00
|
|
|
try(BufferedReader br = new BufferedReader(new FileReader(elaborationFile))) {
|
|
|
|
for(String line; (line = br.readLine()) != null;) {
|
|
|
|
String[] splittedLine = line.split(",");
|
|
|
|
boolean matched = matcherReplace.check(splittedLine[0],splittedLine[1],splittedLine[2]);
|
|
|
|
if(matched) {
|
2019-11-15 16:42:11 +01:00
|
|
|
logger.info("{} --> {},{},{}", line, replacer.getServiceClass(), replacer.getServiceName(), replacer.getCalledMethod());
|
2019-11-15 14:40:11 +01:00
|
|
|
} else {
|
|
|
|
logger.error("{} does not match {}. This MUST not occur.", line, matcherReplace.getMultiMatcher().toString());
|
2019-11-15 16:42:11 +01:00
|
|
|
throw new Exception();
|
2019-11-15 14:40:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
} catch(Exception e) {
|
|
|
|
throw e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testSingleRule() throws Exception {
|
2019-11-25 11:04:53 +01:00
|
|
|
testRule("GRSFPublisher-update");
|
2019-11-15 14:40:11 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|