diff --git a/distro/changelog.xml b/distro/changelog.xml index acbf09d..cfdc9e7 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,7 +1,10 @@ - + + + + Changed pom.xml to use new make-servicearchive directive #10142 Added the possibility to rewrite the calledMethod which match a regular expression #10646 diff --git a/pom.xml b/pom.xml index d77a13c..9902cf3 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ org.gcube.accounting accounting-lib - 3.2.0-SNAPSHOT + 3.3.0-SNAPSHOT Accounting Library Accounting Library jar diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java index 1961496..bd832d6 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java @@ -126,6 +126,56 @@ public class ServiceUsageRecordTest extends ScopedTest { } + @Test + public void aRegexReplaceTest() throws Exception{ + RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage()); + RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage()); + + String usageRecordString = "{" + + "\"operationCount\":1," + + "\"creationTime\":1507312376364," + + "\"serviceClass\":\"Index\"," + + "\"callerHost\":\"88.197.53.47\"," + + "\"callerQualifier\":\"UNKNOWN\"," + + "\"recordType\":\"ServiceUsageRecord\"," + + "\"consumerId\":\"UNKNOWN\"," + + "\"aggregated\":true," + + "\"serviceName\":\"FullTextIndexNode\"," + + "\"duration\":2," + + "\"maxInvocationTime\":10," + + "\"scope\":\"/d4science.research-infrastructures.eu/gCubeApps/iSearch\"," + + "\"host\":\"dl046.madgik.di.uoa.gr:8080\"," + + "\"startTime\":1507312375624,\"id\":\"64c5d799-4cf7-40ee-885b-338634dcaecb\"," + + "\"calledMethod\":\"/delete/3121eccdcbf9c6e982dcc5a2164b8b4029f51d8b1c448ddaf46316178d755c6f/oai:oai.datacite.org:263334\"," + + "\"endTime\":1507312375624," + + "\"minInvocationTime\":2," + + "\"operationResult\":\"SUCCESS\"" + +"}"; + + + String goodReplace = "/delete/{collection-id}/{item-id}"; + RegexReplace regexReplace = new RegexReplace("Index", "FullTextIndexNode", + "/delete/[^\\t\\n\\r\\f\\v]+/[^\\t\\n\\r\\f\\v]+", goodReplace); + CalledMethodRegexReplaceValidator.addRegexReplace(regexReplace); + + String replace = "GET /access/instance/Configuration/{id}"; + regexReplace = new RegexReplace("InformationSystem", "resource-registry", + "/access/instance/Configuration/[^\\t\\n\\r\\f\\v]+", replace); + CalledMethodRegexReplaceValidator.addRegexReplace(regexReplace); + + replace = "GET /access/instance/EService/{id}"; + regexReplace = new RegexReplace("InformationSystem", "resource-registry", + "/access/instance/EService/[^\\t\\n\\r\\f\\v]+", replace); + CalledMethodRegexReplaceValidator.addRegexReplace(regexReplace); + + UsageRecord usageRecord = DSMapper.unmarshal(AggregatedServiceUsageRecord.class, usageRecordString); + logger.debug("{}", usageRecord); + AggregatedServiceUsageRecord aggregatedServiceUsageRecord = new AggregatedServiceUsageRecord(usageRecord.getResourceProperties()); + logger.debug("{}", aggregatedServiceUsageRecord); + + Assert.assertTrue(aggregatedServiceUsageRecord.getCalledMethod().compareTo(goodReplace)==0); + } + @Test public void testRegexReplace() throws Exception{ RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage()); @@ -153,7 +203,7 @@ public class ServiceUsageRecordTest extends ScopedTest { + "}"; - String replace = "/delete/COLLECTION_ID/ITEM_ID"; + String replace = "/delete/{collection-id}/{item-id}"; RegexReplace regexReplace = new RegexReplace("Index", "FullTextIndexNode", "/delete/[^\\t\\n\\r\\f\\v]+/[^\\t\\n\\r\\f\\v]+", replace); CalledMethodRegexReplaceValidator.addRegexReplace(regexReplace); @@ -168,4 +218,86 @@ public class ServiceUsageRecordTest extends ScopedTest { } + @Test + public void testAnotherRegexReplace() throws Exception{ + RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage()); + RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage()); + + String usageRecordString = "{" + + "\"startTime\": 1507334430481," + + "\"endTime\": 1507334430481," + + "\"creationTime\":1507334430724," + + "\"serviceClass\":\"InformationSystem\"," + + "\"callerHost\":\"88.197.53.47\"," + + "\"callerQualifier\":\"UNKNOWN\"," + + "\"recordType\":\"ServiceUsageRecord\"," + + "\"consumerId\":\"UNKNOWN\"," + + "\"aggregated\":true," + + "\"serviceName\":\"resource-registry\"," + + "\"duration\":3," + + "\"maxInvocationTime\": 58," + + "\"minInvocationTime\": 1," + + "\"scope\":\"/d4science.research-infrastructures.eu\"," + + "\"host\":\"dewn10.madgik.di.uoa.gr:8080\"," + + "\"id\":\"12a631da-1541-4771-8961-8d7e4a694bc0\"," + + "\"calledMethod\":\"/access/instance/Configuration/12a631da-1541-4771-8961-8d7e4a694bc0\"," + + "\"operationResult\":\"SUCCESS\"" + + "}"; + + String replace = "GET /access/instance/Configuration/{id}"; + RegexReplace regexReplace = new RegexReplace("InformationSystem", "resource-registry", + "/access/instance/Configuration/[^\\t\\n\\r\\f\\v]+", replace); + CalledMethodRegexReplaceValidator.addRegexReplace(regexReplace); + + + UsageRecord usageRecord = DSMapper.unmarshal(AggregatedServiceUsageRecord.class, usageRecordString); + logger.debug("{}", usageRecord); + AggregatedServiceUsageRecord aggregatedServiceUsageRecord = new AggregatedServiceUsageRecord(usageRecord.getResourceProperties()); + logger.debug("{}", aggregatedServiceUsageRecord); + + Assert.assertTrue(aggregatedServiceUsageRecord.getCalledMethod().compareTo(replace)==0); + + } + + + @Test + public void testAnotherOneRegexReplace() throws Exception{ + RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage()); + RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage()); + + String usageRecordString = "{" + + "\"startTime\": 1507334430481," + + "\"endTime\": 1507334430481," + + "\"creationTime\":1507334430724," + + "\"serviceClass\":\"InformationSystem\"," + + "\"callerHost\":\"88.197.53.47\"," + + "\"callerQualifier\":\"UNKNOWN\"," + + "\"recordType\":\"ServiceUsageRecord\"," + + "\"consumerId\":\"UNKNOWN\"," + + "\"aggregated\":true," + + "\"serviceName\":\"resource-registry\"," + + "\"duration\":3," + + "\"maxInvocationTime\": 58," + + "\"minInvocationTime\": 1," + + "\"scope\":\"/d4science.research-infrastructures.eu\"," + + "\"host\":\"dewn10.madgik.di.uoa.gr:8080\"," + + "\"id\":\"12a631da-1541-4771-8961-8d7e4a694bc0\"," + + "\"calledMethod\":\"/access/instance/EService/12a631da-1541-4771-8961-8d7e4a694bc0\"," + + "\"operationResult\":\"SUCCESS\"" + + "}"; + + String replace = "GET /access/instance/EService/{id}"; + RegexReplace regexReplace = new RegexReplace("InformationSystem", "resource-registry", + "/access/instance/EService/[^\\t\\n\\r\\f\\v]+", replace); + CalledMethodRegexReplaceValidator.addRegexReplace(regexReplace); + + + UsageRecord usageRecord = DSMapper.unmarshal(AggregatedServiceUsageRecord.class, usageRecordString); + logger.debug("{}", usageRecord); + AggregatedServiceUsageRecord aggregatedServiceUsageRecord = new AggregatedServiceUsageRecord(usageRecord.getResourceProperties()); + logger.debug("{}", aggregatedServiceUsageRecord); + + Assert.assertTrue(aggregatedServiceUsageRecord.getCalledMethod().compareTo(replace)==0); + + } }