Added test for fix of old records persisted using double instead of long for creationTime, startTime, endTime and instead of int for duration and fixed bugs
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-aggregator-se-plugin@162674 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
4cf6d72113
commit
f705b73ca9
|
@ -15,13 +15,18 @@ import org.gcube.accounting.aggregator.utility.Utility;
|
|||
import org.gcube.accounting.datamodel.AggregatedUsageRecord;
|
||||
import org.gcube.accounting.datamodel.UsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord;
|
||||
import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord;
|
||||
import org.gcube.documentstore.records.AggregatedRecord;
|
||||
import org.gcube.documentstore.records.Record;
|
||||
import org.gcube.documentstore.records.RecordUtility;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.couchbase.client.java.document.json.JsonObject;
|
||||
|
||||
public class MyTest {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(Elaborator.class);
|
||||
|
@ -41,7 +46,104 @@ public class MyTest {
|
|||
durationForHuman);
|
||||
|
||||
}
|
||||
|
||||
private static final String USAGE_RECORD_TYPE = "usageRecordType";
|
||||
private static final String SINGLE = "Single";
|
||||
private static final String SIMPLE = "Simple";
|
||||
|
||||
@Test
|
||||
public void testGetRecord() throws Exception {
|
||||
RecordUtility.addRecordPackage(StorageUsageRecord.class.getPackage());
|
||||
RecordUtility.addRecordPackage(AggregatedStorageUsageRecord.class.getPackage());
|
||||
|
||||
String jsonString = "{\"operationCount\":41.0,\"creationTime\":1.454284803916E12,\"consumerId\":\"wps.statisticalmanager\",\"resourceOwner\":\"wps.statisticalmanager\",\"recordType\":\"SingleStorageUsageRecord\",\"dataType\":\"STORAGE\",\"_rev\":\"1-05c467553141723f51dad0fa1aab2ce0\",\"resourceURI\":\"56aea0025caf8b5b69c0071e\",\"providerURI\":\"data.d4science.org\",\"resourceScope\":\"/d4science.research-infrastructures.eu\",\"dataVolume\":95807.0,\"scope\":\"/d4science.research-infrastructures.eu\",\"startTime\":1.454284803059E12,\"operationType\":\"CREATE\",\"endTime\":1.454284803059E12,\"id\":\"ff5f2669-0abb-45e9-99df-f401db579680\",\"_id\":\"ff5f2669-0abb-45e9-99df-f401db579680\",\"operationResult\":\"SUCCESS\"};";
|
||||
|
||||
JsonObject content = JsonObject.fromJson(jsonString);
|
||||
|
||||
if(content.containsKey(USAGE_RECORD_TYPE)){
|
||||
String recordType = content.getString(USAGE_RECORD_TYPE);
|
||||
content.removeKey(USAGE_RECORD_TYPE);
|
||||
content.put(Record.RECORD_TYPE, recordType);
|
||||
}
|
||||
|
||||
Boolean aggregated = false;
|
||||
|
||||
if(content.containsKey(AggregatedRecord.CREATION_TIME)) {
|
||||
Object object = content.get(AggregatedRecord.CREATION_TIME);
|
||||
if(object instanceof Double) {
|
||||
Double d = ((Double) object);
|
||||
content.put(AggregatedRecord.CREATION_TIME, d.longValue());
|
||||
}
|
||||
}
|
||||
|
||||
if(content.containsKey(AggregatedRecord.START_TIME)) {
|
||||
aggregated = true;
|
||||
Object object = content.get(AggregatedRecord.START_TIME);
|
||||
if(object instanceof Double) {
|
||||
Double d = ((Double) object);
|
||||
content.put(AggregatedRecord.START_TIME, d.longValue());
|
||||
}
|
||||
}
|
||||
|
||||
if(content.containsKey(AggregatedRecord.END_TIME)) {
|
||||
aggregated = true;
|
||||
Object object = content.get(AggregatedRecord.END_TIME);
|
||||
if(object instanceof Double) {
|
||||
Double d = ((Double) object);
|
||||
content.put(AggregatedRecord.END_TIME, d.longValue());
|
||||
}
|
||||
}
|
||||
|
||||
if(content.containsKey(AggregatedRecord.OPERATION_COUNT)) {
|
||||
Object object = content.get(AggregatedRecord.OPERATION_COUNT);
|
||||
if(object instanceof Double) {
|
||||
Double d = ((Double) object);
|
||||
content.put(AggregatedRecord.OPERATION_COUNT, d.intValue());
|
||||
}
|
||||
|
||||
if(content.getInt(AggregatedRecord.OPERATION_COUNT)>1) {
|
||||
aggregated = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(aggregated) {
|
||||
content.put(AggregatedRecord.AGGREGATED, true);
|
||||
}
|
||||
|
||||
String recordType = content.getString(Record.RECORD_TYPE);
|
||||
|
||||
if(!aggregated){
|
||||
if(recordType.startsWith(SIMPLE)){
|
||||
recordType = recordType.replace(SIMPLE, SINGLE);
|
||||
content.put(Record.RECORD_TYPE, recordType);
|
||||
}
|
||||
|
||||
if(!recordType.startsWith(SINGLE)) {
|
||||
recordType = SINGLE + recordType;
|
||||
content.put(Record.RECORD_TYPE, recordType);
|
||||
}
|
||||
}else {
|
||||
if(recordType.startsWith(SIMPLE)){
|
||||
recordType = recordType.replace(SIMPLE, "");
|
||||
content.put(Record.RECORD_TYPE, recordType);
|
||||
}
|
||||
|
||||
if(recordType.startsWith(SINGLE)) {
|
||||
recordType = recordType.replace(SINGLE, "");
|
||||
content.put(Record.RECORD_TYPE, recordType);
|
||||
}
|
||||
}
|
||||
|
||||
jsonString = content.toString();
|
||||
|
||||
try {
|
||||
Record r = RecordUtility.getRecord(jsonString);
|
||||
logger.info("{}", r);
|
||||
}catch (Exception e) {
|
||||
logger.error("", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void classesTest() throws InstantiationException, IllegalAccessException {
|
||||
RecordUtility.addRecordPackage(ServiceUsageRecord.class.getPackage());
|
||||
|
|
Loading…
Reference in New Issue