Added test to create missing records
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-dashboard-harvester-se-plugin@174108 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c974aa57ab
commit
3923486937
|
@ -88,7 +88,7 @@ public class AccountingDataHarvesterPlugin extends Plugin<DataHarvestPluginDecla
|
||||||
return dimension;
|
return dimension;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final InheritableThreadLocal<Map<String, Dimension>> dimensions = new InheritableThreadLocal<Map<String, Dimension>>() {
|
protected static final InheritableThreadLocal<Map<String, Dimension>> dimensions = new InheritableThreadLocal<Map<String, Dimension>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, Dimension> initialValue() {
|
protected Map<String, Dimension> initialValue() {
|
||||||
|
@ -102,7 +102,7 @@ public class AccountingDataHarvesterPlugin extends Plugin<DataHarvestPluginDecla
|
||||||
return scopeDescriptors.get().get(context);
|
return scopeDescriptors.get().get(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final InheritableThreadLocal<Map<String, ScopeDescriptor>> scopeDescriptors = new InheritableThreadLocal<Map<String, ScopeDescriptor>>() {
|
protected static final InheritableThreadLocal<Map<String, ScopeDescriptor>> scopeDescriptors = new InheritableThreadLocal<Map<String, ScopeDescriptor>>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, ScopeDescriptor> initialValue() {
|
protected Map<String, ScopeDescriptor> initialValue() {
|
||||||
|
|
|
@ -50,6 +50,24 @@ public class ContextAuthorization {
|
||||||
retrieveContextsAndTokens();
|
retrieveContextsAndTokens();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String generateTokenForContext(String context, Properties properties) throws Exception {
|
||||||
|
if(properties==null) {
|
||||||
|
properties = AccountingDataHarvesterPlugin.getProperties().get();
|
||||||
|
}
|
||||||
|
logger.info("Going to generate Token for Context {}", context);
|
||||||
|
UserInfo userInfo = new UserInfo(properties.getProperty(USERNAME, DEFAULT_USERNAME),
|
||||||
|
new ArrayList<>());
|
||||||
|
String userToken = authorizationService().generateUserToken(userInfo, context);
|
||||||
|
SecurityTokenProvider.instance.set(userToken);
|
||||||
|
String generatedToken = authorizationService()
|
||||||
|
.generateExternalServiceToken(properties.getProperty(SERVICE_NAME, DEFAULT_SERVICE_NAME));
|
||||||
|
|
||||||
|
logger.trace("Token for Context {} is {}", context, generatedToken);
|
||||||
|
|
||||||
|
return generatedToken;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
protected void retrieveContextsAndTokens() throws Exception {
|
protected void retrieveContextsAndTokens() throws Exception {
|
||||||
|
|
||||||
String initialToken = SecurityTokenProvider.instance.get();
|
String initialToken = SecurityTokenProvider.instance.get();
|
||||||
|
@ -62,15 +80,8 @@ public class ContextAuthorization {
|
||||||
for(String scope : map.keySet()) {
|
for(String scope : map.keySet()) {
|
||||||
try {
|
try {
|
||||||
String context = map.get(scope).toString();
|
String context = map.get(scope).toString();
|
||||||
logger.info("Going to generate Token for Context {}", context);
|
|
||||||
UserInfo userInfo = new UserInfo(properties.getProperty(USERNAME, DEFAULT_USERNAME),
|
|
||||||
new ArrayList<>());
|
|
||||||
String userToken = authorizationService().generateUserToken(userInfo, context);
|
|
||||||
SecurityTokenProvider.instance.set(userToken);
|
|
||||||
String generatedToken = authorizationService()
|
|
||||||
.generateExternalServiceToken(properties.getProperty(SERVICE_NAME, DEFAULT_SERVICE_NAME));
|
|
||||||
|
|
||||||
logger.trace("Token for Context {} is {}", context, generatedToken);
|
String generatedToken = generateTokenForContext(context, properties);
|
||||||
|
|
||||||
contextToToken.put(context, generatedToken);
|
contextToToken.put(context, generatedToken);
|
||||||
tokenToContext.put(generatedToken, context);
|
tokenToContext.put(generatedToken, context);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.gcube.dataharvest;
|
package org.gcube.dataharvest;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -14,10 +15,12 @@ import java.util.TreeSet;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.gcube.accounting.accounting.summary.access.AccountingDao;
|
import org.gcube.accounting.accounting.summary.access.AccountingDao;
|
||||||
|
import org.gcube.accounting.accounting.summary.access.model.ScopeDescriptor;
|
||||||
import org.gcube.accounting.accounting.summary.access.model.internal.Dimension;
|
import org.gcube.accounting.accounting.summary.access.model.internal.Dimension;
|
||||||
import org.gcube.accounting.accounting.summary.access.model.update.AccountingRecord;
|
import org.gcube.accounting.accounting.summary.access.model.update.AccountingRecord;
|
||||||
import org.gcube.common.scope.impl.ScopeBean;
|
import org.gcube.common.scope.impl.ScopeBean;
|
||||||
import org.gcube.common.scope.impl.ScopeBean.Type;
|
import org.gcube.common.scope.impl.ScopeBean.Type;
|
||||||
|
import org.gcube.dataharvest.datamodel.HarvestedDataKey;
|
||||||
import org.gcube.dataharvest.harvester.MethodInvocationHarvester;
|
import org.gcube.dataharvest.harvester.MethodInvocationHarvester;
|
||||||
import org.gcube.dataharvest.harvester.SocialInteractionsHarvester;
|
import org.gcube.dataharvest.harvester.SocialInteractionsHarvester;
|
||||||
import org.gcube.dataharvest.harvester.VREAccessesHarvester;
|
import org.gcube.dataharvest.harvester.VREAccessesHarvester;
|
||||||
|
@ -41,6 +44,7 @@ public class AccountingDataHarvesterPluginTest extends ContextTest {
|
||||||
|
|
||||||
public static final String SO_BIG_DATA_CONTEXT = "/d4science.research-infrastructures.eu/SoBigData";
|
public static final String SO_BIG_DATA_CONTEXT = "/d4science.research-infrastructures.eu/SoBigData";
|
||||||
|
|
||||||
|
|
||||||
public static SortedSet<String> getContexts() throws Exception {
|
public static SortedSet<String> getContexts() throws Exception {
|
||||||
SortedSet<String> contexts = new TreeSet<>();
|
SortedSet<String> contexts = new TreeSet<>();
|
||||||
LinkedHashMap<String,ScopeBean> map = ContextManager.readContexts();
|
LinkedHashMap<String,ScopeBean> map = ContextManager.readContexts();
|
||||||
|
@ -567,7 +571,7 @@ public class AccountingDataHarvesterPluginTest extends ContextTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
// @Test
|
||||||
public void testDataMethodDownloadHarvester() {
|
public void testDataMethodDownloadHarvester() {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -597,4 +601,78 @@ public class AccountingDataHarvesterPluginTest extends ContextTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static final String E_LEARNING_AREA_VRE = "/d4science.research-infrastructures.eu/SoBigData/E-Learning_Area";
|
||||||
|
|
||||||
|
// @Test
|
||||||
|
public void addMissingVREAccesses() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
Utils.setContext(ROOT);
|
||||||
|
|
||||||
|
DataHarvestPluginDeclaration dataHarvestPluginDeclaration = new DataHarvestPluginDeclaration();
|
||||||
|
AccountingDataHarvesterPlugin adhp = new AccountingDataHarvesterPlugin(dataHarvestPluginDeclaration);
|
||||||
|
Properties properties = adhp.getConfigParameters();
|
||||||
|
AccountingDataHarvesterPlugin.getProperties().set(properties);
|
||||||
|
|
||||||
|
ContextAuthorization contextAuthorization = new ContextAuthorization();
|
||||||
|
|
||||||
|
// DatabaseManager dbaseManager = new DatabaseManager();
|
||||||
|
AccountingDao dao = AccountingDao.get();
|
||||||
|
|
||||||
|
Set<ScopeDescriptor> scopeDescriptorSet = dao.getContexts();
|
||||||
|
Map<String,ScopeDescriptor> scopeDescriptorMap = new HashMap<>();
|
||||||
|
for(ScopeDescriptor scopeDescriptor : scopeDescriptorSet) {
|
||||||
|
scopeDescriptorMap.put(scopeDescriptor.getId(), scopeDescriptor);
|
||||||
|
}
|
||||||
|
AccountingDataHarvesterPlugin.scopeDescriptors.set(scopeDescriptorMap);
|
||||||
|
|
||||||
|
|
||||||
|
Set<Dimension> dimensionSet = dao.getDimensions();
|
||||||
|
Map<String,Dimension> dimensionMap = new HashMap<>();
|
||||||
|
for(Dimension dimension : dimensionSet) {
|
||||||
|
dimensionMap.put(dimension.getId(), dimension);
|
||||||
|
}
|
||||||
|
|
||||||
|
AccountingDataHarvesterPlugin.dimensions.set(dimensionMap);
|
||||||
|
|
||||||
|
// ArrayList<HarvestedData> data = new ArrayList<HarvestedData>();
|
||||||
|
ArrayList<AccountingRecord> accountingRecords = new ArrayList<AccountingRecord>();
|
||||||
|
|
||||||
|
String context = E_LEARNING_AREA_VRE;
|
||||||
|
|
||||||
|
// Setting the token for the context
|
||||||
|
Utils.setContext(contextAuthorization.getTokenForContext(context));
|
||||||
|
|
||||||
|
|
||||||
|
ScopeBean scopeBean = new ScopeBean(context);
|
||||||
|
ScopeDescriptor scopeDescriptor = new ScopeDescriptor(scopeBean.name(), context);
|
||||||
|
|
||||||
|
Dimension dimension = AccountingDataHarvesterPlugin.getDimension(HarvestedDataKey.ACCESSES.getKey());
|
||||||
|
|
||||||
|
Calendar calendar = DateUtils.getStartCalendar(2018, Calendar.JULY, 1);
|
||||||
|
calendar.set(Calendar.DAY_OF_MONTH, 15);
|
||||||
|
|
||||||
|
Map<Integer, Integer> monthValues = new HashMap<>();
|
||||||
|
monthValues.put(Calendar.JULY, 54);
|
||||||
|
monthValues.put(Calendar.AUGUST, 23);
|
||||||
|
monthValues.put(Calendar.SEPTEMBER, 127);
|
||||||
|
monthValues.put(Calendar.OCTOBER, 192);
|
||||||
|
|
||||||
|
for(Integer month : monthValues.keySet()) {
|
||||||
|
calendar.set(Calendar.MONTH, month);
|
||||||
|
Instant instant = calendar.toInstant();
|
||||||
|
|
||||||
|
AccountingRecord ar = new AccountingRecord(scopeDescriptor, instant, dimension, (long) monthValues.get(month));
|
||||||
|
logger.debug("{} : {}", ar.getDimension().getId(), ar.getMeasure());
|
||||||
|
accountingRecords.add(ar);
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.trace("{}", accountingRecords);
|
||||||
|
dao.insertRecords(accountingRecords.toArray(new AccountingRecord[1]));
|
||||||
|
|
||||||
|
} catch(Exception e) {
|
||||||
|
logger.error("", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue