refs #200: Create accouting-lib library

https://support.d4science.org/issues/200
Adding tests and fixing found bugs

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@115768 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2015-07-02 09:00:10 +00:00
parent 08d1b0bdd8
commit 70e2291a4e
4 changed files with 118 additions and 9 deletions

View File

@ -130,18 +130,19 @@ public abstract class BasicUsageRecord implements UsageRecord, Serializable {
protected Set<String> aggregatedFields;
protected static Set<Field> getAllFields(Class<?> type) {
Set<Field> fields = new HashSet<Field>();
for (Class<?> c = type; c != null; c = c.getSuperclass())
fields.addAll(Arrays.asList(c.getDeclaredFields()));
return fields;
}
protected void initializeValidation() {
logger.debug("Initializing Field Validators");
Set<Field> fields = new HashSet<Field>();
Class<? extends Object> clz = this.getClass();
while(!clz.equals(Object.class)){
fields.addAll(Arrays.asList(clz.getFields()));
fields.addAll(Arrays.asList(clz.getDeclaredFields()));
clz = clz.getSuperclass();
}
Set<Field> fields = getAllFields(this.getClass());
for(Field field : fields){
field.setAccessible(true);
String keyString;
try {
keyString = (String) field.get(null);
@ -172,8 +173,9 @@ public abstract class BasicUsageRecord implements UsageRecord, Serializable {
}
}
}
logger.trace("Required Fields {}", requiredFields);
logger.trace("Aggregated Fields {}", aggregatedFields);
logger.trace("Computed Fields {}", computedFields);
}
/**

View File

@ -0,0 +1,44 @@
/**
*
*/
package org.gcube.accounting.aggregation;
import java.util.Set;
import org.gcube.accounting.exception.InvalidValueException;
import org.gcube.accounting.testutility.TestUsageRecord;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
public class ServiceUsageRecordTest {
private static Logger logger = LoggerFactory.getLogger(ServiceUsageRecordTest.class);
@Test
public void testRequiredFields() throws InvalidValueException {
org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
ServiceUsageRecord aggregatedServiceUsageRecord = new ServiceUsageRecord(serviceUsageRecord);
Set<String> expectedRequiredFields = org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecordTest.getExpectedRequiredFields();
expectedRequiredFields.add(ServiceUsageRecord.DURATION);
expectedRequiredFields.add(ServiceUsageRecord.MAX_INVOCATION_TIME);
expectedRequiredFields.add(ServiceUsageRecord.MIN_INVOCATION_TIME);
logger.debug("Expected Required Fields : {}", expectedRequiredFields);
Set<String> gotRequiredFields = aggregatedServiceUsageRecord.getRequiredFields();
logger.debug("Got Required Fields : {}", gotRequiredFields);
Assert.assertTrue(expectedRequiredFields.containsAll(gotRequiredFields));
Assert.assertTrue(gotRequiredFields.containsAll(expectedRequiredFields));
}
}

View File

@ -0,0 +1,15 @@
/**
*
*/
package org.gcube.accounting.datamodel;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
public class BasicUsageRecordUtility {
public static final String ID = BasicUsageRecord.ID;
public static final String USAGE_RECORD_TYPE = BasicUsageRecord.USAGE_RECORD_TYPE;
}

View File

@ -0,0 +1,48 @@
/**
*
*/
package org.gcube.accounting.datamodel.usagerecords;
import java.util.HashSet;
import java.util.Set;
import org.gcube.accounting.datamodel.BasicUsageRecord;
import org.gcube.accounting.datamodel.BasicUsageRecordUtility;
import org.gcube.accounting.testutility.TestUsageRecord;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
*
*/
public class ServiceUsageRecordTest {
public static Set<String> getExpectedRequiredFields(){
Set<String> expectedRequiredFields = new HashSet<String>();
expectedRequiredFields.add(BasicUsageRecordUtility.ID);
expectedRequiredFields.add(BasicUsageRecord.CONSUMER_ID);
expectedRequiredFields.add(BasicUsageRecord.CREATION_TIME);
expectedRequiredFields.add(BasicUsageRecordUtility.USAGE_RECORD_TYPE);
expectedRequiredFields.add(BasicUsageRecord.SCOPE);
expectedRequiredFields.add(BasicUsageRecord.OPERATION_RESULT);
expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.ServiceUsageRecord.CALLER_HOST);
expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.ServiceUsageRecord.HOST);
expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.ServiceUsageRecord.SERVICE_CLASS);
expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.ServiceUsageRecord.SERVICE_NAME);
expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.ServiceUsageRecord.DURATION);
return expectedRequiredFields;
}
@Test
public void testRequiredFields(){
ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
Set<String> expectedRequiredFields = getExpectedRequiredFields();
Set<String> gotRequiredFields = serviceUsageRecord.getRequiredFields();
Assert.assertTrue(expectedRequiredFields.containsAll(gotRequiredFields));
Assert.assertTrue(gotRequiredFields.containsAll(expectedRequiredFields));
}
}