125 lines
4.8 KiB
Java
125 lines
4.8 KiB
Java
/**
|
|
*
|
|
*/
|
|
package org.gcube.accounting.aggregation.aggregationstrategy;
|
|
|
|
import org.gcube.accounting.aggregation.strategy.StorageUsageRecordAggregationStrategy;
|
|
import org.gcube.accounting.datamodel.TestUsageRecord;
|
|
import org.gcube.accounting.datamodel.usagerecord.StorageUsageRecord;
|
|
import org.gcube.accounting.exception.InvalidValueException;
|
|
import org.gcube.accounting.exception.NotAggregatableRecordsExceptions;
|
|
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 StorageUsageRecordAggregationStrategyTest {
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(StorageUsageRecordAggregationStrategyTest.class);
|
|
|
|
@Test
|
|
public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
|
|
|
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
|
storageUsageRecord.validate();
|
|
logger.debug("StorageUsageRecord : {}", storageUsageRecord);
|
|
|
|
org.gcube.accounting.aggregation.StorageUsageRecord aggregated =
|
|
new org.gcube.accounting.aggregation.StorageUsageRecord(storageUsageRecord);
|
|
logger.debug("StorageUsageRecord Converted to Aggregated: {}", aggregated);
|
|
aggregated.validate();
|
|
|
|
StorageUsageRecord storageUsageRecord2 = TestUsageRecord.createTestStorageUsageRecord();
|
|
storageUsageRecord2.validate();
|
|
logger.debug("StorageUsageRecord 2 : {}", storageUsageRecord2);
|
|
StorageUsageRecordAggregationStrategy suras = new StorageUsageRecordAggregationStrategy(aggregated);
|
|
|
|
long firstDataVolume = storageUsageRecord.getDataVolume();
|
|
long secondDataVolume = storageUsageRecord2.getDataVolume();
|
|
|
|
suras.aggregate(storageUsageRecord2);
|
|
logger.debug("Resulting Aggregated ServiceUsageRecord: {}", aggregated);
|
|
aggregated.validate();
|
|
|
|
Assert.assertTrue(aggregated.getDataVolume() == (firstDataVolume + secondDataVolume));
|
|
Assert.assertTrue(aggregated.getOperationCount() == 2);
|
|
|
|
}
|
|
|
|
@Test
|
|
public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
|
|
|
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
|
storageUsageRecord.validate();
|
|
logger.debug("StorageUsageRecord : {}", storageUsageRecord);
|
|
|
|
org.gcube.accounting.aggregation.StorageUsageRecord aggregated =
|
|
new org.gcube.accounting.aggregation.StorageUsageRecord(storageUsageRecord);
|
|
logger.debug("StorageUsageRecord Converted to Aggregated: {}", aggregated);
|
|
aggregated.validate();
|
|
|
|
StorageUsageRecord storageUsageRecord2 = TestUsageRecord.createTestStorageUsageRecord();
|
|
storageUsageRecord2.validate();
|
|
logger.debug("StorageUsageRecord 2 : {}", storageUsageRecord2);
|
|
org.gcube.accounting.aggregation.StorageUsageRecord converted =
|
|
new org.gcube.accounting.aggregation.StorageUsageRecord(storageUsageRecord2);
|
|
logger.debug("StorageUsageRecord Converted to Aggregated: {}", converted);
|
|
converted.validate();
|
|
|
|
|
|
StorageUsageRecordAggregationStrategy suras = new StorageUsageRecordAggregationStrategy(aggregated);
|
|
|
|
long firstDataVolume = aggregated.getDataVolume();
|
|
long secondDataVolume = converted.getDataVolume();
|
|
|
|
suras.aggregate(converted);
|
|
logger.debug("Resulting Aggregated StorageUsageRecord: {}", aggregated);
|
|
aggregated.validate();
|
|
|
|
Assert.assertTrue(aggregated.getDataVolume() == (firstDataVolume + secondDataVolume));
|
|
Assert.assertTrue(aggregated.getOperationCount() == 2);
|
|
|
|
}
|
|
|
|
@Test
|
|
public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions {
|
|
|
|
StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecord();
|
|
storageUsageRecord.validate();
|
|
logger.debug("StorageUsageRecord : {}", storageUsageRecord);
|
|
|
|
org.gcube.accounting.aggregation.StorageUsageRecord aggregated =
|
|
new org.gcube.accounting.aggregation.StorageUsageRecord(storageUsageRecord);
|
|
logger.debug("StorageUsageRecord Converted to Aggregated: {}", aggregated);
|
|
aggregated.validate();
|
|
|
|
StorageUsageRecordAggregationStrategy suras = new StorageUsageRecordAggregationStrategy(aggregated);
|
|
|
|
for(int i=2; i<1002; i++){
|
|
|
|
StorageUsageRecord sur = TestUsageRecord.createTestStorageUsageRecord();
|
|
sur.validate();
|
|
logger.debug("Cycle StorageUsageRecord {}: {}", i, sur);
|
|
|
|
long oldDataVolume = aggregated.getDataVolume();
|
|
long newDataVolume = sur.getDataVolume();
|
|
|
|
suras.aggregate(sur);
|
|
logger.debug("Resulting Aggregated StorageUsageRecord : {}", aggregated);
|
|
aggregated.validate();
|
|
|
|
Assert.assertTrue(aggregated.getDataVolume() == (oldDataVolume + newDataVolume));
|
|
Assert.assertTrue(aggregated.getOperationCount() == i);
|
|
|
|
}
|
|
|
|
logger.debug("Resulting Aggregated StorageUsageRecord: {}", aggregated);
|
|
}
|
|
|
|
}
|