PageRenderTime 51ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/spring/src/test/java/org/infinispan/spring/support/embedded/InfinispanNamedEmbeddedCacheFactoryBeanTest.java

https://bitbucket.org/cprenzberg/infinispan
Java | 286 lines | 159 code | 35 blank | 92 comment | 2 complexity | 7aee98bb69f61bcff7dbcc061c24afc0 MD5 | raw file
  1. /**
  2. * JBoss, Home of Professional Open Source
  3. * Copyright 2009 Red Hat Inc. and/or its affiliates and other
  4. * contributors as indicated by the @author tags. All rights reserved.
  5. * See the copyright.txt in the distribution for a full listing of
  6. * individual contributors.
  7. *
  8. * This is free software; you can redistribute it and/or modify it
  9. * under the terms of the GNU Lesser General Public License as
  10. * published by the Free Software Foundation; either version 2.1 of
  11. * the License, or (at your option) any later version.
  12. * ~
  13. * This software is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * Lesser General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public
  19. * License along with this software; if not, write to the Free
  20. * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  21. * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  22. */
  23. package org.infinispan.spring.support.embedded;
  24. import static org.testng.AssertJUnit.assertEquals;
  25. import static org.testng.AssertJUnit.assertNotNull;
  26. import static org.testng.AssertJUnit.assertTrue;
  27. import java.io.IOException;
  28. import java.io.InputStream;
  29. import org.infinispan.Cache;
  30. import org.infinispan.lifecycle.ComponentStatus;
  31. import org.infinispan.manager.EmbeddedCacheManager;
  32. import org.infinispan.test.fwk.TestCacheManagerFactory;
  33. import org.springframework.core.io.ClassPathResource;
  34. import org.testng.annotations.AfterClass;
  35. import org.testng.annotations.BeforeClass;
  36. import org.testng.annotations.Test;
  37. /**
  38. * <p>
  39. * Test {@link InfinispanNamedEmbeddedCacheFactoryBean}.
  40. * </p>
  41. *
  42. * @author <a href="mailto:olaf DOT bergner AT gmx DOT de">Olaf Bergner</a>
  43. *
  44. */
  45. @Test(testName = "spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBeanTest", groups = "unit")
  46. public class InfinispanNamedEmbeddedCacheFactoryBeanTest {
  47. private static final String CACHE_NAME_FROM_CONFIGURATION_FILE = "asyncCache";
  48. private static final ClassPathResource NAMED_ASYNC_CACHE_CONFIG_LOCATION = new ClassPathResource(
  49. "named-async-cache.xml", InfinispanNamedEmbeddedCacheFactoryBeanTest.class);
  50. private static final EmbeddedCacheManager DEFAULT_CACHE_MANAGER = TestCacheManagerFactory.createCacheManager();
  51. private static final EmbeddedCacheManager PRECONFIGURED_DEFAULT_CACHE_MANAGER;
  52. static {
  53. InputStream configStream = null;
  54. try {
  55. configStream = NAMED_ASYNC_CACHE_CONFIG_LOCATION.getInputStream();
  56. PRECONFIGURED_DEFAULT_CACHE_MANAGER = TestCacheManagerFactory.fromStream(configStream);
  57. } catch (final IOException e) {
  58. throw new ExceptionInInitializerError(e);
  59. } finally {
  60. if (configStream != null) {
  61. try {
  62. configStream.close();
  63. } catch (final IOException e) {
  64. // Ignore
  65. }
  66. }
  67. }
  68. }
  69. @BeforeClass
  70. public static void startCacheManagers() {
  71. DEFAULT_CACHE_MANAGER.start();
  72. PRECONFIGURED_DEFAULT_CACHE_MANAGER.start();
  73. }
  74. @AfterClass(alwaysRun = true)
  75. public static void stopCacheManagers() {
  76. PRECONFIGURED_DEFAULT_CACHE_MANAGER.stop();
  77. DEFAULT_CACHE_MANAGER.stop();
  78. }
  79. /**
  80. * Test method for
  81. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#afterPropertiesSet()}
  82. * .
  83. *
  84. * @throws Exception
  85. */
  86. @Test(expectedExceptions = IllegalStateException.class)
  87. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldRecognizeThatNoCacheContainerHasBeenSet()
  88. throws Exception {
  89. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  90. objectUnderTest.setCacheName("test.cache.Name");
  91. objectUnderTest.setBeanName("test.bean.Name");
  92. objectUnderTest.afterPropertiesSet();
  93. }
  94. /**
  95. * Test method for
  96. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#setBeanName(java.lang.String)}
  97. * .
  98. *
  99. * @throws Exception
  100. */
  101. @Test
  102. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldUseBeanNameAsCacheNameIfNoCacheNameHasBeenSet()
  103. throws Exception {
  104. final String beanName = "test.bean.Name";
  105. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  106. objectUnderTest.setInfinispanEmbeddedCacheManager(DEFAULT_CACHE_MANAGER);
  107. objectUnderTest.setBeanName(beanName);
  108. objectUnderTest.afterPropertiesSet();
  109. final Cache<Object, Object> cache = objectUnderTest.getObject();
  110. assertEquals("InfinispanNamedEmbeddedCacheFactoryBean should have used its bean name ["
  111. + beanName + "] as the name of the created cache. However, it didn't.", beanName,
  112. cache.getName());
  113. objectUnderTest.destroy();
  114. }
  115. /**
  116. * Test method for
  117. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#setCacheName(java.lang.String)}
  118. * .
  119. *
  120. * @throws Exception
  121. */
  122. @Test
  123. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldPreferExplicitCacheNameToBeanName()
  124. throws Exception {
  125. final String cacheName = "test.cache.Name";
  126. final String beanName = "test.bean.Name";
  127. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  128. objectUnderTest.setInfinispanEmbeddedCacheManager(DEFAULT_CACHE_MANAGER);
  129. objectUnderTest.setCacheName(cacheName);
  130. objectUnderTest.setBeanName(beanName);
  131. objectUnderTest.afterPropertiesSet();
  132. final Cache<Object, Object> cache = objectUnderTest.getObject();
  133. assertEquals("InfinispanNamedEmbeddedCacheFactoryBean should have preferred its cache name ["
  134. + cacheName + "] as the name of the created cache. However, it didn't.", cacheName,
  135. cache.getName());
  136. objectUnderTest.destroy();
  137. }
  138. /**
  139. * Test method for
  140. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#getObjectType()}
  141. * .
  142. *
  143. * @throws Exception
  144. */
  145. @Test
  146. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldReportTheMostDerivedObjectType()
  147. throws Exception {
  148. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  149. objectUnderTest.setInfinispanEmbeddedCacheManager(DEFAULT_CACHE_MANAGER);
  150. objectUnderTest.setBeanName("test.bean.Name");
  151. objectUnderTest.afterPropertiesSet();
  152. assertEquals(
  153. "getObjectType() should have returned the most derived class of the actual Cache "
  154. + "implementation returned from getObject(). However, it didn't.",
  155. objectUnderTest.getObject().getClass(), objectUnderTest.getObjectType());
  156. objectUnderTest.destroy();
  157. }
  158. /**
  159. * Test method for
  160. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#getObject()}
  161. * .
  162. *
  163. * @throws Exception
  164. */
  165. @Test
  166. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldProduceANonNullInfinispanCache()
  167. throws Exception {
  168. final String cacheName = "test.cache.Name";
  169. final String beanName = "test.bean.Name";
  170. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  171. objectUnderTest.setInfinispanEmbeddedCacheManager(DEFAULT_CACHE_MANAGER);
  172. objectUnderTest.setCacheName(cacheName);
  173. objectUnderTest.setBeanName(beanName);
  174. objectUnderTest.afterPropertiesSet();
  175. final Cache<Object, Object> cache = objectUnderTest.getObject();
  176. assertNotNull(
  177. "InfinispanNamedEmbeddedCacheFactoryBean should have produced a proper Infinispan cache. "
  178. + "However, it produced a null Infinispan cache.", cache);
  179. objectUnderTest.destroy();
  180. }
  181. /**
  182. * Test method for
  183. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#isSingleton()}
  184. * .
  185. */
  186. @Test
  187. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldDeclareItselfToBeSingleton() {
  188. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  189. assertTrue(
  190. "InfinispanNamedEmbeddedCacheFactoryBean should declare itself to produce a singleton. However, it didn't.",
  191. objectUnderTest.isSingleton());
  192. }
  193. /**
  194. * Test method for
  195. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#destroy()}
  196. * .
  197. *
  198. * @throws Exception
  199. */
  200. @Test
  201. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldStopTheCreatedInfinispanCacheWhenItIsDestroyed()
  202. throws Exception {
  203. final String cacheName = "test.cache.Name";
  204. final String beanName = "test.bean.Name";
  205. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  206. objectUnderTest.setInfinispanEmbeddedCacheManager(DEFAULT_CACHE_MANAGER);
  207. objectUnderTest.setCacheName(cacheName);
  208. objectUnderTest.setBeanName(beanName);
  209. objectUnderTest.afterPropertiesSet();
  210. final Cache<Object, Object> cache = objectUnderTest.getObject();
  211. objectUnderTest.destroy();
  212. assertEquals(
  213. "InfinispanNamedEmbeddedCacheFactoryBean should have stopped the created Infinispan cache when being destroyed. "
  214. + "However, the created Infinispan is not yet terminated.",
  215. ComponentStatus.TERMINATED, cache.getStatus());
  216. }
  217. /**
  218. * Test method for
  219. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#afterPropertiesSet()}
  220. * .
  221. *
  222. * @throws Exception
  223. */
  224. @Test(expectedExceptions = IllegalStateException.class)
  225. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldRejectConfigurationTemplateModeNONEIfCacheConfigurationAlreadyExistsInConfigurationFile()
  226. throws Exception {
  227. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  228. objectUnderTest.setInfinispanEmbeddedCacheManager(PRECONFIGURED_DEFAULT_CACHE_MANAGER);
  229. objectUnderTest.setCacheName(CACHE_NAME_FROM_CONFIGURATION_FILE);
  230. objectUnderTest.setBeanName(CACHE_NAME_FROM_CONFIGURATION_FILE);
  231. objectUnderTest.setConfigurationTemplateMode("NONE");
  232. objectUnderTest.afterPropertiesSet();
  233. }
  234. /**
  235. * Test method for
  236. * {@link org.infinispan.spring.support.embedded.InfinispanNamedEmbeddedCacheFactoryBean#afterPropertiesSet()}
  237. * .
  238. *
  239. * @throws Exception
  240. */
  241. @Test(expectedExceptions = IllegalStateException.class)
  242. public final void infinispanNamedEmbeddedCacheFactoryBeanShouldRejectConfigurationTemplateModeDEFAULTIfCacheConfigurationAlreadyExistsInConfigurationFile()
  243. throws Exception {
  244. final InfinispanNamedEmbeddedCacheFactoryBean<Object, Object> objectUnderTest = new InfinispanNamedEmbeddedCacheFactoryBean<Object, Object>();
  245. objectUnderTest.setInfinispanEmbeddedCacheManager(PRECONFIGURED_DEFAULT_CACHE_MANAGER);
  246. objectUnderTest.setCacheName(CACHE_NAME_FROM_CONFIGURATION_FILE);
  247. objectUnderTest.setBeanName(CACHE_NAME_FROM_CONFIGURATION_FILE);
  248. objectUnderTest.setConfigurationTemplateMode("DEFAULT");
  249. objectUnderTest.afterPropertiesSet();
  250. }
  251. }