From 8e592a4f0fe8b5be762f46bcba8dba63b7cc658b Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 6 Sep 2017 09:47:13 +0000 Subject: [PATCH] Revisited models. Refined jackson support refs #9617 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@152713 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 4 + pom.xml | 3 +- .../datamodel/BasicUsageRecord.java | 61 +++++------- .../aggregation/AggregatedJobUsageRecord.java | 33 ++++--- .../AggregatedServiceUsageRecord.java | 8 ++ .../AggregatedStorageUsageRecord.java | 2 +- .../AggregatedTaskUsageRecord.java | 13 +-- .../MoveToRecordType.java | 16 --- .../MoveToRecordTypeAction.java | 22 ----- .../basetypes/AbstractJobUsageRecord.java | 17 ++-- .../basetypes/AbstractPortletUsageRecord.java | 12 +-- .../basetypes/AbstractServiceUsageRecord.java | 29 ++---- .../AbstractStorageStatusRecord.java | 5 +- .../basetypes/AbstractStorageUsageRecord.java | 5 +- .../basetypes/AbstractTaskUsageRecord.java | 16 +-- .../CalculateJobWallDurationAction.java | 2 +- .../usagerecords/JobUsageRecord.java | 2 +- .../usagerecords/PortletUsageRecord.java | 2 +- .../usagerecords/ServiceUsageRecord.java | 2 +- .../usagerecords/StorageStatusRecord.java | 2 +- .../usagerecords/StorageUsageRecord.java | 2 +- .../usagerecords/TaskUsageRecord.java | 2 +- .../persistence/AccountingPersistence.java | 25 +++-- .../AccountingPersistenceConfiguration.java | 2 +- .../AccountingPersistenceFactory.java | 33 +++++-- .../accounting/datamodel/UsageRecordTest.java | 4 +- .../AggregatedJobUsageRecordTest.java | 65 ++++++------- .../AggregatedServiceUsageRecordTest.java | 10 ++ .../AggregatedStorageStatusRecordTest.java | 10 ++ .../AggregatedStorageUsageRecordTest.java | 10 ++ .../usagerecords/JobUsageRecordTest.java | 7 +- .../usagerecords/ServiceUsageRecordTest.java | 47 ++++++++- .../usagerecords/StorageStatusRecordTest.java | 7 +- .../usagerecords/StorageUsageRecordTest.java | 7 +- .../usagerecords/TaskUsageRecordTest.java | 9 +- .../{MyTest.java => FalbackTest.java} | 19 +--- .../java/org/gcube/testutility/MyTest.java | 97 ------------------- .../org/gcube/testutility/ScopedTest.java | 3 - .../gcube/testutility/TestUsageRecord.java | 2 +- src/test/resources/test.log | 1 + src/test/resources/token.properties | 4 - 41 files changed, 280 insertions(+), 342 deletions(-) delete mode 100644 src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordType.java delete mode 100644 src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordTypeAction.java rename src/test/java/org/gcube/documentstore/persistence/{MyTest.java => FalbackTest.java} (61%) delete mode 100644 src/test/java/org/gcube/testutility/MyTest.java create mode 100644 src/test/resources/test.log delete mode 100644 src/test/resources/token.properties diff --git a/distro/changelog.xml b/distro/changelog.xml index 4656665..31e65d5 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -2,6 +2,10 @@ + Refined Jackson support #9617 + Revisited models + + Added Jackson support on Usage Record model to allow to use it for marshalling and unmarshalling diff --git a/pom.xml b/pom.xml index 1f08509..cc156ba 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.gcube.accounting accounting-lib - 3.0.0-SNAPSHOT + 3.1.0-SNAPSHOT Accounting Library Accounting Library jar @@ -56,7 +56,6 @@ org.gcube.data.publishing document-store-lib - [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) org.gcube.resources.discovery diff --git a/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java index 42ac38c..1c3a47c 100644 --- a/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java @@ -7,7 +7,6 @@ import java.io.Serializable; import java.util.Map; import java.util.SortedSet; -import org.gcube.accounting.datamodel.backwardcompatibility.MoveToRecordType; import org.gcube.accounting.datamodel.validations.annotations.ValidOperationResult; import org.gcube.accounting.datamodel.validations.validators.ValidOperationResultValidator; import org.gcube.common.authorization.client.Constants; @@ -15,7 +14,6 @@ import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; -import org.gcube.documentstore.records.Record; import org.gcube.documentstore.records.implementation.AbstractRecord; import org.gcube.documentstore.records.implementation.RequiredField; import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty; @@ -23,15 +21,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonTypeName; - /** * @author Luca Frosini (ISTI - CNR) - * */ -@JsonTypeName(value="UsageRecord") -public class BasicUsageRecord extends AbstractRecord implements UsageRecord { +public abstract class BasicUsageRecord extends AbstractRecord implements UsageRecord { /** * Generated Serial Version UID @@ -40,26 +34,22 @@ public class BasicUsageRecord extends AbstractRecord implements UsageRecord { private static Logger logger = LoggerFactory.getLogger(BasicUsageRecord.class); - /** - * Moved to {@link Record#RECORD_TYPE}. This filed should not be set - * explicitly because it is automatically calculated - */ - @Deprecated @MoveToRecordType - public static final String USAGE_RECORD_TYPE = "usageRecordType"; - - @RequiredField @NotEmpty + @RequiredField + @NotEmpty public static final String CONSUMER_ID = UsageRecord.CONSUMER_ID; - @RequiredField @NotEmpty + @RequiredField + @NotEmpty public static final String SCOPE = UsageRecord.SCOPE; - @RequiredField @ValidOperationResult + @RequiredField + @ValidOperationResult public static final String OPERATION_RESULT = UsageRecord.OPERATION_RESULT; - public static String getScopeFromToken(){ - - String scope =ScopeProvider.instance.get(); - if (scope==null){ + public static String getContextFromToken() { + + String scope = ScopeProvider.instance.get(); + if (scope == null) { String token = SecurityTokenProvider.instance.get(); AuthorizationEntry authorizationEntry; @@ -80,23 +70,23 @@ public class BasicUsageRecord extends AbstractRecord implements UsageRecord { super.init(); // Backward compatibility try { - this.setScope(getScopeFromToken()); - } catch(Exception e) { - logger.warn("Unable to automaticcally set the scope using scope provider. The record will not be valid if the scope will not be explicitly set."); + this.setScope(getContextFromToken()); + } catch (Exception e) { + logger.warn( + "Unable to automaticcally set the scope using scope provider. The record will not be valid if the scope will not be explicitly set."); } } - public BasicUsageRecord(){ + public BasicUsageRecord() { super(); } public BasicUsageRecord(Map properties) throws InvalidValueException { super(properties); } - + @Override - public SortedSet getQuerableKeys() - throws Exception { + public SortedSet getQuerableKeys() throws Exception { SortedSet properties = super.getQuerableKeys(); properties.remove(UsageRecord.SCOPE); @@ -122,15 +112,11 @@ public class BasicUsageRecord extends AbstractRecord implements UsageRecord { setResourceProperty(CONSUMER_ID, consumerId); } - - @Override @JsonIgnore - protected String giveMeRecordType() { + public String getRecordType() { return BasicUsageRecord.class.getSimpleName(); } - - /** * {@inheritDoc} @@ -155,10 +141,10 @@ public class BasicUsageRecord extends AbstractRecord implements UsageRecord { */ @JsonIgnore @Override - public OperationResult getOperationResult(){ + public OperationResult getOperationResult() { try { - return (OperationResult) new ValidOperationResultValidator(). - validate(OPERATION_RESULT, this.resourceProperties.get(OPERATION_RESULT), null); + return (OperationResult) new ValidOperationResultValidator().validate(OPERATION_RESULT, + this.resourceProperties.get(OPERATION_RESULT), null); } catch (Exception e) { return null; } @@ -166,7 +152,8 @@ public class BasicUsageRecord extends AbstractRecord implements UsageRecord { /** * {@inheritDoc} - * @throws InvalidValueException + * + * @throws InvalidValueException */ @JsonIgnore @Override diff --git a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecord.java index b4bc914..e0dccdd 100644 --- a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecord.java @@ -13,9 +13,6 @@ import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.gcube.documentstore.records.aggregation.AggregationUtility; -import org.gcube.documentstore.records.implementation.AggregatedField; -import org.gcube.documentstore.records.implementation.RequiredField; -import org.gcube.documentstore.records.implementation.validations.annotations.ValidLong; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -27,18 +24,24 @@ import com.fasterxml.jackson.annotation.JsonTypeName; @JsonTypeName(value="JobUsageRecord") public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements AggregatedUsageRecord { - - /** * Generated Serial Version UID */ private static final long serialVersionUID = -3376423316219914682L; - /*add a field max e min invocation*/ + + /* + / *add a field max e min invocation* / @RequiredField @ValidLong @AggregatedField public static final String MAX_INVOCATION_TIME = "maxInvocationTime"; @RequiredField @ValidLong @AggregatedField public static final String MIN_INVOCATION_TIME = "minInvocationTime"; - + + @RequiredField @ValidLong @AggregatedField + public static final String JOB_START_TIME = "jobStartTime"; + @RequiredField @ValidLong @AggregatedField + public static final String JOB_END_TIME = "jobEndTime"; + */ + public AggregatedJobUsageRecord(){ super(); } @@ -52,9 +55,11 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements //throw new UnsupportedOperationException(); super(record.getResourceProperties()); this.setOperationCount(1); + /* long duration = record.getDuration(); this.setMinInvocationTime(duration); this.setMaxInvocationTime(duration); + */ Calendar creationTime = record.getCreationTime(); this.setCreationTime(Calendar.getInstance()); this.setStartTime(creationTime); @@ -73,6 +78,7 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements super.setOperationCount(operationCount); } + /* @JsonIgnore public long getMaxInvocationTime() { return (Long) this.resourceProperties.get(MAX_INVOCATION_TIME); @@ -92,7 +98,8 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements public void setMinInvocationTime(long minInvocationTime) throws InvalidValueException { setResourceProperty(MIN_INVOCATION_TIME, minInvocationTime); } - + */ + /** * {@inheritDoc} */ @@ -130,7 +137,7 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements } - //Introduce for to serialize Java Object + //Introduced to serialize Java Object @JsonIgnore @Override public void setAggregate(Boolean aggregate) throws InvalidValueException { @@ -144,14 +151,16 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements public Boolean getAggregate() { return super.getAggregate(); } - //End Introduce for to serialize Java Object + //End Introduced to serialize Java Object + /* protected long durationWeightedAverage(AggregatedJobUsageRecord record) throws InvalidValueException{ long thisDuration = this.getDuration() * this.getOperationCount(); long recordDuration = record.getDuration() * record.getOperationCount(); long totalOperationCount = this.getOperationCount() + record.getOperationCount(); return (thisDuration + recordDuration) / totalOperationCount; } + */ /** * {@inheritDoc} @@ -160,6 +169,8 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements @JsonIgnore public AggregatedJobUsageRecord aggregate(AggregatedJobUsageRecord record) throws NotAggregatableRecordsExceptions { + throw new NotAggregatableRecordsExceptions(); + /* try { AggregationUtility aggregationUtility = new AggregationUtility(this); @@ -180,7 +191,7 @@ public class AggregatedJobUsageRecord extends AbstractJobUsageRecord implements throw new NotAggregatableRecordsExceptions(ex); } return this; - //throw new UnsupportedOperationException(); + */ } /** diff --git a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecord.java index 3fd69ad..41b5ce3 100644 --- a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecord.java @@ -163,6 +163,14 @@ public class AggregatedServiceUsageRecord extends AbstractServiceUsageRecord imp public AggregatedServiceUsageRecord aggregate(AggregatedServiceUsageRecord record) throws NotAggregatableRecordsExceptions { try { + /* + * It is also checked in aggregationUtility.aggregate(record) + * but has to be also checked before modifying values + */ + if(!isAggregable(record)){ + throw new NotAggregatableRecordsExceptions("The Record provided as argument has different values for field wich must be common to be aggregatable"); + } + AggregationUtility aggregationUtility = new AggregationUtility(this); setDuration(durationWeightedAverage(record)); diff --git a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecord.java index a9993d0..a6fee25 100644 --- a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecord.java @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * This Class is for library internal use only * @author Luca Frosini (ISTI - CNR) */ -@JsonTypeName(value="StorageUsageRecord") +@JsonTypeName(value="AggregatedStorageUsageRecord") public class AggregatedStorageUsageRecord extends AbstractStorageUsageRecord implements AggregatedUsageRecord { /** diff --git a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedTaskUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedTaskUsageRecord.java index cf9f90c..d2af276 100644 --- a/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedTaskUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/aggregation/AggregatedTaskUsageRecord.java @@ -96,18 +96,7 @@ public class AggregatedTaskUsageRecord extends AbstractTaskUsageRecord implement @Override public AggregatedTaskUsageRecord aggregate(AggregatedTaskUsageRecord record) throws NotAggregatableRecordsExceptions { - try { - /* TODO - AggregationUtility aggregationUtility = new AggregationUtility(this); - aggregationUtility.aggregate(record); - } catch(NotAggregatableRecordsExceptions e){ - throw e; */ - } catch(Exception ex){ - throw new NotAggregatableRecordsExceptions(ex); - } - //return this; - - throw new UnsupportedOperationException(); + throw new NotAggregatableRecordsExceptions(); } /** diff --git a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordType.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordType.java deleted file mode 100644 index 47ab8c2..0000000 --- a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordType.java +++ /dev/null @@ -1,16 +0,0 @@ -/** - * - */ -package org.gcube.accounting.datamodel.backwardcompatibility; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.gcube.documentstore.records.implementation.FieldDecorator; - -@Target(ElementType.FIELD) -@Retention(RetentionPolicy.RUNTIME) -@FieldDecorator(action=MoveToRecordTypeAction.class) -public @interface MoveToRecordType { } \ No newline at end of file diff --git a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordTypeAction.java b/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordTypeAction.java deleted file mode 100644 index 9657a9c..0000000 --- a/src/main/java/org/gcube/accounting/datamodel/backwardcompatibility/MoveToRecordTypeAction.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * - */ -package org.gcube.accounting.datamodel.backwardcompatibility; - -import java.io.Serializable; - -import org.gcube.documentstore.exception.InvalidValueException; -import org.gcube.documentstore.records.Record; -import org.gcube.documentstore.records.implementation.FieldAction; - -public class MoveToRecordTypeAction implements FieldAction { - - @Override - public Serializable validate(String key, Serializable value, Record record) throws InvalidValueException { - if(value instanceof String && value!= null && !((String) value).isEmpty()){ - record.setResourceProperty(Record.RECORD_TYPE, value); - } - return null; //Returning null the initial key is removed from Record - } - -} \ No newline at end of file diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java index 21434a9..f2f74dd 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractJobUsageRecord.java @@ -55,11 +55,8 @@ public abstract class AbstractJobUsageRecord extends BasicUsageRecord { private static final String ABSTRACT_TO_REPLACE = "Abstract"; - /** - * {@inheritDoc} - */ @Override - protected String giveMeRecordType() { + public String getRecordType() { return AbstractJobUsageRecord.class.getSimpleName().replace(ABSTRACT_TO_REPLACE, ""); } @@ -67,10 +64,8 @@ public abstract class AbstractJobUsageRecord extends BasicUsageRecord { public SortedSet getQuerableKeys() throws Exception { SortedSet properties = super.getQuerableKeys(); - properties.remove(JOB_START_TIME); properties.remove(JOB_END_TIME); - return properties; } @@ -132,7 +127,7 @@ public abstract class AbstractJobUsageRecord extends BasicUsageRecord { setResourceProperty(JOB_END_TIME, jobEndTime.getTimeInMillis()); } - protected long calculateWallDuration() throws InvalidValueException { + protected long calculateDuration() throws InvalidValueException { try { long endTime = (Long) this.resourceProperties.get(JOB_END_TIME); long startTime = (Long) this.resourceProperties.get(JOB_START_TIME); @@ -147,15 +142,15 @@ public abstract class AbstractJobUsageRecord extends BasicUsageRecord { @JsonIgnore public long getDuration() throws InvalidValueException { - Long wallDuration = (Long) this.resourceProperties.get(DURATION); - if(wallDuration == null){ + Long duration = (Long) this.resourceProperties.get(DURATION); + if(duration == null){ try { - wallDuration = calculateWallDuration(); + duration = calculateDuration(); } catch(InvalidValueException e){ throw e; } } - return wallDuration; + return duration; } @JsonIgnore public void setDuration(Long duration) throws InvalidValueException { diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java index 5e25b5e..51bbd2d 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractPortletUsageRecord.java @@ -7,8 +7,6 @@ import java.io.Serializable; import java.util.Map; import org.gcube.accounting.datamodel.BasicUsageRecord; -import org.gcube.accounting.datamodel.backwardcompatibility.MoveToConsumerId; -import org.gcube.accounting.datamodel.deprecationmanagement.DeprecatedWarning; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.implementation.RequiredField; import org.gcube.documentstore.records.implementation.validations.annotations.NotEmpty; @@ -27,8 +25,9 @@ public abstract class AbstractPortletUsageRecord extends BasicUsageRecord { */ private static final long serialVersionUID = 8339324883678974869L; - @DeprecatedWarning @MoveToConsumerId - protected static final String USER_ID = "userId"; + //@DeprecatedWarning @MoveToConsumerId + //protected static final String USER_ID = "userId"; + @RequiredField @NotEmpty public static final String PORTLET_ID = "portletId"; @RequiredField @NotEmpty @@ -46,11 +45,8 @@ public abstract class AbstractPortletUsageRecord extends BasicUsageRecord { private static final String ABSTRACT_TO_REPLACE = "Abstract"; - /** - * {@inheritDoc} - */ @Override - protected String giveMeRecordType() { + public String getRecordType() { return AbstractPortletUsageRecord.class.getSimpleName().replace(ABSTRACT_TO_REPLACE, ""); } diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractServiceUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractServiceUsageRecord.java index 3ba1f4b..484c9e5 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractServiceUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractServiceUsageRecord.java @@ -18,7 +18,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; * @author Luca Frosini (ISTI - CNR) */ -public class AbstractServiceUsageRecord extends BasicUsageRecord { +public abstract class AbstractServiceUsageRecord extends BasicUsageRecord { /** * Generated Serial Version UID @@ -67,19 +67,8 @@ public class AbstractServiceUsageRecord extends BasicUsageRecord { * */ @RequiredField @NotEmpty - public static final String CALLERQUALIFIER = "callerQualifier"; - /*for remove querable key - @Override - public SortedSet getQuerableKeys() - throws Exception { - SortedSet properties = super.getQuerableKeys(); + public static final String CALLER_QUALIFIER = "callerQualifier"; - //properties.remove(CALLERQUALIFIER); - - - return properties; - } - ***/ public AbstractServiceUsageRecord(){ super(); @@ -91,12 +80,8 @@ public class AbstractServiceUsageRecord extends BasicUsageRecord { private static final String ABSTRACT_TO_REPLACE = "Abstract"; - /** - * {@inheritDoc} - */ - @JsonIgnore @Override - protected String giveMeRecordType() { + public String getRecordType() { return AbstractServiceUsageRecord.class.getSimpleName().replace(ABSTRACT_TO_REPLACE, ""); } @@ -140,7 +125,6 @@ public class AbstractServiceUsageRecord extends BasicUsageRecord { setResourceProperty(SERVICE_NAME, serviceName); } - @JsonIgnore public String getCalledMethod() { return (String) this.resourceProperties.get(CALLED_METHOD); @@ -161,11 +145,12 @@ public class AbstractServiceUsageRecord extends BasicUsageRecord { @JsonIgnore public String getCallerQualifier() { - return (String) this.resourceProperties.get(CALLERQUALIFIER); - } + return (String) this.resourceProperties.get(CALLER_QUALIFIER); + } + @JsonIgnore public void setCallerQualifier(String callerQualifier) throws InvalidValueException { - setResourceProperty(CALLERQUALIFIER, callerQualifier); + setResourceProperty(CALLER_QUALIFIER, callerQualifier); } diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageStatusRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageStatusRecord.java index 3a23088..566ed79 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageStatusRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageStatusRecord.java @@ -88,11 +88,8 @@ public abstract class AbstractStorageStatusRecord extends BasicUsageRecord { private static final String ABSTRACT_TO_REPLACE = "Abstract"; - /** - * {@inheritDoc} - */ @Override - protected String giveMeRecordType() { + public String getRecordType() { return AbstractStorageStatusRecord.class.getSimpleName().replace(ABSTRACT_TO_REPLACE, ""); } diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java index 56a39f7..5dd66ed 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractStorageUsageRecord.java @@ -106,11 +106,8 @@ public abstract class AbstractStorageUsageRecord extends BasicUsageRecord { private static final String ABSTRACT_TO_REPLACE = "Abstract"; - /** - * {@inheritDoc} - */ @Override - protected String giveMeRecordType() { + public String getRecordType() { return AbstractStorageUsageRecord.class.getSimpleName().replace(ABSTRACT_TO_REPLACE, ""); } diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java index 9b72dc9..066fb7f 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/AbstractTaskUsageRecord.java @@ -5,7 +5,6 @@ package org.gcube.accounting.datamodel.basetypes; import java.io.Serializable; import java.util.Calendar; -import java.util.HashMap; import java.util.Map; import org.gcube.accounting.datamodel.BasicUsageRecord; @@ -49,8 +48,10 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { @RequiredField @ComputedField(action=CalculateTaskWallDurationAction.class) @ValidLong public static final String WALL_DURATION = "wallDuration"; + /* @NotEmptyIfNotNull public static final String INPUT_PARAMETERS = "inputParameters"; + */ public AbstractTaskUsageRecord(){ super(); @@ -62,11 +63,8 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { private static final String ABSTRACT_TO_REPLACE = "Abstract"; - /** - * {@inheritDoc} - */ @Override - protected String giveMeRecordType() { + public String getRecordType() { return AbstractTaskUsageRecord.class.getSimpleName().replace(ABSTRACT_TO_REPLACE, ""); } @@ -176,16 +174,18 @@ public abstract class AbstractTaskUsageRecord extends BasicUsageRecord { setResourceProperty(WALL_DURATION, duration); } + /* @SuppressWarnings("unchecked") - @JsonIgnore + //@JsonIgnore public Map getInputParameters(){ return (HashMap) getResourceProperty(INPUT_PARAMETERS); } - @JsonIgnore + //@JsonIgnore + @JsonProperty(value=INPUT_PARAMETERS) public void setInputParameters(HashMap inputParameters) throws InvalidValueException{ setResourceProperty(INPUT_PARAMETERS, inputParameters); } - + */ } diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/CalculateJobWallDurationAction.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/CalculateJobWallDurationAction.java index 6a7c9be..81d4d5f 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/CalculateJobWallDurationAction.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/CalculateJobWallDurationAction.java @@ -21,7 +21,7 @@ public class CalculateJobWallDurationAction implements FieldAction { @Override public Serializable validate(String key, Serializable value, Record record) throws InvalidValueException { try { - long wallDuration = ((AbstractJobUsageRecord) record).calculateWallDuration(); + long wallDuration = ((AbstractJobUsageRecord) record).calculateDuration(); if(key.compareTo(AbstractJobUsageRecord.DURATION)==0){ logger.warn("{} is automatically computed using {} and {}. This invocation has the only effect of recalculating the value. Any provided value is ignored.", AbstractJobUsageRecord.DURATION, AbstractJobUsageRecord.JOB_START_TIME, AbstractJobUsageRecord.JOB_END_TIME); diff --git a/src/main/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecord.java index a947c90..08b7452 100644 --- a/src/main/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecord.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; /** * @author Luca Frosini (ISTI - CNR) */ -@JsonTypeName(value="NotAggregateJobUsageRecord") +@JsonTypeName(value="SingleJobUsageRecord") public class JobUsageRecord extends AbstractJobUsageRecord { /** diff --git a/src/main/java/org/gcube/accounting/datamodel/usagerecords/PortletUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/usagerecords/PortletUsageRecord.java index c7b1be8..b2e2339 100644 --- a/src/main/java/org/gcube/accounting/datamodel/usagerecords/PortletUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/usagerecords/PortletUsageRecord.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; /** * @author Luca Frosini (ISTI - CNR) */ -@JsonTypeName(value="NotAggregatePortletUsageRecord") +@JsonTypeName(value="SinglePortletUsageRecord") public class PortletUsageRecord extends AbstractPortletUsageRecord { /** diff --git a/src/main/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecord.java index 4ff1be6..de563c2 100644 --- a/src/main/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecord.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; /** * @author Luca Frosini (ISTI - CNR) */ -@JsonTypeName(value="NotAggregateServiceUsageRecord") +@JsonTypeName(value="SingleServiceUsageRecord") public class ServiceUsageRecord extends AbstractServiceUsageRecord { /** diff --git a/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecord.java b/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecord.java index 5f3a033..88fdf3a 100644 --- a/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecord.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; * @author Alessandro Pieve (ISTI - CNR) alessandro.pieve@isti.cnr.it * */ -@JsonTypeName(value="NotAggregateStorageStatusRecord") +@JsonTypeName(value="SingleStorageStatusRecord") public class StorageStatusRecord extends AbstractStorageStatusRecord { /** diff --git a/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecord.java index 9fc0c23..3763280 100644 --- a/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecord.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; /** * @author Luca Frosini (ISTI - CNR) */ -@JsonTypeName(value="NotAggregateStorageUsageRecord") +@JsonTypeName(value="SingleStorageUsageRecord") public class StorageUsageRecord extends AbstractStorageUsageRecord { /** diff --git a/src/main/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecord.java index 8b79ec6..362fb13 100644 --- a/src/main/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecord.java @@ -11,7 +11,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; /** * @author Luca Frosini (ISTI - CNR) */ -@JsonTypeName(value="TaskUsageRecord") +@JsonTypeName(value="SingleTaskUsageRecord") public class TaskUsageRecord extends AbstractTaskUsageRecord { /** diff --git a/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java b/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java index f47cc9c..11c5c19 100644 --- a/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java +++ b/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java @@ -15,14 +15,14 @@ import org.gcube.documentstore.records.Record; */ public class AccountingPersistence { - protected String scope; + protected String context; - protected AccountingPersistence(String scope){ - this.scope = scope; + protected AccountingPersistence(String context){ + this.context = context; } private PersistenceBackend getAccountingPersistence(){ - return PersistenceBackendFactory.getPersistenceBackend(this.scope); + return PersistenceBackendFactory.getPersistenceBackend(this.context); } /** @@ -42,14 +42,27 @@ public class AccountingPersistence { } } + public void flush() throws Exception { + getAccountingPersistence().flush(); + } + + /** + * Used {@link AccountingPersistence#flush() instead} + * @param timeout + * @param timeUnit + * @throws Exception + */ + @Deprecated public void flush(long timeout, TimeUnit timeUnit) throws Exception { - getAccountingPersistence().flush(timeout, timeUnit); + this.flush(); } public void close() throws Exception{ getAccountingPersistence().close(); } - + public boolean isConnectionActive() throws Exception { + return getAccountingPersistence().isConnectionActive(); + } } diff --git a/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java b/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java index 913c292..9b95dd4 100644 --- a/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java +++ b/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java @@ -58,7 +58,7 @@ public class AccountingPersistenceConfiguration extends PersistenceBackendConfig DiscoveryClient client = ICFactory.clientFor(ServiceEndpoint.class); List serviceEndpoints = client.submit(query); if(serviceEndpoints.size()>1){ - String scope = BasicUsageRecord.getScopeFromToken(); + String scope = BasicUsageRecord.getContextFromToken(); query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Name/text() eq '%s'", TARGET_SCOPE)); query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Value/text() eq '%s'", scope)); serviceEndpoints = client.submit(query); diff --git a/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceFactory.java b/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceFactory.java index 4eea85a..e1ad6eb 100644 --- a/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceFactory.java +++ b/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceFactory.java @@ -37,22 +37,41 @@ public class AccountingPersistenceFactory { } public synchronized static AccountingPersistence getPersistence() { - String scope = BasicUsageRecord.getScopeFromToken(); - AccountingPersistence accountingPersistence = persistences.get(scope); + String context = BasicUsageRecord.getContextFromToken(); + AccountingPersistence accountingPersistence = persistences.get(context); if(accountingPersistence==null){ - accountingPersistence = new AccountingPersistence(scope); + accountingPersistence = new AccountingPersistence(context); } return accountingPersistence; } - public static void flushAll(long timeout, TimeUnit timeUnit){ - PersistenceBackendFactory.flushAll(timeout, timeUnit); + public static void flushAll(){ + PersistenceBackendFactory.flushAll(); } + /** + * Use {@link AccountingPersistenceFactory#flushAll() instead} + * @param timeout + * @param timeUnit + */ + @Deprecated + public static void flushAll(long timeout, TimeUnit timeUnit){ + AccountingPersistenceFactory.flushAll(); + } - public static void shutDown(long timeout, TimeUnit timeUnit){ + public static void shutDown(){ //flush all and shutdown connection and thread - PersistenceBackendFactory.flushAll(timeout, timeUnit); + PersistenceBackendFactory.flushAll(); PersistenceBackendFactory.shutdown(); } + + /** + * Use {@link AccountingPersistenceFactory#shutDown() instead} + * @param timeout + * @param timeUnit + */ + @Deprecated + public static void shutDown(long timeout, TimeUnit timeUnit){ + AccountingPersistenceFactory.shutDown(); + } } diff --git a/src/test/java/org/gcube/accounting/datamodel/UsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/UsageRecordTest.java index 7e8381f..c02425a 100644 --- a/src/test/java/org/gcube/accounting/datamodel/UsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/UsageRecordTest.java @@ -4,7 +4,6 @@ package org.gcube.accounting.datamodel; import org.gcube.documentstore.exception.InvalidValueException; -import org.gcube.documentstore.records.RecordUtility; import org.gcube.testutility.TestUsageRecord; import org.junit.Assert; import org.junit.Test; @@ -21,7 +20,7 @@ public class UsageRecordTest { Assert.assertEquals(0, usageRecord.compareTo(ur)); Assert.assertEquals(0, ur.compareTo(usageRecord)); } - + /* @Test public void testCompareToEqualsObject() throws Exception { UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); @@ -50,6 +49,7 @@ public class UsageRecordTest { Assert.assertEquals(1, usageRecord.compareTo(ur)); Assert.assertEquals(1, ur.compareTo(usageRecord)); } + */ @Test public void testCompareToDifferentFromCreation() throws Exception { diff --git a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecordTest.java index 7675fc2..7c0cf62 100644 --- a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedJobUsageRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.aggregation.AggregatedJobUsageRecord; import org.gcube.accounting.datamodel.usagerecords.JobUsageRecord; import org.gcube.accounting.datamodel.usagerecords.JobUsageRecordTest; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.gcube.testutility.ScopedTest; @@ -26,6 +28,9 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); + JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord(); Assert.assertTrue(jobUsageRecord.getScope()==null); jobUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -33,8 +38,10 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { AggregatedJobUsageRecord aggregatedJobUsageRecord = new AggregatedJobUsageRecord(jobUsageRecord); Set expectedRequiredFields = JobUsageRecordTest.getExpectedRequiredFields(); + /* expectedRequiredFields.add(AggregatedJobUsageRecord.MAX_INVOCATION_TIME); expectedRequiredFields.add(AggregatedJobUsageRecord.MIN_INVOCATION_TIME); + */ expectedRequiredFields.addAll(AggregatedUsageRecordTest.getExpectedRequiredFields()); @@ -50,8 +57,11 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { } - @Test + @Test(expected=NotAggregatableRecordsExceptions.class) public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); + JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord(); Assert.assertTrue(jobUsageRecord.getScope()==null); jobUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -62,47 +72,27 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { aggregated.validate(); logger.debug("jobUsageRecord Converted to Aggregated post validate: {}", aggregated); + JobUsageRecord jobUsageRecord2 = TestUsageRecord.createTestJobUsageRecord(); Assert.assertTrue(jobUsageRecord2.getScope()==null); jobUsageRecord2.setScope(TestUsageRecord.TEST_SCOPE); - jobUsageRecord2.validate(); logger.debug("JobUsageRecord 2 : {}", jobUsageRecord2); - - /* - long firstDuration = jobUsageRecord.getDuration(); - long secondDuration = jobUsageRecord2.getDuration(); - */ - aggregated.aggregate(jobUsageRecord2); + /* logger.debug("jobUsageRecord2 Converted to Aggregated: {}", aggregated); aggregated.validate(); logger.debug("jobUsageRecord2 Converted to Aggregated post validate: {}", aggregated); - - - /* - Assert.assertTrue(aggregated.getDuration() == ((firstDuration + secondDuration)/2)); - Assert.assertTrue(aggregated.getOperationCount() == 2); - - if(firstDuration >= secondDuration){ - Assert.assertTrue(aggregated.getMaxInvocationTime() == firstDuration); - Assert.assertTrue(aggregated.getMinInvocationTime() == secondDuration); - }else{ - Assert.assertTrue(aggregated.getMaxInvocationTime() == secondDuration); - Assert.assertTrue(aggregated.getMinInvocationTime() == firstDuration); - } - - Assert.assertFalse(aggregated.getResourceProperties().containsKey(TestUsageRecord.TEST_PROPERTY_NAME)); - - Assert.assertTrue(aggregated.getRecordType().compareTo(JobUsageRecord.class.getSimpleName())==0); - */ - } + /* @Test public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); + JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord(); Assert.assertTrue(jobUsageRecord.getScope()==null); jobUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -130,9 +120,11 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { logger.debug("Resulting Aggregated JobUsageRecord: {}", aggregated); aggregated.validate(); + Assert.assertTrue(aggregated.getDuration() == ((firstduration + secondDuration)/2)); Assert.assertTrue(aggregated.getOperationCount() == 2); + if(firstduration >= secondDuration){ Assert.assertTrue(aggregated.getMaxInvocationTime() == firstduration); Assert.assertTrue(aggregated.getMinInvocationTime() == secondDuration); @@ -151,6 +143,9 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { @Test public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); + JobUsageRecord jobUsageRecord = TestUsageRecord.createTestJobUsageRecord(); Assert.assertTrue(jobUsageRecord.getScope()==null); jobUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -164,18 +159,18 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { for(int i=2; i<1002; i++){ - JobUsageRecord sur = TestUsageRecord.createTestJobUsageRecord(); - sur.setScope(TestUsageRecord.TEST_SCOPE); - sur.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE); - sur.validate(); - logger.debug("Cycle JobUsageRecord {}: {}", i, sur); + JobUsageRecord jur = TestUsageRecord.createTestJobUsageRecord(); + jur.setScope(TestUsageRecord.TEST_SCOPE); + jur.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE); + jur.validate(); + logger.debug("Cycle JobUsageRecord {}: {}", i, jur); long minInvocationTime = aggregated.getMinInvocationTime(); long maxInvocationTime = aggregated.getMaxInvocationTime(); long oldDuration = aggregated.getDuration(); - long surDuration = sur.getDuration(); + long surDuration = jur.getDuration(); - aggregated.aggregate(sur); + aggregated.aggregate(jur); logger.debug("Resulting Aggregated JobUsageRecord: {}", aggregated); aggregated.validate(); @@ -202,5 +197,5 @@ public class AggregatedJobUsageRecordTest extends ScopedTest { logger.debug("Resulting Aggregated JobUsageRecord: {}", aggregated); } - + */ } diff --git a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java index 5d309e5..277c4d0 100644 --- a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecordTest; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.gcube.testutility.ScopedTest; @@ -27,6 +29,8 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord(); Assert.assertTrue(serviceUsageRecord.getScope()==null); serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -53,6 +57,8 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest { @Test public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord(); Assert.assertTrue(serviceUsageRecord.getScope()==null); serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -98,6 +104,8 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest { @Test public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord(); Assert.assertTrue(serviceUsageRecord.getScope()==null); serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -146,6 +154,8 @@ public class AggregatedServiceUsageRecordTest extends ScopedTest { @Test public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord(); Assert.assertTrue(serviceUsageRecord.getScope()==null); serviceUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageStatusRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageStatusRecordTest.java index c90bc65..ab49377 100644 --- a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageStatusRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageStatusRecordTest.java @@ -7,6 +7,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.usagerecords.StorageStatusRecord; import org.gcube.accounting.datamodel.usagerecords.StorageStatusRecordTest; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.gcube.testutility.ScopedTest; @@ -26,6 +28,8 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageStatusRecord storageVolumeUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord(); Assert.assertTrue(storageVolumeUsageRecord.getScope()==null); storageVolumeUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -48,6 +52,8 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest { @Test public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageStatusRecord storageVolumeUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord(); Assert.assertTrue(storageVolumeUsageRecord.getScope()==null); storageVolumeUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -83,6 +89,8 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest { @Test public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageStatusRecord storageStatusUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord(); Assert.assertTrue(storageStatusUsageRecord.getScope()==null); storageStatusUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -121,6 +129,8 @@ public class AggregatedStorageStatusRecordTest extends ScopedTest { @Test public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageStatusRecord storageVolumeUsageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord(); Assert.assertTrue(storageVolumeUsageRecord.getScope()==null); storageVolumeUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java index 700b218..63f060e 100644 --- a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord; import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord; import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecordTest; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.gcube.testutility.ScopedTest; @@ -27,6 +29,8 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord(); Assert.assertTrue(storageUsageRecord.getScope()==null); storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -49,6 +53,8 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest { @Test public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord(); Assert.assertTrue(storageUsageRecord.getScope()==null); storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -81,6 +87,8 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest { @Test public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord(); Assert.assertTrue(storageUsageRecord.getScope()==null); storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -115,6 +123,8 @@ public class AggregatedStorageUsageRecordTest extends ScopedTest { @Test public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord(); Assert.assertTrue(storageUsageRecord.getScope()==null); storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java index db28f34..c3c8216 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractJobUsageRecord; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.gcube.testutility.ScopedTest; @@ -30,7 +32,6 @@ public class JobUsageRecordTest extends ScopedTest { expectedRequiredFields.add(Record.ID); expectedRequiredFields.add(UsageRecord.CONSUMER_ID); expectedRequiredFields.add(UsageRecord.CREATION_TIME); - expectedRequiredFields.add(UsageRecord.RECORD_TYPE); expectedRequiredFields.add(UsageRecord.SCOPE); expectedRequiredFields.add(UsageRecord.OPERATION_RESULT); expectedRequiredFields.add(AbstractJobUsageRecord.JOB_ID); @@ -42,6 +43,8 @@ public class JobUsageRecordTest extends ScopedTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); JobUsageRecord usageRecord = TestUsageRecord.createTestJobUsageRecord(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -49,6 +52,8 @@ public class JobUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException{ + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); JobUsageRecord usageRecord = TestUsageRecord.createTestJobUsageRecord(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); 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 49d8c58..40b7f8e 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java @@ -7,9 +7,15 @@ import java.util.HashSet; import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; +import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; +import org.gcube.documentstore.records.DSMapper; import org.gcube.documentstore.records.Record; +import org.gcube.documentstore.records.RecordUtility; +import org.gcube.documentstore.records.aggregation.AggregationScheduler; import org.gcube.testutility.ScopedTest; import org.gcube.testutility.TestUsageRecord; import org.junit.Assert; @@ -19,7 +25,6 @@ import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) - * */ public class ServiceUsageRecordTest extends ScopedTest { @@ -30,7 +35,6 @@ public class ServiceUsageRecordTest extends ScopedTest { expectedRequiredFields.add(Record.ID); expectedRequiredFields.add(UsageRecord.CONSUMER_ID); expectedRequiredFields.add(UsageRecord.CREATION_TIME); - expectedRequiredFields.add(UsageRecord.RECORD_TYPE); expectedRequiredFields.add(UsageRecord.SCOPE); expectedRequiredFields.add(UsageRecord.OPERATION_RESULT); expectedRequiredFields.add(AbstractServiceUsageRecord.CALLER_HOST); @@ -39,11 +43,14 @@ public class ServiceUsageRecordTest extends ScopedTest { expectedRequiredFields.add(AbstractServiceUsageRecord.SERVICE_NAME); expectedRequiredFields.add(AbstractServiceUsageRecord.CALLED_METHOD); expectedRequiredFields.add(AbstractServiceUsageRecord.DURATION); + expectedRequiredFields.add(AbstractServiceUsageRecord.CALLER_QUALIFIER); return expectedRequiredFields; } @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -51,6 +58,8 @@ public class ServiceUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException{ + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); @@ -68,4 +77,38 @@ public class ServiceUsageRecordTest extends ScopedTest { logger.debug("{}", usageRecord); } + @Test + public void testMarshalling() throws Exception { + ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); + AggregatedServiceUsageRecord aggregatedUsageRecord = (AggregatedServiceUsageRecord) AggregationScheduler.getAggregatedRecord(usageRecord); + logger.debug(DSMapper.marshal(aggregatedUsageRecord)); + } + + @Test + public void testDeserialization() throws Exception{ + RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage()); + RecordUtility.addRecordPackage(AggregatedServiceUsageRecord.class.getPackage()); + + String singleUsageRecordString = "{" + + "\"creationTime\":1498081970156," + + "\"serviceClass\":\"InformationSystem\"," + + "\"callerHost\":\"146.48.123.84\"," + + "\"callerQualifier\":\"TOKEN\"," + + "\"recordType\":\"ServiceUsageRecord\"," + + "\"consumerId\":\"luca.frosini\"," + + "\"aggregated\":true," + + "\"serviceName\":\"resource-registry\"," + + "\"duration\":692," + + "\"scope\":\"/gcube/devNext/NextNext\"," + + "\"host\":\"resourceregistry1-d-d4s.d4science.org:80\"," + + "\"id\":\"1ca35f57-75b7-48f4-84b1-ac3dae2f58ab\"," + + "\"calledMethod\":\"/er/resource/957d40f4-44b5-4e7e-be7d-76bba44e751f\"," + + "\"operationResult\":\"SUCCESS\"" + + "}"; + UsageRecord usageRecord = DSMapper.unmarshal(UsageRecord.class, singleUsageRecordString); + AggregatedServiceUsageRecord aggregatedServiceUsageRecord = new AggregatedServiceUsageRecord(usageRecord.getResourceProperties()); + logger.debug("{}", usageRecord); + logger.debug("{}", aggregatedServiceUsageRecord); + + } } diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecordTest.java index 1277eae..638501a 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageStatusRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractStorageStatusRecord; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.gcube.testutility.ScopedTest; @@ -30,7 +32,6 @@ public class StorageStatusRecordTest extends ScopedTest { expectedRequiredFields.add(Record.ID); expectedRequiredFields.add(UsageRecord.CONSUMER_ID); expectedRequiredFields.add(UsageRecord.CREATION_TIME); - expectedRequiredFields.add(UsageRecord.RECORD_TYPE); expectedRequiredFields.add(UsageRecord.SCOPE); expectedRequiredFields.add(UsageRecord.OPERATION_RESULT); expectedRequiredFields.add(AbstractStorageStatusRecord.DATA_VOLUME); @@ -46,6 +47,8 @@ public class StorageStatusRecordTest extends ScopedTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageStatusRecord usageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -53,6 +56,8 @@ public class StorageStatusRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException{ + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageStatusRecord usageRecord = TestUsageRecord.createTestStorageVolumeUsageRecord(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java index 44781c4..ba2f7a4 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.gcube.testutility.ScopedTest; @@ -30,7 +32,6 @@ public class StorageUsageRecordTest extends ScopedTest { expectedRequiredFields.add(Record.ID); expectedRequiredFields.add(UsageRecord.CONSUMER_ID); expectedRequiredFields.add(UsageRecord.CREATION_TIME); - expectedRequiredFields.add(UsageRecord.RECORD_TYPE); expectedRequiredFields.add(UsageRecord.SCOPE); expectedRequiredFields.add(UsageRecord.OPERATION_RESULT); expectedRequiredFields.add(AbstractStorageUsageRecord.RESOURCE_OWNER); @@ -46,6 +47,8 @@ public class StorageUsageRecordTest extends ScopedTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageUsageRecord usageRecord = TestUsageRecord.createTestStorageUsageRecord(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -53,6 +56,8 @@ public class StorageUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException{ + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); StorageUsageRecord usageRecord = TestUsageRecord.createTestStorageUsageRecord(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java index 9b90b3f..f37dabd 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java @@ -8,6 +8,8 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractTaskUsageRecord; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.gcube.testutility.ScopedTest; @@ -30,16 +32,19 @@ public class TaskUsageRecordTest extends ScopedTest { expectedRequiredFields.add(Record.ID); expectedRequiredFields.add(UsageRecord.CONSUMER_ID); expectedRequiredFields.add(UsageRecord.CREATION_TIME); - expectedRequiredFields.add(UsageRecord.RECORD_TYPE); expectedRequiredFields.add(UsageRecord.SCOPE); expectedRequiredFields.add(UsageRecord.OPERATION_RESULT); expectedRequiredFields.add(AbstractTaskUsageRecord.TASK_ID); expectedRequiredFields.add(AbstractTaskUsageRecord.WALL_DURATION); + expectedRequiredFields.add(AbstractTaskUsageRecord.TASK_START_TIME); + expectedRequiredFields.add(AbstractTaskUsageRecord.TASK_END_TIME); return expectedRequiredFields; } @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); TaskUsageRecord usageRecord = TestUsageRecord.createTestTaskUsageRecord(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -47,6 +52,8 @@ public class TaskUsageRecordTest extends ScopedTest { @Test public void testRequiredFields() throws InvalidValueException{ + SecurityTokenProvider.instance.reset(); + ScopeProvider.instance.reset(); TaskUsageRecord usageRecord = TestUsageRecord.createTestTaskUsageRecord(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/documentstore/persistence/MyTest.java b/src/test/java/org/gcube/documentstore/persistence/FalbackTest.java similarity index 61% rename from src/test/java/org/gcube/documentstore/persistence/MyTest.java rename to src/test/java/org/gcube/documentstore/persistence/FalbackTest.java index 022fd73..ff463d0 100644 --- a/src/test/java/org/gcube/documentstore/persistence/MyTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/FalbackTest.java @@ -7,35 +7,24 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; -import org.gcube.accounting.datamodel.BasicUsageRecord; -import org.gcube.accounting.datamodel.UsageRecord; -import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord; -import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; -import org.gcube.documentstore.records.DSMapper; +import org.gcube.accounting.persistence.AccountingPersistenceFactory; import org.gcube.documentstore.records.Record; import org.gcube.documentstore.records.RecordUtility; -import org.gcube.documentstore.records.implementation.AbstractRecord; import org.gcube.testutility.ScopedTest; import org.gcube.testutility.TestUsageRecord; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class MyTest extends ScopedTest { +public class FalbackTest extends ScopedTest { - private static Logger logger = LoggerFactory.getLogger(MyTest.class); + private static Logger logger = LoggerFactory.getLogger(FalbackTest.class); - @SuppressWarnings("unchecked") @Test public void test() throws Exception{ File f = new File("test.log"); - DSMapper.registerSubtypes(Record.class); - DSMapper.registerSubtypes(AbstractRecord.class); - DSMapper.registerSubtypes(UsageRecord.class); - DSMapper.registerSubtypes(BasicUsageRecord.class); - DSMapper.registerSubtypes(AbstractServiceUsageRecord.class); - DSMapper.registerSubtypes(ServiceUsageRecord.class); + AccountingPersistenceFactory.getPersistence(); Record record = TestUsageRecord.createTestServiceUsageRecord(); FallbackPersistenceBackend fallbackPersistenceBackend = new FallbackPersistenceBackend(f); diff --git a/src/test/java/org/gcube/testutility/MyTest.java b/src/test/java/org/gcube/testutility/MyTest.java deleted file mode 100644 index 32af344..0000000 --- a/src/test/java/org/gcube/testutility/MyTest.java +++ /dev/null @@ -1,97 +0,0 @@ -package org.gcube.testutility; - - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.concurrent.TimeUnit; - -import org.gcube.accounting.persistence.AccountingPersistence; -import org.gcube.accounting.persistence.AccountingPersistenceFactory; -import org.gcube.common.authorization.library.provider.SecurityTokenProvider; -import org.gcube.common.scope.api.ScopeProvider; -import org.gcube.documentstore.records.DSMapper; -import org.gcube.documentstore.records.Record; -import org.gcube.documentstore.records.RecordUtility; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - - -public class MyTest { - - private static final Logger logger = LoggerFactory.getLogger(MyTest.class); - - @Before - public void beforeClass() throws Exception{ - SecurityTokenProvider.instance.set("36501a0d-a205-4bf1-87ad-4c7185faa0d6-98187548"); - ScopeProvider.instance.set("/gcube/devNext"); - - } - - @Test - public void testFull() throws Exception{ - - - AccountingPersistence apq= AccountingPersistenceFactory.getPersistence(); - - //Record record=TestUsageRecord.createTestServiceUsageRecord();//ok verificato - //Record record=TestUsageRecord.createTestStorageUsageRecord();//ok verificato - //Record record=TestUsageRecord.createTestStorageVolumeUsageRecord();//ok verificato - //Record record=TestUsageRecord.createTestPortletUsageRecord();//ok verificato - Record record=TestUsageRecord.createTestTaskUsageRecord();//ok verificato - //Record record=TestUsageRecord.createTestJobUsageRecord();//ok - logger.debug("----record:{}",record); - apq.account(record); - Thread.sleep(1500); - apq.flush(1500, TimeUnit.MILLISECONDS); - logger.debug("end flush"); - File elaborationFile = new File("/home/pieve/_gcube_devNext.fallback.log"); - - try(BufferedReader br = new BufferedReader(new FileReader(elaborationFile))) { - for(String line; (line = br.readLine()) != null; ) { - try { - //Record r =DSMapper.unmarshal(Record.class, line); - - Record r = RecordUtility.getRecord( line); - logger.debug("--record:{}", r); - - } catch(Exception e){ - logger.error("Was not possible parse line {} to obtain a valid Record. Going to writing back this line as string fallback file.", line, e); - - } - } - } catch (FileNotFoundException e) { - logger.error("File non trovato", e); - } catch (IOException ei) { - logger.error("IOException", ei); - } - - - } - - - - @Test - public void testSingle() throws Exception{ - - Record record=TestUsageRecord.createTestServiceUsageRecord(); - logger.debug("----init record:{}",record.toString()); - String test=DSMapper.marshal(record); - logger.debug("----marshal single record:{}",test); - - Record r =DSMapper.unmarshal(Record.class, test); - logger.debug("----unmarshal single record:{}",r.toString()); - - - - } - - - - -} diff --git a/src/test/java/org/gcube/testutility/ScopedTest.java b/src/test/java/org/gcube/testutility/ScopedTest.java index 662a840..7a07e83 100644 --- a/src/test/java/org/gcube/testutility/ScopedTest.java +++ b/src/test/java/org/gcube/testutility/ScopedTest.java @@ -23,9 +23,6 @@ import org.slf4j.LoggerFactory; */ public class ScopedTest { - - - private static final Logger logger = LoggerFactory.getLogger(ScopedTest.class); protected static final String PROPERTIES_FILENAME = "token.properties"; diff --git a/src/test/java/org/gcube/testutility/TestUsageRecord.java b/src/test/java/org/gcube/testutility/TestUsageRecord.java index 3717071..8fa8834 100644 --- a/src/test/java/org/gcube/testutility/TestUsageRecord.java +++ b/src/test/java/org/gcube/testutility/TestUsageRecord.java @@ -236,7 +236,7 @@ public class TestUsageRecord { inputParameters.put(TEST_NESTED_MAP, parameter); - usageRecord.setInputParameters(inputParameters); + //usageRecord.setInputParameters(inputParameters); } catch (InvalidValueException e) { diff --git a/src/test/resources/test.log b/src/test/resources/test.log new file mode 100644 index 0000000..c37877e --- /dev/null +++ b/src/test/resources/test.log @@ -0,0 +1 @@ +{"recordType":"SingleTaskUsageRecord","ESEMpio":"PLUTO","creationTime":1503928807106,"refHostingNodeId":"4f96f787-44b4-46f7-9d85-359e57313840","consumerId":"name.surname","wallDuration":1200000,"taskStartTime":1503928207106,"scope":"/gcube/devNext","host":"localhost","id":"ab97bb13-ca9a-4b01-bd4c-564da3f27759","taskId":"6776f112-4f62-4d13-ad33-d0cab5a98c76","finalState":"DONE","operationResult":"SUCCESS","taskEndTime":1503929407106} diff --git a/src/test/resources/token.properties b/src/test/resources/token.properties deleted file mode 100644 index 418380c..0000000 --- a/src/test/resources/token.properties +++ /dev/null @@ -1,4 +0,0 @@ -GCUBE_DEVNEXT= -GCUBE_DEVNEXT_NEXTNEXT= -GCUBE_DEVSEC= -GCUBE_DEVSEC_DEVVRE=