From cdceacdce8d1cb318795e50f12600b35db45af0c Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 6 Jul 2015 16:10:20 +0000 Subject: [PATCH] refs #200: Create accouting-lib library https://support.d4science.org/issues/200 Fixing tests git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@117044 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../persistence/PersistenceFactory.java | 23 ++++++++++--------- .../persistence/PersistenceTest.java | 19 +++++++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/gcube/accounting/persistence/PersistenceFactory.java b/src/main/java/org/gcube/accounting/persistence/PersistenceFactory.java index dc766ad..bea8602 100644 --- a/src/main/java/org/gcube/accounting/persistence/PersistenceFactory.java +++ b/src/main/java/org/gcube/accounting/persistence/PersistenceFactory.java @@ -59,23 +59,24 @@ public abstract class PersistenceFactory { } } - public static Persistence getPersistence(){ + public static Persistence getPersistence() { String scope = ScopeProvider.instance.get(); + if(scope==null){ + logger.error("No Scope available. FallbackPersistence will be used"); + File fallbackFile = new File(fallbackLocation, ACCOUTING_FALLBACK_FILENAME); + return new FallbackPersistence(fallbackFile); + } Persistence persistence = persistences.get(scope); if(persistence==null){ - String name = ""; - if(scope!=null){ - ScopeBean bean = new ScopeBean(scope); - if(bean.is(Type.VRE)){ - bean = bean.enclosingScope(); - } - name = bean.name(); + ScopeBean bean = new ScopeBean(scope); + if(bean.is(Type.VRE)){ + bean = bean.enclosingScope(); } - String separator = name.compareTo("")==0 ? "" : "."; + String name = bean.name(); - File fallbackFile = new File(fallbackLocation, String.format("%s%s%s", name, separator ,ACCOUTING_FALLBACK_FILENAME)); + File fallbackFile = new File(fallbackLocation, String.format("%s.%s", name, ACCOUTING_FALLBACK_FILENAME)); FallbackPersistence fallbackPersistence = new FallbackPersistence(fallbackFile); try { ServiceLoader serviceLoader = ServiceLoader.load(Persistence.class); @@ -99,7 +100,6 @@ public abstract class PersistenceFactory { break; } catch (Exception e) { logger.debug(String.format("%s not initialized correctly. It will not be used", foundPersistence.getClass().getSimpleName())); - } } if(persistence==null){ @@ -112,6 +112,7 @@ public abstract class PersistenceFactory { } persistence.setAggregationScheduler(AggregationScheduler.getInstance()); persistence.setFallback(fallbackPersistence); + persistences.put(scope, persistence); } return persistence; diff --git a/src/test/java/org/gcube/accounting/persistence/PersistenceTest.java b/src/test/java/org/gcube/accounting/persistence/PersistenceTest.java index d8da505..d916325 100644 --- a/src/test/java/org/gcube/accounting/persistence/PersistenceTest.java +++ b/src/test/java/org/gcube/accounting/persistence/PersistenceTest.java @@ -7,6 +7,8 @@ import org.gcube.accounting.datamodel.SingleUsageRecord; 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.junit.Assert; import org.junit.Test; /** @@ -16,10 +18,27 @@ import org.junit.Test; public class PersistenceTest { public static Persistence getPersistence(){ + ScopeProvider.instance.set(PersistenceConfigurationTest.GCUBE_DEVNEXT_SCOPE); PersistenceFactory.setFallbackLocation(null); return PersistenceFactory.getPersistence(); } + @Test + public void singleTestNoScope() throws Exception { + PersistenceFactory.setFallbackLocation(null); + final Persistence persistence = PersistenceFactory.getPersistence(); + Assert.assertTrue(persistence instanceof FallbackPersistence); + StressTestUtility.stressTest(new TestOperation() { + @Override + public void operate(int i) { + SingleUsageRecord usageRecord = TestUsageRecord.createTestServiceUsageRecord(); + persistence.validateAccountAggregate(usageRecord, true, false); + } + }, 1); + + persistence.flush(); + } + @Test public void singleTest() throws Exception { final Persistence persistence = getPersistence();