Implementing One Test Usage Record for each Type

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@115557 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2015-06-25 15:41:56 +00:00
parent 5afd95bfa3
commit 99f823c9bb
7 changed files with 99 additions and 34 deletions

View File

@ -3,8 +3,13 @@
*/ */
package org.gcube.accounting.datamodel; package org.gcube.accounting.datamodel;
import java.net.URI;
import java.net.URISyntaxException;
import org.gcube.accounting.datamodel.UsageRecord.OperationResult; import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
import org.gcube.accounting.datamodel.implementations.ServiceUsageRecord; import org.gcube.accounting.datamodel.implementations.ServiceUsageRecord;
import org.gcube.accounting.datamodel.implementations.StorageUsageRecord;
import org.gcube.accounting.datamodel.implementations.StorageUsageRecord.OperationType;
import org.gcube.accounting.exception.InvalidValueException; import org.gcube.accounting.exception.InvalidValueException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -29,8 +34,8 @@ public class TestUsageRecord {
public final static String TEST_PROPERTY_NAME = "TestPropertyName"; public final static String TEST_PROPERTY_NAME = "TestPropertyName";
public final static String TEST_PROPERTY_VALUE = "TestPropertyValue"; public final static String TEST_PROPERTY_VALUE = "TestPropertyValue";
private final static long MIN = 60; private final static long MIN_DURATION = 60; // millisec
private final static long MAX = 1000; private final static long MAX_DURATION = 1000; // millisec
/** /**
* Generate A Random long in a range between min and max. * Generate A Random long in a range between min and max.
@ -42,31 +47,67 @@ public class TestUsageRecord {
} }
/** /**
* Create a valid SingleUsageRecord * Create a valid #ServiceUsageRecord
* @return the created UsageRecord * @return the created #ServiceUsageRecord
*/ */
public static SingleUsageRecord createTestUsageRecord() { public static ServiceUsageRecord createTestServiceUsageRecord() {
ServiceUsageRecord serviceUsageRecord = new ServiceUsageRecord(); ServiceUsageRecord usageRecord = new ServiceUsageRecord();
try { try {
serviceUsageRecord.setConsumerId(TEST_CONSUMER_ID); usageRecord.setConsumerId(TEST_CONSUMER_ID);
serviceUsageRecord.setScope(TEST_SCOPE); usageRecord.setScope(TEST_SCOPE);
serviceUsageRecord.setOperationResult(OperationResult.SUCCESS); usageRecord.setOperationResult(OperationResult.SUCCESS);
serviceUsageRecord.setServiceClass(TEST_SERVICE_CLASS); usageRecord.setServiceClass(TEST_SERVICE_CLASS);
serviceUsageRecord.setServiceName(TEST_SERVICE_NAME); usageRecord.setServiceName(TEST_SERVICE_NAME);
serviceUsageRecord.setRefHost(TEST_REF_HOST); usageRecord.setRefHost(TEST_REF_HOST);
serviceUsageRecord.setRefVM(TEST_REF_VM); usageRecord.setRefVM(TEST_REF_VM);
serviceUsageRecord.setDuration(generateRandomLong(MIN, MAX)); usageRecord.setDuration(generateRandomLong(MIN_DURATION, MAX_DURATION));
serviceUsageRecord.setResourceProperty(TEST_PROPERTY_NAME, TEST_PROPERTY_VALUE); usageRecord.setResourceProperty(TEST_PROPERTY_NAME, TEST_PROPERTY_VALUE);
} catch (InvalidValueException e) { } catch (InvalidValueException e) {
logger.error(" ------ You SHOULD NOT SEE THIS MESSAGE. Error Creating a test Usage Record", e.getCause()); logger.error(" ------ You SHOULD NOT SEE THIS MESSAGE. Error Creating a test Usage Record", e.getCause());
} }
return serviceUsageRecord; return usageRecord;
} }
public final static String TEST_RESOUCE_OWNER = "resource.owner";
public final static String TEST_RESOUCE_SCOPE = TEST_SCOPE;
public final static String TEST_OBJECT_URI = "testprotocol://objectURI";
private final static long MIN_DATA_VOLUME = 1024;
private final static long MAX_DATA_VOLUME = 10240;
/**
* Create a valid #StorageUsageRecord
* @return the created #StorageUsageRecord
*/
public static StorageUsageRecord createTestStorageUsageRecord() {
StorageUsageRecord usageRecord = new StorageUsageRecord();
try {
usageRecord.setConsumerId(TEST_CONSUMER_ID);
usageRecord.setScope(TEST_SCOPE);
usageRecord.setOperationResult(OperationResult.SUCCESS);
usageRecord.setResourceOwner(TEST_RESOUCE_OWNER);
usageRecord.setResourceScope(TEST_RESOUCE_SCOPE);
usageRecord.setObjectURI(new URI(TEST_OBJECT_URI));
usageRecord.setOperationType(OperationType.READ);
//usageRecord.setDataType();
usageRecord.setDataVolume(generateRandomLong(MIN_DATA_VOLUME, MAX_DATA_VOLUME));
usageRecord.setResourceProperty(TEST_PROPERTY_NAME, TEST_PROPERTY_VALUE);
} catch (InvalidValueException | URISyntaxException e) {
logger.error(" ------ You SHOULD NOT SEE THIS MESSAGE. Error Creating a test Usage Record", e.getCause());
}
return usageRecord;
}
} }

