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:
parent
08d1b0bdd8
commit
70e2291a4e
|
@ -130,18 +130,19 @@ public abstract class BasicUsageRecord implements UsageRecord, Serializable {
|
||||||
|
|
||||||
protected Set<String> aggregatedFields;
|
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() {
|
protected void initializeValidation() {
|
||||||
logger.debug("Initializing Field Validators");
|
logger.debug("Initializing Field Validators");
|
||||||
Set<Field> fields = new HashSet<Field>();
|
Set<Field> fields = getAllFields(this.getClass());
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Field field : fields){
|
for(Field field : fields){
|
||||||
|
field.setAccessible(true);
|
||||||
String keyString;
|
String keyString;
|
||||||
try {
|
try {
|
||||||
keyString = (String) field.get(null);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -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));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue