diff --git a/pom.xml b/pom.xml index 4df8b52..152dbcf 100644 --- a/pom.xml +++ b/pom.xml @@ -7,10 +7,10 @@ maven-parent 1.0.0 - + org.gcube.accounting accounting-lib - 2.0.0-SNAPSHOT + 2.1.0-SNAPSHOT Accounting Library Accounting Library jar @@ -35,13 +35,13 @@ org.gcube.resources.discovery ic-client - [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) provided org.gcube.core common-scope - [1.2.0-SNAPSHOT,2.0.0-SNAPSHOT) + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) provided @@ -53,7 +53,7 @@ org.gcube.core common-encryption - [1.0.2-SNAPSHOT, 2.0.0-SNAPSHOT) + [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) provided @@ -72,7 +72,7 @@ org.gcube.resources registry-publisher - [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT) test diff --git a/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java index 0307340..b3fb36b 100644 --- a/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/BasicUsageRecord.java @@ -8,7 +8,9 @@ import java.util.Map; import org.gcube.accounting.datamodel.backwardcompatibility.MoveToRecordType; import org.gcube.accounting.datamodel.validations.annotations.ValidOperationResult; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.client.Constants; +import org.gcube.common.authorization.library.AuthorizationEntry; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.implementation.AbstractRecord; import org.gcube.documentstore.records.implementation.RequiredField; @@ -41,6 +43,18 @@ public abstract class BasicUsageRecord extends AbstractRecord implements UsageRe @RequiredField @ValidOperationResult public static final String OPERATION_RESULT = UsageRecord.OPERATION_RESULT; + public static String getScopeFromToken(){ + String token = SecurityTokenProvider.instance.get(); + AuthorizationEntry authorizationEntry; + try { + authorizationEntry = Constants.authorizationService().get(token); + } catch (Exception e) { + throw new RuntimeException(e); + } + String scope = authorizationEntry.getContext(); + return scope; + } + /** * Initialize variable */ @@ -48,7 +62,7 @@ public abstract class BasicUsageRecord extends AbstractRecord implements UsageRe super.init(); // Backward compatibility try { - this.setScope(ScopeProvider.instance.get()); + this.setScope(getScopeFromToken()); } catch(Exception e) { logger.warn("Unable to automaticcally set the scope using scope provider. The record will not be valid if the scope will not be explicitly set."); } diff --git a/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java b/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java index 0809e75..71190a1 100644 --- a/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java +++ b/src/main/java/org/gcube/accounting/persistence/AccountingPersistence.java @@ -5,7 +5,7 @@ package org.gcube.accounting.persistence; import java.util.concurrent.TimeUnit; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.accounting.datamodel.BasicUsageRecord; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.persistence.PersistenceBackendFactory; import org.gcube.documentstore.records.Record; @@ -38,7 +38,7 @@ public class AccountingPersistence { * @throws InvalidValueException */ public void account(final Record record) throws InvalidValueException { - String scope = ScopeProvider.instance.get(); + String scope = BasicUsageRecord.getScopeFromToken(); try { PersistenceBackendFactory.getPersistenceBackend(scope).account(record); } catch (org.gcube.documentstore.exception.InvalidValueException e) { @@ -51,12 +51,12 @@ public class AccountingPersistence { } public void flush(long timeout, TimeUnit timeUnit) throws Exception { - String scope = ScopeProvider.instance.get(); + String scope = BasicUsageRecord.getScopeFromToken(); PersistenceBackendFactory.flush(scope, timeout, timeUnit); } public void close() throws Exception{ - String scope = ScopeProvider.instance.get(); + String scope = BasicUsageRecord.getScopeFromToken(); PersistenceBackendFactory.getPersistenceBackend(scope).close(); } diff --git a/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java b/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java index 6938040..9c1f023 100644 --- a/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java +++ b/src/main/java/org/gcube/accounting/persistence/AccountingPersistenceConfiguration.java @@ -7,12 +7,12 @@ import java.security.Key; import java.util.List; import java.util.Map; +import org.gcube.accounting.datamodel.BasicUsageRecord; import org.gcube.common.encryption.StringEncrypter; import org.gcube.common.resources.gcore.ServiceEndpoint; import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint; import org.gcube.common.resources.gcore.ServiceEndpoint.Property; import org.gcube.common.resources.gcore.utils.Group; -import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.persistence.PersistenceBackend; import org.gcube.documentstore.persistence.PersistenceBackendConfiguration; import org.gcube.resources.discovery.client.api.DiscoveryClient; @@ -59,7 +59,7 @@ public class AccountingPersistenceConfiguration extends PersistenceBackendConfig List serviceEndpoints = client.submit(query); if(serviceEndpoints.size()>1){ query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Name/text() eq '%s'", TARGET_SCOPE)); - query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Value/text() eq '%s'", ScopeProvider.instance.get())); + query.addCondition(String.format("$resource/Profile/AccessPoint/Properties/Property/Value/text() eq '%s'", BasicUsageRecord.getScopeFromToken())); serviceEndpoints = client.submit(query); } diff --git a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java index 888ceb3..5df2048 100644 --- a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedServiceUsageRecordTest.java @@ -8,10 +8,11 @@ import java.util.Set; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecordTest; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,6 +25,11 @@ public class AggregatedServiceUsageRecordTest { private static Logger logger = LoggerFactory.getLogger(AggregatedServiceUsageRecordTest.class); + @Before + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); + } + @Test public void testRequiredFields() throws InvalidValueException { ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); @@ -48,7 +54,6 @@ public class AggregatedServiceUsageRecordTest { @Test public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); serviceUsageRecord.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE); serviceUsageRecord.validate(); @@ -88,7 +93,6 @@ public class AggregatedServiceUsageRecordTest { @Test public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); serviceUsageRecord.validate(); logger.debug("ServiceUsageRecord : {}", serviceUsageRecord); @@ -133,7 +137,6 @@ public class AggregatedServiceUsageRecordTest { @Test public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); ServiceUsageRecord serviceUsageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); serviceUsageRecord.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE); serviceUsageRecord.validate(); diff --git a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java index 84ec634..584407f 100644 --- a/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/aggregation/AggregatedStorageUsageRecordTest.java @@ -6,10 +6,11 @@ package org.gcube.accounting.datamodel.aggregation; import org.gcube.accounting.datamodel.aggregation.AggregatedStorageUsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; import org.gcube.accounting.datamodel.usagerecords.StorageUsageRecord; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.exception.NotAggregatableRecordsExceptions; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,9 +23,13 @@ public class AggregatedStorageUsageRecordTest { private static Logger logger = LoggerFactory.getLogger(AggregatedStorageUsageRecordTest.class); + @Before + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); + } + @Test public void secondAsNotAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); storageUsageRecord.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE); storageUsageRecord.validate(); @@ -53,7 +58,6 @@ public class AggregatedStorageUsageRecordTest { @Test public void secondAsAggregated() throws InvalidValueException, NotAggregatableRecordsExceptions { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); storageUsageRecord.validate(); logger.debug("StorageUsageRecord : {}", storageUsageRecord); @@ -84,7 +88,6 @@ public class AggregatedStorageUsageRecordTest { @Test public void aggregationStressTest() throws InvalidValueException, NotAggregatableRecordsExceptions { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); storageUsageRecord.setResourceProperty(TestUsageRecord.TEST_PROPERTY_NAME, TestUsageRecord.TEST_PROPERTY_VALUE); storageUsageRecord.validate(); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java index 583e9e8..96b43e6 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/JobUsageRecordTest.java @@ -9,7 +9,7 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractJobUsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.junit.After; @@ -28,15 +28,13 @@ public class JobUsageRecordTest { private static Logger logger = LoggerFactory.getLogger(JobUsageRecordTest.class); @Before - public void before(){ - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); - logger.trace("Setting {} scope", TestUsageRecord.TEST_SCOPE); + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); } @After public void after(){ - ScopeProvider.instance.reset(); - logger.trace("Scope reset"); + SecurityTokenProvider.instance.reset(); } public static Set getExpectedRequiredFields(){ @@ -56,7 +54,6 @@ public class JobUsageRecordTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { - ScopeProvider.instance.reset(); JobUsageRecord usageRecord = TestUsageRecord.createTestJobUsageRecordAutomaticScope(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -81,7 +78,6 @@ public class JobUsageRecordTest { @Test public void testRequiredFieldsWithScopeSetExplicitely() throws InvalidValueException{ - ScopeProvider.instance.reset(); JobUsageRecord usageRecord = TestUsageRecord.createTestJobUsageRecordAutomaticScope(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java index 89c6a59..8102f52 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/ServiceUsageRecordTest.java @@ -9,7 +9,7 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractServiceUsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.junit.After; @@ -28,15 +28,13 @@ public class ServiceUsageRecordTest { private static Logger logger = LoggerFactory.getLogger(ServiceUsageRecordTest.class); @Before - public void before(){ - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); - logger.trace("Setting {} scope", TestUsageRecord.TEST_SCOPE); + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); } @After public void after(){ - ScopeProvider.instance.reset(); - logger.trace("Scope reset"); + SecurityTokenProvider.instance.reset(); } public static Set getExpectedRequiredFields(){ @@ -58,7 +56,7 @@ public class ServiceUsageRecordTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { - ScopeProvider.instance.reset(); + SecurityTokenProvider.instance.reset(); ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -83,7 +81,7 @@ public class ServiceUsageRecordTest { @Test public void testRequiredFieldsWithScopeSetExplicitely() throws InvalidValueException{ - ScopeProvider.instance.reset(); + SecurityTokenProvider.instance.reset(); ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java index 4106351..c769b21 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java @@ -9,7 +9,7 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.junit.After; @@ -28,15 +28,13 @@ public class StorageUsageRecordTest { private static Logger logger = LoggerFactory.getLogger(StorageUsageRecordTest.class); @Before - public void before(){ - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); - logger.trace("Setting {} scope", TestUsageRecord.TEST_SCOPE); + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); } @After public void after(){ - ScopeProvider.instance.reset(); - logger.trace("Scope reset"); + SecurityTokenProvider.instance.reset(); } public static Set getExpectedRequiredFields(){ @@ -60,7 +58,7 @@ public class StorageUsageRecordTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { - ScopeProvider.instance.reset(); + SecurityTokenProvider.instance.reset(); StorageUsageRecord usageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -85,7 +83,7 @@ public class StorageUsageRecordTest { @Test public void testRequiredFieldsWithScopeSetExplicitely() throws InvalidValueException{ - ScopeProvider.instance.reset(); + SecurityTokenProvider.instance.reset(); StorageUsageRecord usageRecord = TestUsageRecord.createTestStorageUsageRecordExplicitScope(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java index 68ca84f..4b065eb 100644 --- a/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/TaskUsageRecordTest.java @@ -9,7 +9,7 @@ import java.util.Set; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractTaskUsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.documentstore.records.Record; import org.junit.After; @@ -28,15 +28,13 @@ public class TaskUsageRecordTest { private static Logger logger = LoggerFactory.getLogger(TaskUsageRecordTest.class); @Before - public void before(){ - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); - logger.trace("Setting {} scope", TestUsageRecord.TEST_SCOPE); + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); } @After public void after(){ - ScopeProvider.instance.reset(); - logger.trace("Scope reset"); + SecurityTokenProvider.instance.reset(); } public static Set getExpectedRequiredFields(){ @@ -56,7 +54,7 @@ public class TaskUsageRecordTest { @Test(expected=InvalidValueException.class) public void scopeNotSetValidationError() throws InvalidValueException { - ScopeProvider.instance.reset(); + SecurityTokenProvider.instance.reset(); TaskUsageRecord usageRecord = TestUsageRecord.createTestTaskUsageRecordAutomaticScope(); usageRecord.validate(); logger.debug("{}", usageRecord); @@ -64,7 +62,6 @@ public class TaskUsageRecordTest { @Test public void testRequiredFields() throws InvalidValueException{ - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); TaskUsageRecord usageRecord = TestUsageRecord.createTestTaskUsageRecordAutomaticScope(); Set expectedRequiredFields = getExpectedRequiredFields(); @@ -82,7 +79,7 @@ public class TaskUsageRecordTest { @Test public void testRequiredFieldsWithScopeSetExplicitely() throws InvalidValueException{ - ScopeProvider.instance.reset(); + SecurityTokenProvider.instance.reset(); TaskUsageRecord usageRecord = TestUsageRecord.createTestTaskUsageRecordExplicitScope(); Assert.assertTrue(usageRecord.getScope()==null); usageRecord.setScope(TestUsageRecord.TEST_SCOPE); diff --git a/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java b/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java index c02566b..0b61e81 100644 --- a/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java +++ b/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java @@ -8,6 +8,7 @@ import java.net.URL; import java.util.Arrays; import java.util.List; +import org.gcube.accounting.datamodel.BasicUsageRecord; import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.resources.gcore.ServiceEndpoint; @@ -17,7 +18,6 @@ import org.gcube.common.resources.gcore.ServiceEndpoint.Property; import org.gcube.common.resources.gcore.ServiceEndpoint.Runtime; import org.gcube.common.resources.gcore.common.Platform; import org.gcube.common.resources.gcore.utils.Group; -import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.persistence.PersistenceBackend; import org.gcube.informationsystem.publisher.RegistryPublisherFactory; import org.gcube.informationsystem.publisher.ScopedPublisher; @@ -94,7 +94,7 @@ public class AccountingPersistenceConfigurationTest { private static void unPublishScopedResource(Resource resource, List scopes) throws RegistryNotFoundException, Exception { ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher(); String id = resource.id(); - logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, ScopeProvider.instance.get()); + logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, BasicUsageRecord.getScopeFromToken()); scopedPublisher.remove(resource, scopes); logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id); } @@ -153,7 +153,6 @@ public class AccountingPersistenceConfigurationTest { } public void testPersistenceConfigurationFromIS() throws Exception{ - ScopeProvider.instance.set(ALL_SCOPES[0]); boolean createResource = true; ServiceEndpoint serviceEndpoint = null; List scopes = Arrays.asList(ALL_SCOPES); @@ -187,23 +186,20 @@ public class AccountingPersistenceConfigurationTest { } public void getUsernamePasswordForScopes() throws Exception{ - for(String scope : ALL_SCOPES){ - logger.debug("START ======================================================"); - ScopeProvider.instance.set(scope); - try { - AccountingPersistenceConfiguration persitenceConfiguration = new AccountingPersistenceConfiguration(AccountingPersistenceFakeDB.class); - String uri = persitenceConfiguration.getProperty(AccountingPersistenceConfiguration.URL_PROPERTY_KEY); - String username = persitenceConfiguration.getProperty(AccountingPersistenceConfiguration.USERNAME_PROPERTY_KEY); - String password = persitenceConfiguration.getProperty(AccountingPersistenceConfiguration.PASSWORD_PROPERTY_KEY); - logger.debug("{} - {} - {} - {}", scope, uri, username, password); - }catch(IndexOutOfBoundsException e){ - logger.debug("No AccountingPersistenceConfiguration : \n {} {} \n\n", e.getClass().getName(), e.getMessage()); - } catch(Exception e){ - logger.error("Error getting AccountingPersistenceConfiguration", e); - throw e; - } finally { - logger.debug(" END ======================================================"); - } + logger.debug("START ======================================================"); + try { + AccountingPersistenceConfiguration persitenceConfiguration = new AccountingPersistenceConfiguration(AccountingPersistenceFakeDB.class); + String uri = persitenceConfiguration.getProperty(AccountingPersistenceConfiguration.URL_PROPERTY_KEY); + String username = persitenceConfiguration.getProperty(AccountingPersistenceConfiguration.USERNAME_PROPERTY_KEY); + String password = persitenceConfiguration.getProperty(AccountingPersistenceConfiguration.PASSWORD_PROPERTY_KEY); + logger.debug("{} - {} - {} - {}", BasicUsageRecord.getScopeFromToken(), uri, username, password); + }catch(IndexOutOfBoundsException e){ + logger.debug("No AccountingPersistenceConfiguration : \n {} {} \n\n", e.getClass().getName(), e.getMessage()); + } catch(Exception e){ + logger.error("Error getting AccountingPersistenceConfiguration", e); + throw e; + } finally { + logger.debug(" END ======================================================"); } } diff --git a/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceTest.java b/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceTest.java deleted file mode 100644 index 0559d8b..0000000 --- a/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/** - * - */ -package org.gcube.accounting.persistence; - -import java.util.UUID; -import java.util.concurrent.ThreadLocalRandom; -import java.util.concurrent.TimeUnit; - -import org.gcube.accounting.datamodel.UsageRecord; -import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.accounting.persistence.AccountingPersistence; -import org.gcube.accounting.testutility.StressTestUtility; -import org.gcube.accounting.testutility.TestOperation; -import org.gcube.common.scope.api.ScopeProvider; -import org.gcube.documentstore.exception.InvalidValueException; -import org.gcube.documentstore.persistence.PersistenceBackendFactory; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ - * - */ -public class AccountingPersistenceTest { - - private static final Logger logger = LoggerFactory.getLogger(AccountingPersistenceTest.class); - - public static final String[] SCOPES = new String[]{ - "/gcube", - "/gcube/devsec", "/gcube/devsec/devVRE", - "/gcube/devNext", "/gcube/devNext/NextNext" - }; - - public static final long timeout = 5000; - public static final TimeUnit timeUnit = TimeUnit.MILLISECONDS; - - @Test - public void stressTest() throws Exception { - final AccountingPersistence persistence = AccountingPersistence.getInstance(); - PersistenceBackendFactory.setFallbackLocation(null); - StressTestUtility.stressTest(new TestOperation() { - @Override - public void operate(int i) { - int randomNumber = ThreadLocalRandom.current().nextInt(0, 5); - ScopeProvider.instance.set(SCOPES[randomNumber]); - UsageRecord usageRecord = null; - switch (i%2) { - case 0: - usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); - break; - case 1: - usageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); - break; - default: - usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); - break; - } - try { - usageRecord.setConsumerId(UUID.randomUUID().toString()); - persistence.account(usageRecord); - } catch (InvalidValueException e) { - throw new RuntimeException(e); - } - } - }); - logger.debug(" START -----------------------------------------------"); - logger.debug("Flushing the buffered records"); - persistence.flush(timeout, timeUnit); - logger.debug(" END -----------------------------------------------"); - - } -} diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java index fd84d63..7678d64 100644 --- a/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java @@ -5,12 +5,15 @@ package org.gcube.documentstore.persistence; import java.util.concurrent.TimeUnit; +import org.gcube.accounting.datamodel.BasicUsageRecord; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; import org.gcube.accounting.testutility.StressTestUtility; import org.gcube.accounting.testutility.TestOperation; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,12 +29,21 @@ public class PersistenceBackendMonitorTest { public static final long timeout = 5000; public static final TimeUnit timeUnit = TimeUnit.MILLISECONDS; + @Before + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); + } + + @After + public void after(){ + SecurityTokenProvider.instance.reset(); + } + + @Test public void parsingTest() throws Exception { - ScopeProvider.instance.set("/gcube/devsec"); - PersistenceBackendFactory.setFallbackLocation(null); - final PersistenceBackend persistence = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + final PersistenceBackend persistence = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); StressTestUtility.stressTest(new TestOperation() { @@ -62,7 +74,7 @@ public class PersistenceBackendMonitorTest { persistence.flush(timeout, timeUnit); logger.debug(" END -----------------------------------------------"); - PersistenceBackend persistenceBackend = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + PersistenceBackend persistenceBackend = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); persistenceBackend.setFallback((FallbackPersistenceBackend) persistenceBackend); PersistenceBackendMonitor temporalDataPersistenceBackendMonitor = new PersistenceBackendMonitor(persistenceBackend); @@ -72,9 +84,8 @@ public class PersistenceBackendMonitorTest { @Test public void singleParsingTest() throws Exception { - ScopeProvider.instance.set("/gcube/devsec"); PersistenceBackendFactory.setFallbackLocation(null); - PersistenceBackend persistenceBackend = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + PersistenceBackend persistenceBackend = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); persistenceBackend.setFallback((FallbackPersistenceBackend) persistenceBackend); PersistenceBackendMonitor temporalDataPersistenceBackendMonitor = new PersistenceBackendMonitor(persistenceBackend); diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java index d4edb50..643fda9 100644 --- a/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java @@ -6,16 +6,16 @@ package org.gcube.documentstore.persistence; import java.util.Calendar; import java.util.concurrent.TimeUnit; +import org.gcube.accounting.datamodel.BasicUsageRecord; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; import org.gcube.accounting.testutility.StressTestUtility; import org.gcube.accounting.testutility.TestOperation; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.exception.InvalidValueException; -import org.gcube.documentstore.persistence.FallbackPersistenceBackend; -import org.gcube.documentstore.persistence.PersistenceBackend; -import org.gcube.documentstore.persistence.PersistenceBackendFactory; +import org.junit.AfterClass; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,10 +35,20 @@ public class PersistenceBackendTest { public static final long timeout = 5000; public static final TimeUnit timeUnit = TimeUnit.MILLISECONDS; + + @BeforeClass + public static void before() throws Exception{ + SecurityTokenProvider.instance.set(""); + } + + @AfterClass + public static void after(){ + SecurityTokenProvider.instance.reset(); + } + public static PersistenceBackend getPersistence(){ - ScopeProvider.instance.set(GCUBE_DEVNEXT_SCOPE); PersistenceBackendFactory.setFallbackLocation(null); - return PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + return PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); } @Test @@ -105,12 +115,11 @@ public class PersistenceBackendTest { @Test public void testScopeRecheck() throws Exception { - ScopeProvider.instance.set("/fakeScope"); PersistenceBackendFactory.setFallbackLocation(null); logger.debug("Going to check First Time"); - PersistenceBackend first = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + PersistenceBackend first = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); logger.debug("First {} : {}", PersistenceBackend.class.getSimpleName(), first); - Long firstCheck = PersistenceBackendFactory.getFallbackLastCheck(ScopeProvider.instance.get()); + Long firstCheck = PersistenceBackendFactory.getFallbackLastCheck(BasicUsageRecord.getScopeFromToken()); logger.debug("First Check Time {}", firstCheck); long startTime = Calendar.getInstance().getTimeInMillis(); @@ -121,9 +130,9 @@ public class PersistenceBackendTest { } logger.debug("Going to check Second Time"); - PersistenceBackend second = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + PersistenceBackend second = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); logger.debug("Second {} : {}", PersistenceBackend.class.getSimpleName(), second); - Long secondCheck = PersistenceBackendFactory.getFallbackLastCheck(ScopeProvider.instance.get()); + Long secondCheck = PersistenceBackendFactory.getFallbackLastCheck(BasicUsageRecord.getScopeFromToken()); logger.debug("Second Check Time {}", secondCheck); Assert.assertNotEquals(firstCheck, secondCheck); diff --git a/src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java b/src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java index 6239de1..4ebfc64 100644 --- a/src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java +++ b/src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java @@ -12,11 +12,13 @@ import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; import org.gcube.accounting.testutility.StressTestUtility; import org.gcube.accounting.testutility.TestOperation; -import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.persistence.PersistenceExecutor; import org.gcube.documentstore.records.AggregatedRecord; import org.gcube.documentstore.records.Record; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,10 +31,22 @@ public class AggregationSchedulerTest { private static final Logger logger = LoggerFactory.getLogger(AggregationSchedulerTest.class); + @Before + public void before() throws Exception{ + SecurityTokenProvider.instance.set(""); + } + + @After + public void after(){ + SecurityTokenProvider.instance.reset(); + } + public static AggregationScheduler getAggregationScheduler(){ return AggregationScheduler.newInstance(); } + + public static PersistenceExecutor persistenceExecutor = new PersistenceExecutor(){ @Override public void persist(Record... records) throws Exception { @@ -43,7 +57,6 @@ public class AggregationSchedulerTest { }; protected void madeAssertion(Map> bufferedRecords, List types, int size, int count) { - for(String type : types){ Assert.assertTrue(bufferedRecords.containsKey(type)); List records = bufferedRecords.get(type); @@ -60,7 +73,6 @@ public class AggregationSchedulerTest { @Test public void stressTestAggregableURSingleType() throws Exception { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); final AggregationScheduler aggregationScheduler = getAggregationScheduler(); StressTestUtility.stressTest(new TestOperation() { @Override @@ -80,7 +92,6 @@ public class AggregationSchedulerTest { @Test public void stressTestDifferentAggregableURSingleType() throws Exception { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); final AggregationScheduler aggregationScheduler = getAggregationScheduler(); StressTestUtility.stressTest(new TestOperation() { @Override @@ -103,7 +114,6 @@ public class AggregationSchedulerTest { @Test public void stressTestDifferentAggregableURTwoType() throws Exception { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); final AggregationScheduler aggregationScheduler = getAggregationScheduler(); StressTestUtility.stressTest(new TestOperation() { @Override @@ -131,7 +141,6 @@ public class AggregationSchedulerTest { @Test public void stressTestDifferentAggregableURMultipleType() throws Exception { - ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); final AggregationScheduler aggregationScheduler = getAggregationScheduler(); StressTestUtility.stressTest(new TestOperation() { @Override