View File

@ -25,17 +25,34 @@ public class ServiceUsageRecord extends BasicUsageRecord implements SingleUsageR
*/ */
private static final long serialVersionUID = -4214891294699473587L; private static final long serialVersionUID = -4214891294699473587L;
/**
*
*/
@ValidIP @ValidIP
public static final String CALLER_IP = "callerIP"; public static final String CALLER_IP = "callerIP";
/**
*
*/
@RequiredField @NotEmpty @RequiredField @NotEmpty
public static final String REF_HOST = "refHost"; public static final String REF_HOST = "refHost";
/**
*
*/
@RequiredField @NotEmpty @RequiredField @NotEmpty
public static final String REF_VM = "refVM"; public static final String REF_VM = "refVM";
/**
*
*/
@RequiredField @NotEmpty @RequiredField @NotEmpty
public static final String SERVICE_CLASS = "serviceClass"; public static final String SERVICE_CLASS = "serviceClass";
/**
*
*/
@RequiredField @NotEmpty @RequiredField @NotEmpty
public static final String SERVICE_NAME = "serviceName"; public static final String SERVICE_NAME = "serviceName";
/**
*
*/
@RequiredField @ValidLong @RequiredField @ValidLong
public static final String DURATION = "duration"; public static final String DURATION = "duration";

View File

@ -33,6 +33,9 @@ public class StorageUsageRecord extends BasicUsageRecord implements SingleUsageR
CREATE, READ, UPDATE, DELETE, COPY, MOVE CREATE, READ, UPDATE, DELETE, COPY, MOVE
} }
/**
*
*/
@RequiredField @NotEmpty @RequiredField @NotEmpty
public static final String RESOURCE_OWNER = "resourceOwner"; public static final String RESOURCE_OWNER = "resourceOwner";
@RequiredField @NotEmpty @RequiredField @NotEmpty
@ -48,6 +51,10 @@ public class StorageUsageRecord extends BasicUsageRecord implements SingleUsageR
public static final String OPERATION_TYPE = "operationType"; public static final String OPERATION_TYPE = "operationType";
@RequiredField @NotEmpty @RequiredField @NotEmpty
public static final String DATA_TYPE = "dataType"; public static final String DATA_TYPE = "dataType";
/**
* Quantity of data in terms of KB
*/
@RequiredField @ValidLong @RequiredField @ValidLong
public static final String DATA_VOLUME = "dataVolume"; public static final String DATA_VOLUME = "dataVolume";
@ -115,11 +122,11 @@ public class StorageUsageRecord extends BasicUsageRecord implements SingleUsageR
setResourceProperty(OBJECT_URI, objectURI); setResourceProperty(OBJECT_URI, objectURI);
} }
public String getOperationType() { public OperationType getOperationType() {
return (String) this.resourceProperties.get(OPERATION_TYPE); return (OperationType) this.resourceProperties.get(OPERATION_TYPE);
} }
public void setOperationType(String operationType) throws InvalidValueException { public void setOperationType(OperationType operationType) throws InvalidValueException {
setResourceProperty(OPERATION_TYPE, operationType); setResourceProperty(OPERATION_TYPE, operationType);
} }

View File

@ -73,7 +73,7 @@ public abstract class Persistence {
if(persistence==null){ if(persistence==null){
persistence = fallback; persistence = fallback;
} }
persistence.account(TestUsageRecord.createTestUsageRecord()); persistence.account(TestUsageRecord.createTestServiceUsageRecord());
} catch(Exception e){ } catch(Exception e){
logger.error("Unable to instance a Persistence Implementation. Using fallback as default", logger.error("Unable to instance a Persistence Implementation. Using fallback as default",
e.getCause()); e.getCause());

View File

@ -15,7 +15,7 @@ public class UsageRecordTest {
@Test @Test
public void testCompareToSameObject() throws InvalidValueException { public void testCompareToSameObject() throws InvalidValueException {
UsageRecord usageRecord = TestUsageRecord.createTestUsageRecord(); UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
UsageRecord ur = usageRecord; UsageRecord ur = usageRecord;
Assert.assertEquals(0, usageRecord.compareTo(ur)); Assert.assertEquals(0, usageRecord.compareTo(ur));
Assert.assertEquals(0, ur.compareTo(usageRecord)); Assert.assertEquals(0, ur.compareTo(usageRecord));
@ -23,7 +23,7 @@ public class UsageRecordTest {
@Test @Test
public void testCompareToEqualsObject() throws Exception { public void testCompareToEqualsObject() throws Exception {
UsageRecord usageRecord = TestUsageRecord.createTestUsageRecord(); UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
UsageRecord ur = BasicUsageRecord.getUsageRecord(usageRecord.getResourceProperties()); UsageRecord ur = BasicUsageRecord.getUsageRecord(usageRecord.getResourceProperties());
Assert.assertEquals(0, usageRecord.compareTo(ur)); Assert.assertEquals(0, usageRecord.compareTo(ur));
Assert.assertEquals(0, ur.compareTo(usageRecord)); Assert.assertEquals(0, ur.compareTo(usageRecord));
@ -31,7 +31,7 @@ public class UsageRecordTest {
@Test @Test
public void testCompareToComparedAddedProperty() throws Exception { public void testCompareToComparedAddedProperty() throws Exception {
UsageRecord usageRecord = TestUsageRecord.createTestUsageRecord(); UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
UsageRecord ur = BasicUsageRecord.getUsageRecord(usageRecord.getResourceProperties()); UsageRecord ur = BasicUsageRecord.getUsageRecord(usageRecord.getResourceProperties());
for(int i=1; i<31; i++){ for(int i=1; i<31; i++){
ur.setResourceProperty(Integer.toString(i), i); ur.setResourceProperty(Integer.toString(i), i);
@ -42,7 +42,7 @@ public class UsageRecordTest {
@Test @Test
public void testCompareToDifferentForAddedProperties() throws Exception { public void testCompareToDifferentForAddedProperties() throws Exception {
UsageRecord usageRecord = TestUsageRecord.createTestUsageRecord(); UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
UsageRecord ur = BasicUsageRecord.getUsageRecord(usageRecord.getResourceProperties()); UsageRecord ur = BasicUsageRecord.getUsageRecord(usageRecord.getResourceProperties());
usageRecord.setResourceProperty(Integer.toString(1), 2); usageRecord.setResourceProperty(Integer.toString(1), 2);
ur.setResourceProperty(Integer.toString(2), 2); ur.setResourceProperty(Integer.toString(2), 2);
@ -52,8 +52,8 @@ public class UsageRecordTest {
@Test @Test
public void testCompareToDifferentFromCreation() throws Exception { public void testCompareToDifferentFromCreation() throws Exception {
UsageRecord usageRecord = TestUsageRecord.createTestUsageRecord(); UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
UsageRecord ur = TestUsageRecord.createTestUsageRecord(); UsageRecord ur = TestUsageRecord.createTestServiceUsageRecord();
Assert.assertEquals(1, usageRecord.compareTo(ur)); Assert.assertEquals(1, usageRecord.compareTo(ur));
Assert.assertEquals(1, ur.compareTo(usageRecord)); Assert.assertEquals(1, ur.compareTo(usageRecord));
} }

View File

@ -25,7 +25,7 @@ public class ServiceUsageRecordAggregationStrategyTest {
@Test @Test
public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
ServiceUsageRecord serviceUsageRecord = (ServiceUsageRecord) TestUsageRecord.createTestUsageRecord(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
serviceUsageRecord.validate(); serviceUsageRecord.validate();
logger.debug("ServiceUsageRecord : {}", serviceUsageRecord); logger.debug("ServiceUsageRecord : {}", serviceUsageRecord);
@ -34,7 +34,7 @@ public class ServiceUsageRecordAggregationStrategyTest {
logger.debug("ServiceUsageRecord Converted to Aggregated: {}", aggregated); logger.debug("ServiceUsageRecord Converted to Aggregated: {}", aggregated);
aggregated.validate(); aggregated.validate();
ServiceUsageRecord serviceUsageRecord2 = (ServiceUsageRecord) TestUsageRecord.createTestUsageRecord(); ServiceUsageRecord serviceUsageRecord2 = TestUsageRecord.createTestServiceUsageRecord();
serviceUsageRecord2.validate(); serviceUsageRecord2.validate();
logger.debug("ServiceUsageRecord 2 : {}", serviceUsageRecord2); logger.debug("ServiceUsageRecord 2 : {}", serviceUsageRecord2);
ServiceUsageRecordAggregationStrategy suras = new ServiceUsageRecordAggregationStrategy(aggregated); ServiceUsageRecordAggregationStrategy suras = new ServiceUsageRecordAggregationStrategy(aggregated);
@ -63,7 +63,7 @@ public class ServiceUsageRecordAggregationStrategyTest {
@Test @Test
public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
ServiceUsageRecord serviceUsageRecord = (ServiceUsageRecord) TestUsageRecord.createTestUsageRecord(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
serviceUsageRecord.validate(); serviceUsageRecord.validate();
logger.debug("ServiceUsageRecord : {}", serviceUsageRecord); logger.debug("ServiceUsageRecord : {}", serviceUsageRecord);
@ -72,7 +72,7 @@ public class ServiceUsageRecordAggregationStrategyTest {
logger.debug("ServiceUsageRecord Converted to Aggregated: {}", aggregated); logger.debug("ServiceUsageRecord Converted to Aggregated: {}", aggregated);
aggregated.validate(); aggregated.validate();
ServiceUsageRecord serviceUsageRecord2 = (ServiceUsageRecord) TestUsageRecord.createTestUsageRecord(); ServiceUsageRecord serviceUsageRecord2 = TestUsageRecord.createTestServiceUsageRecord();
serviceUsageRecord2.validate(); serviceUsageRecord2.validate();
logger.debug("ServiceUsageRecord 2 : {}", serviceUsageRecord2); logger.debug("ServiceUsageRecord 2 : {}", serviceUsageRecord2);
org.gcube.accounting.datamodel.aggregation.ServiceUsageRecord converted2 = org.gcube.accounting.datamodel.aggregation.ServiceUsageRecord converted2 =
@ -104,7 +104,7 @@ public class ServiceUsageRecordAggregationStrategyTest {
@Test @Test
public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions {
ServiceUsageRecord serviceUsageRecord = (ServiceUsageRecord) TestUsageRecord.createTestUsageRecord(); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecord();
serviceUsageRecord.validate(); serviceUsageRecord.validate();
logger.debug("ServiceUsageRecord : {}", serviceUsageRecord); logger.debug("ServiceUsageRecord : {}", serviceUsageRecord);
@ -117,7 +117,7 @@ public class ServiceUsageRecordAggregationStrategyTest {
for(int i=2; i<1002; i++){ for(int i=2; i<1002; i++){
ServiceUsageRecord sur = (ServiceUsageRecord) TestUsageRecord.createTestUsageRecord(); ServiceUsageRecord sur = TestUsageRecord.createTestServiceUsageRecord();
sur.validate(); sur.validate();
logger.debug("Cycle ServiceUsageRecord {}: {}", i, sur); logger.debug("Cycle ServiceUsageRecord {}: {}", i, sur);

View File

@ -34,7 +34,7 @@ public class PersistenceTest {
int quantity = 3000; int quantity = 3000;
Calendar startTestTime = new GregorianCalendar(); Calendar startTestTime = new GregorianCalendar();
for(int i=0; i< quantity; i++){ for(int i=0; i< quantity; i++){
SingleUsageRecord usageRecord = TestUsageRecord.createTestUsageRecord(); SingleUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord();
persistence.account(usageRecord); persistence.account(usageRecord);
} }
Calendar stopTestTime = new GregorianCalendar(); Calendar stopTestTime = new GregorianCalendar();