From 7301fd10c06ea68f5b14de93d83f8b117dbda154 Mon Sep 17 00:00:00 2001 From: "Carlos A. Munoz" Date: Mon, 15 Sep 2014 15:47:32 +1000 Subject: [PATCH] Configure Arquillian integration tests to use Infinispan. Configuration is kept to in-memory at all times, since persistence should not be needed for integration tests. --- .../service/impl/VersionStateCacheImpl.java | 6 ++++- .../src/test/java/org/zanata/RestTest.java | 9 ++++++-- .../cache/InfinispanTestCacheContainer.java | 19 ++++++++++++---- .../ProjectIterationCompatibilityITCase.java | 3 +++ ...rojectIterationRawCompatibilityITCase.java | 3 +++ .../compat/ProjectRawCompatibilityITCase.java | 3 +++ .../TranslationsRawCompatibilityITCase.java | 2 +- .../compat/VersionCompatibilityITCase.java | 5 +++++ .../impl/VersionStateCacheImplTest.java | 9 +++++--- .../test/resources/arquillian/persistence.xml | 7 +++--- .../test/resources/arquillian/standalone.xml | 22 +++++++++++++++++++ 11 files changed, 74 insertions(+), 14 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java index a64ac1f4c3..972260a725 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/VersionStateCacheImpl.java @@ -60,7 +60,6 @@ public class VersionStateCacheImpl implements VersionStateCache { private CacheWrapper versionStatisticCache; private CacheLoader versionStatisticLoader; - @In private CacheContainer cacheContainer; @In @@ -127,6 +126,11 @@ public void clearVersionStatsCache(Long versionId) { } } + @In + public void setCacheContainer(CacheContainer cacheContainer) { + this.cacheContainer = cacheContainer; + } + private static class VersionStatisticLoader extends CacheLoader { diff --git a/zanata-war/src/test/java/org/zanata/RestTest.java b/zanata-war/src/test/java/org/zanata/RestTest.java index f680f8714e..41b0504d22 100644 --- a/zanata-war/src/test/java/org/zanata/RestTest.java +++ b/zanata-war/src/test/java/org/zanata/RestTest.java @@ -32,10 +32,10 @@ import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.ext.h2.H2DataTypeFactory; +import org.dbunit.operation.DatabaseOperation; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.resteasy.client.ClientRequest; -import org.jboss.resteasy.client.ProxyFactory; import org.jboss.seam.util.Naming; import org.junit.After; import org.junit.Before; @@ -46,7 +46,6 @@ import org.zanata.rest.ResourceRequestEnvironment; import org.zanata.rest.client.ZanataProxyFactory; import org.zanata.rest.dto.VersionInfo; -import org.zanata.rest.helper.RemoteTestSignaler; /** * Provides basic test utilities to test raw REST APIs and compatibility. @@ -112,7 +111,13 @@ protected IDatabaseConnection getConnection() { */ @RemoteBefore public void prepareDataBeforeTest() { + addBeforeTestOperation(new DBUnitProvider.DataSetOperation( + "org/zanata/test/model/ClearAllTables.dbunit.xml", + DatabaseOperation.DELETE_ALL)); prepareDBUnitOperations(); + addAfterTestOperation(new DBUnitProvider.DataSetOperation( + "org/zanata/test/model/ClearAllTables.dbunit.xml", + DatabaseOperation.DELETE_ALL)); dbUnitProvider.prepareDataBeforeTest(); } diff --git a/zanata-war/src/test/java/org/zanata/cache/InfinispanTestCacheContainer.java b/zanata-war/src/test/java/org/zanata/cache/InfinispanTestCacheContainer.java index 68ea4e1f2a..931f5b8f8a 100644 --- a/zanata-war/src/test/java/org/zanata/cache/InfinispanTestCacheContainer.java +++ b/zanata-war/src/test/java/org/zanata/cache/InfinispanTestCacheContainer.java @@ -21,6 +21,8 @@ package org.zanata.cache; import lombok.Delegate; +import org.infinispan.configuration.global.GlobalConfiguration; +import org.infinispan.configuration.global.GlobalConfigurationBuilder; import org.infinispan.lifecycle.Lifecycle; import org.infinispan.manager.CacheContainer; import org.infinispan.manager.DefaultCacheManager; @@ -35,13 +37,11 @@ public class InfinispanTestCacheContainer implements CacheContainer { @Delegate(types = CacheContainer.class, excludes = Lifecycle.class) private DefaultCacheManager delegate; - public InfinispanTestCacheContainer() { - } - @Override public void start() { stop(); - this.delegate = new DefaultCacheManager(); + this.delegate = + new DefaultCacheManager(getCacheManagerGlobalConfiguration()); this.delegate.start(); } @@ -51,4 +51,15 @@ public void stop() { delegate.stop(); } } + + private GlobalConfiguration getCacheManagerGlobalConfiguration() { + /* This allows multiple concurrent tests to run. + See https://issues.jboss.org/browse/ISPN-2886 for the exception that + is thrown when this is not used. + */ + return new GlobalConfigurationBuilder() + .globalJmxStatistics() + .allowDuplicateDomains(true) + .build(); + } } diff --git a/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationCompatibilityITCase.java b/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationCompatibilityITCase.java index 866e42ad24..5188ced07c 100644 --- a/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationCompatibilityITCase.java +++ b/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationCompatibilityITCase.java @@ -38,6 +38,9 @@ public class ProjectIterationCompatibilityITCase extends RestTest { @Override protected void prepareDBUnitOperations() { + addBeforeTestOperation(new DataSetOperation( + "org/zanata/test/model/AccountData.dbunit.xml", + DatabaseOperation.CLEAN_INSERT)); addBeforeTestOperation(new DataSetOperation( "org/zanata/test/model/ProjectsData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)); diff --git a/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationRawCompatibilityITCase.java b/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationRawCompatibilityITCase.java index 211c848426..93ba249ec5 100644 --- a/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationRawCompatibilityITCase.java +++ b/zanata-war/src/test/java/org/zanata/rest/compat/ProjectIterationRawCompatibilityITCase.java @@ -45,6 +45,9 @@ public class ProjectIterationRawCompatibilityITCase extends RestTest { @Override protected void prepareDBUnitOperations() { + addBeforeTestOperation(new DataSetOperation( + "org/zanata/test/model/AccountData.dbunit.xml", + DatabaseOperation.CLEAN_INSERT)); addBeforeTestOperation(new DataSetOperation( "org/zanata/test/model/ProjectsData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)); diff --git a/zanata-war/src/test/java/org/zanata/rest/compat/ProjectRawCompatibilityITCase.java b/zanata-war/src/test/java/org/zanata/rest/compat/ProjectRawCompatibilityITCase.java index 424a758c21..12c454c59a 100644 --- a/zanata-war/src/test/java/org/zanata/rest/compat/ProjectRawCompatibilityITCase.java +++ b/zanata-war/src/test/java/org/zanata/rest/compat/ProjectRawCompatibilityITCase.java @@ -66,6 +66,9 @@ public class ProjectRawCompatibilityITCase extends RestTest { @Override protected void prepareDBUnitOperations() { + addBeforeTestOperation(new DataSetOperation( + "org/zanata/test/model/AccountData.dbunit.xml", + DatabaseOperation.CLEAN_INSERT)); addBeforeTestOperation(new DataSetOperation( "org/zanata/test/model/ProjectsData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)); diff --git a/zanata-war/src/test/java/org/zanata/rest/compat/TranslationsRawCompatibilityITCase.java b/zanata-war/src/test/java/org/zanata/rest/compat/TranslationsRawCompatibilityITCase.java index 08aef7dc30..15da05c448 100644 --- a/zanata-war/src/test/java/org/zanata/rest/compat/TranslationsRawCompatibilityITCase.java +++ b/zanata-war/src/test/java/org/zanata/rest/compat/TranslationsRawCompatibilityITCase.java @@ -76,7 +76,7 @@ protected void prepareDBUnitOperations() { DatabaseOperation.CLEAN_INSERT)); addAfterTestOperation(new DataSetOperation( - "org/zanata/test/model/HistoryTestData.dbunit.xml", + "org/zanata/test/model/ClearAllTables.dbunit.xml", DatabaseOperation.DELETE_ALL)); } diff --git a/zanata-war/src/test/java/org/zanata/rest/compat/VersionCompatibilityITCase.java b/zanata-war/src/test/java/org/zanata/rest/compat/VersionCompatibilityITCase.java index 4dc471529f..d6914a042b 100644 --- a/zanata-war/src/test/java/org/zanata/rest/compat/VersionCompatibilityITCase.java +++ b/zanata-war/src/test/java/org/zanata/rest/compat/VersionCompatibilityITCase.java @@ -20,11 +20,13 @@ */ package org.zanata.rest.compat; +import org.dbunit.operation.DatabaseOperation; import org.jboss.arquillian.container.test.api.RunAsClient; import org.junit.Test; import org.zanata.RestTest; import org.zanata.apicompat.rest.client.IVersionResource; import org.zanata.apicompat.rest.dto.VersionInfo; +import org.zanata.provider.DBUnitProvider; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.notNullValue; @@ -33,6 +35,9 @@ public class VersionCompatibilityITCase extends RestTest { @Override protected void prepareDBUnitOperations() { + addBeforeTestOperation(new DBUnitProvider.DataSetOperation( + "org/zanata/test/model/AccountData.dbunit.xml", + DatabaseOperation.CLEAN_INSERT)); } @Test diff --git a/zanata-war/src/test/java/org/zanata/service/impl/VersionStateCacheImplTest.java b/zanata-war/src/test/java/org/zanata/service/impl/VersionStateCacheImplTest.java index bde0d9c56c..6d4f8df3fa 100644 --- a/zanata-war/src/test/java/org/zanata/service/impl/VersionStateCacheImplTest.java +++ b/zanata-war/src/test/java/org/zanata/service/impl/VersionStateCacheImplTest.java @@ -5,11 +5,13 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import org.infinispan.manager.CacheContainer; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import org.zanata.cache.InfinispanTestCacheContainer; import org.zanata.common.LocaleId; import org.zanata.service.VersionLocaleKey; import org.zanata.ui.model.statistic.WordStatistic; @@ -26,14 +28,15 @@ public class VersionStateCacheImplTest { @Mock private CacheLoader versionStatisticLoader; + private final CacheContainer cacheContainer = + new InfinispanTestCacheContainer(); @BeforeMethod public void beforeMethod() { MockitoAnnotations.initMocks(this); cache = new VersionStateCacheImpl(versionStatisticLoader); - - cache.create(); - cache.destroy(); + cacheContainer.start(); + cache.setCacheContainer(cacheContainer); cache.create(); } diff --git a/zanata-war/src/test/resources/arquillian/persistence.xml b/zanata-war/src/test/resources/arquillian/persistence.xml index f5743cf7cb..86481e7d53 100755 --- a/zanata-war/src/test/resources/arquillian/persistence.xml +++ b/zanata-war/src/test/resources/arquillian/persistence.xml @@ -83,9 +83,10 @@ - + value="infinispan" /> + + diff --git a/zanata-war/src/test/resources/arquillian/standalone.xml b/zanata-war/src/test/resources/arquillian/standalone.xml index fe9c451cf6..961383a0ef 100644 --- a/zanata-war/src/test/resources/arquillian/standalone.xml +++ b/zanata-war/src/test/resources/arquillian/standalone.xml @@ -175,6 +175,7 @@ @@ -191,6 +192,27 @@ + + + + + + + + + + + + + +