From 4f15d5b3b00d04d5bbc7974a5d7a336ddd710645 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 10 Feb 2016 15:49:09 +0000 Subject: [PATCH] refs #2222: Move infrastructure tests outside of components junit tests https://support.d4science.org/issues/2222 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/private/luca.frosini/infrastructure-tests@124071 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 57 ++++++++++++--- ...ccountingPersistenceConfigurationTest.java | 2 +- .../persistence/PersistenceCouchBaseTest.java | 1 + .../persistence/PersistenceCouchDBTest.java | 1 + .../persistence/PersistenceMongoDBTest.java | 1 + .../PersistenceBackendMonitorTest.java | 12 ++-- .../persistence/PersistenceBackendTest.java | 18 ++--- .../persistence/PersistenceCouchBaseTest.java | 1 - .../persistence/PersistenceCouchDBTest.java | 2 +- .../persistence/PersistenceMongoDBTest.java | 1 - .../aggregation/AggregationSchedulerTest.java | 26 +++---- .../org/gcube/utils/StressTestUtility.java | 2 +- .../java/org/gcube/utils/TestUtility.java | 71 +++++++++++++++++++ 13 files changed, 151 insertions(+), 44 deletions(-) rename src/test/java/org/gcube/{accounting => }/documentstore/persistence/PersistenceBackendMonitorTest.java (88%) rename src/test/java/org/gcube/{accounting => }/documentstore/persistence/PersistenceBackendTest.java (90%) rename src/test/java/org/gcube/{accounting => }/documentstore/records/aggregation/AggregationSchedulerTest.java (89%) diff --git a/pom.xml b/pom.xml index 41df6e0..1f51b21 100644 --- a/pom.xml +++ b/pom.xml @@ -27,73 +27,110 @@ org.gcube.data.publishing document-store-lib - [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT) - - - - org.gcube.accounting - accounting-lib - [2.1.0-SNAPSHOT, 3.0.0-SNAPSHOT) + [1.0.1-SNAPSHOT, 2.0.0-SNAPSHOT) + test org.gcube.data.publishing document-store-lib-couchbase [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT) + test + + + org.gcube.data.publishing + document-store-lib-couchdb + [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT) + test + + + org.gcube.data.publishing + document-store-lib-mongodb + [1.1.0-SNAPSHOT, 2.0.0-SNAPSHOT) + test - + + + org.gcube.accounting + accounting-lib + [2.1.0-SNAPSHOT, 3.0.0-SNAPSHOT) + test + + org.gcube.accounting accounting-analytics [1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT) + test org.gcube.accounting accounting-analytics-persistence-couchdb [1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT) + test org.gcube.accounting accounting-analytics-persistence-couchbase - [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + test org.gcube.vremanagement smart-executor-client - [1.3.0-SNAPSHOT, 2.0.0-SNAPSHOT) + [1.3.0-SNAPSHOT,2.0.0-SNAPSHOT) + test + + + org.gcube.accounting + couchdb-cache-se-plugin + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + test + + + org.gcube.information-system + is-sweeper-se-plugin + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + test org.gcube.core common-scope [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT] + test org.gcube.resources registry-publisher [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT] + test org.gcube.core common-encryption [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT] + test org.slf4j slf4j-api 1.7.5 + test ch.qos.logback logback-classic 1.0.13 + test junit junit 4.11 + test diff --git a/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java b/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java index 38ca09c..3ff41c6 100644 --- a/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java +++ b/src/test/java/org/gcube/accounting/persistence/AccountingPersistenceConfigurationTest.java @@ -7,7 +7,6 @@ import java.io.StringWriter; import java.net.URL; import org.gcube.accounting.datamodel.BasicUsageRecord; -import org.gcube.accounting.testutility.TestUtility; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.resources.gcore.ServiceEndpoint; @@ -18,6 +17,7 @@ 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.documentstore.persistence.PersistenceBackend; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; diff --git a/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java b/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java index 402678d..e3d9942 100644 --- a/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java +++ b/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java @@ -17,6 +17,7 @@ import org.gcube.documentstore.persistence.PersistenceBackendFactory; import org.gcube.documentstore.persistence.PersistenceCouchBase; import org.gcube.informationsystem.publisher.RegistryPublisher; import org.gcube.informationsystem.publisher.RegistryPublisherFactory; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; diff --git a/src/test/java/org/gcube/accounting/persistence/PersistenceCouchDBTest.java b/src/test/java/org/gcube/accounting/persistence/PersistenceCouchDBTest.java index 7a33449..fbe4910 100644 --- a/src/test/java/org/gcube/accounting/persistence/PersistenceCouchDBTest.java +++ b/src/test/java/org/gcube/accounting/persistence/PersistenceCouchDBTest.java @@ -16,6 +16,7 @@ import org.gcube.documentstore.persistence.PersistenceBackendFactory; import org.gcube.documentstore.persistence.PersistenceCouchDB; import org.gcube.informationsystem.publisher.RegistryPublisher; import org.gcube.informationsystem.publisher.RegistryPublisherFactory; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; diff --git a/src/test/java/org/gcube/accounting/persistence/PersistenceMongoDBTest.java b/src/test/java/org/gcube/accounting/persistence/PersistenceMongoDBTest.java index 0b55843..fe33cd5 100644 --- a/src/test/java/org/gcube/accounting/persistence/PersistenceMongoDBTest.java +++ b/src/test/java/org/gcube/accounting/persistence/PersistenceMongoDBTest.java @@ -16,6 +16,7 @@ import org.gcube.documentstore.persistence.PersistenceBackendFactory; import org.gcube.documentstore.persistence.PersistenceMongoDB; import org.gcube.informationsystem.publisher.RegistryPublisher; import org.gcube.informationsystem.publisher.RegistryPublisherFactory; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; diff --git a/src/test/java/org/gcube/accounting/documentstore/persistence/PersistenceBackendMonitorTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java similarity index 88% rename from src/test/java/org/gcube/accounting/documentstore/persistence/PersistenceBackendMonitorTest.java rename to src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java index c6f48d5..e5c664c 100644 --- a/src/test/java/org/gcube/accounting/documentstore/persistence/PersistenceBackendMonitorTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendMonitorTest.java @@ -8,11 +8,15 @@ 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.TestUtility; 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.gcube.documentstore.persistence.PersistenceBackendMonitor; import org.gcube.utils.StressTestUtility; import org.gcube.utils.TestOperation; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -52,13 +56,13 @@ public class PersistenceBackendMonitorTest { UsageRecord usageRecord = null; switch (i%3) { case 0: - usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestServiceUsageRecord(); break; case 1: - usageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestStorageUsageRecord(); break; case 2: - usageRecord = TestUsageRecord.createTestJobUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestJobUsageRecord(); break; } try { diff --git a/src/test/java/org/gcube/accounting/documentstore/persistence/PersistenceBackendTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java similarity index 90% rename from src/test/java/org/gcube/accounting/documentstore/persistence/PersistenceBackendTest.java rename to src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java index 721ea58..fe9d6a7 100644 --- a/src/test/java/org/gcube/accounting/documentstore/persistence/PersistenceBackendTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceBackendTest.java @@ -9,11 +9,10 @@ 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.TestUtility; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; -import org.gcube.documentstore.exception.InvalidValueException; import org.gcube.utils.StressTestUtility; import org.gcube.utils.TestOperation; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -60,13 +59,8 @@ public class PersistenceBackendTest { StressTestUtility.stressTest(new TestOperation() { @Override public void operate(int i) { - UsageRecord usageRecord; - try { - usageRecord = TestUsageRecord.createTestServiceUsageRecordExplicitScope(); - persistence.accountValidateAggregate(usageRecord, true, false); - } catch (InvalidValueException e) { - throw new RuntimeException(e); - } + UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); + persistence.accountValidateAggregate(usageRecord, true, false); } }, 1); @@ -79,7 +73,7 @@ public class PersistenceBackendTest { StressTestUtility.stressTest(new TestOperation() { @Override public void operate(int i) { - UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); persistence.accountValidateAggregate(usageRecord, true, false); } }, 1); @@ -93,7 +87,7 @@ public class PersistenceBackendTest { StressTestUtility.stressTest(new TestOperation() { @Override public void operate(int i) { - UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); persistence.accountValidateAggregate(usageRecord, true, false); } }); @@ -106,7 +100,7 @@ public class PersistenceBackendTest { StressTestUtility.stressTest(new TestOperation() { @Override public void operate(int i) throws Exception { - UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); persistence.account(usageRecord); } }); diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java index 78f7446..6a0cf6d 100644 --- a/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java @@ -6,7 +6,6 @@ package org.gcube.documentstore.persistence; import java.net.URL; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.accounting.persistence.TestUtility; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.records.Record; import org.junit.After; diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchDBTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchDBTest.java index 504316e..f729a04 100644 --- a/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchDBTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchDBTest.java @@ -7,9 +7,9 @@ import java.net.URL; import org.codehaus.jackson.JsonNode; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.accounting.persistence.TestUtility; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.records.Record; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistenceMongoDBTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceMongoDBTest.java index ad446eb..0b6711a 100644 --- a/src/test/java/org/gcube/documentstore/persistence/PersistenceMongoDBTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceMongoDBTest.java @@ -9,7 +9,6 @@ import org.bson.Document; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.OperationType; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.accounting.persistence.TestUtility; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.records.Record; import org.junit.After; diff --git a/src/test/java/org/gcube/accounting/documentstore/records/aggregation/AggregationSchedulerTest.java b/src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java similarity index 89% rename from src/test/java/org/gcube/accounting/documentstore/records/aggregation/AggregationSchedulerTest.java rename to src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java index 5907fbe..a1623cb 100644 --- a/src/test/java/org/gcube/accounting/documentstore/records/aggregation/AggregationSchedulerTest.java +++ b/src/test/java/org/gcube/documentstore/records/aggregation/AggregationSchedulerTest.java @@ -10,13 +10,13 @@ import java.util.Map; import org.gcube.accounting.datamodel.UsageRecord; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; -import org.gcube.accounting.testutility.TestUtility; 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.gcube.utils.StressTestUtility; import org.gcube.utils.TestOperation; +import org.gcube.utils.TestUtility; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -78,12 +78,12 @@ public class AggregationSchedulerTest { StressTestUtility.stressTest(new TestOperation() { @Override public void operate(int i) throws Exception { - UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + UsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); aggregationScheduler.aggregate(usageRecord, persistenceExecutor); } }); List types = new ArrayList(); - String serviceUsageRecordtype = TestUsageRecord.createTestServiceUsageRecordAutomaticScope().getRecordType(); + String serviceUsageRecordtype = TestUsageRecord.createTestServiceUsageRecord().getRecordType(); types.add(serviceUsageRecordtype); madeAssertion(aggregationScheduler.bufferedRecords, types, 1, StressTestUtility.DEFAULT_NUMBER_OF_RECORDS); aggregationScheduler.flush(persistenceExecutor); @@ -97,7 +97,7 @@ public class AggregationSchedulerTest { StressTestUtility.stressTest(new TestOperation() { @Override public void operate(int i) throws Exception { - ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + ServiceUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); if(i%2==0){ usageRecord.setServiceClass(ALTERNATIVE_SERVICE_CLASS); } @@ -105,7 +105,7 @@ public class AggregationSchedulerTest { } }); List types = new ArrayList(); - String serviceUsageRecordtype = TestUsageRecord.createTestServiceUsageRecordAutomaticScope().getRecordType(); + String serviceUsageRecordtype = TestUsageRecord.createTestServiceUsageRecord().getRecordType(); types.add(serviceUsageRecordtype); madeAssertion(aggregationScheduler.bufferedRecords, types, 2, StressTestUtility.DEFAULT_NUMBER_OF_RECORDS/2); @@ -121,17 +121,17 @@ public class AggregationSchedulerTest { public void operate(int i) throws Exception { UsageRecord usageRecord; if(i%2==0){ - usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestServiceUsageRecord(); }else{ - usageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestStorageUsageRecord(); } aggregationScheduler.aggregate(usageRecord, persistenceExecutor); } }); List types = new ArrayList(); - String serviceUsageRecordtype = TestUsageRecord.createTestServiceUsageRecordAutomaticScope().getRecordType(); - String storageUsageRecordtype = TestUsageRecord.createTestStorageUsageRecordAutomaticScope().getRecordType(); + String serviceUsageRecordtype = TestUsageRecord.createTestServiceUsageRecord().getRecordType(); + String storageUsageRecordtype = TestUsageRecord.createTestStorageUsageRecord().getRecordType(); types.add(serviceUsageRecordtype); types.add(storageUsageRecordtype); @@ -149,16 +149,16 @@ public class AggregationSchedulerTest { UsageRecord usageRecord; switch (i%3) { case 0: - usageRecord = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestServiceUsageRecord(); break; case 1: - usageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestStorageUsageRecord(); break; case 2: - usageRecord = TestUsageRecord.createTestJobUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestJobUsageRecord(); break; default: - usageRecord = TestUsageRecord.createTestJobUsageRecordAutomaticScope(); + usageRecord = TestUsageRecord.createTestJobUsageRecord(); } aggregationScheduler.aggregate(usageRecord, persistenceExecutor); diff --git a/src/test/java/org/gcube/utils/StressTestUtility.java b/src/test/java/org/gcube/utils/StressTestUtility.java index 90d09b7..6ae4fc3 100644 --- a/src/test/java/org/gcube/utils/StressTestUtility.java +++ b/src/test/java/org/gcube/utils/StressTestUtility.java @@ -18,7 +18,7 @@ public class StressTestUtility { private static final Logger logger = LoggerFactory.getLogger(StressTestUtility.class); - protected final static int DEFAULT_NUMBER_OF_RECORDS = 3000; + public final static int DEFAULT_NUMBER_OF_RECORDS = 3000; public static void stressTest(TestOperation operation) throws Exception { stressTest(operation, DEFAULT_NUMBER_OF_RECORDS); diff --git a/src/test/java/org/gcube/utils/TestUtility.java b/src/test/java/org/gcube/utils/TestUtility.java index f8f2688..f4378df 100644 --- a/src/test/java/org/gcube/utils/TestUtility.java +++ b/src/test/java/org/gcube/utils/TestUtility.java @@ -3,6 +3,19 @@ */ package org.gcube.utils; +import java.io.StringWriter; + +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.common.resources.gcore.Resource; +import org.gcube.common.resources.gcore.Resources; +import org.gcube.informationsystem.publisher.RegistryPublisher; +import org.gcube.informationsystem.publisher.RegistryPublisherFactory; +import org.gcube.informationsystem.publisher.exception.RegistryNotFoundException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ * @@ -11,4 +24,62 @@ public class TestUtility { public static final String TOKEN = ""; + /** + * Logger + */ + private static Logger logger = LoggerFactory.getLogger(TestUtility.class); + + 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; + } + + /** + * Publish the provided resource on current scope + * @param resource to be published + * @throws RegistryNotFoundException if the Registry is not found so the + * resource has not be published + */ + public static void publishResource(Resource resource) throws Exception { + StringWriter stringWriter = new StringWriter(); + Resources.marshal(resource, stringWriter); + + RegistryPublisher registryPublisher = RegistryPublisherFactory.create(); + + try { + logger.debug("Trying to publish to {}:\n{}", getScopeFromToken(), stringWriter); + registryPublisher.create(resource); + } catch (Exception e) { + logger.error("The resource was not published", e); + throw e; + } + } + + /** + * Remove the resource from IS from curretn scope + * @param resource to be unpublished + * @throws RegistryNotFoundException if the Registry is not found so the + * resource has not be published + */ + public static void unPublishResource(Resource resource) throws Exception { + //StringWriter stringWriter = new StringWriter(); + //Resources.marshal(resource, stringWriter); + + RegistryPublisher registryPublisher = RegistryPublisherFactory.create(); + + String id = resource.id(); + logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, getScopeFromToken()); + + registryPublisher.remove(resource); + + logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id); + } + }