private EmbeddedCacheManager createCacheManager(int nodeIndex) throws Exception { InputStream is = FileLookupFactory.newInstance().lookupFileStrict("async-jdbc-store-config.xml", Thread.currentThread().getContextClassLoader()); ParserRegistry parserRegistry = new ParserRegistry(Thread.currentThread().getContextClassLoader()); ConfigurationBuilderHolder holder = parserRegistry.parse(is); is.close(); for (ConfigurationBuilder builder : holder.getNamedConfigurationBuilders().values()) { for (StoreConfigurationBuilder storeBuilder : builder.persistence().stores()) { if (storeBuilder instanceof AbstractJdbcStoreConfigurationBuilder) { AbstractJdbcStoreConfigurationBuilder jdbcStoreBuilder = (AbstractJdbcStoreConfigurationBuilder) storeBuilder; jdbcStoreBuilder.simpleConnection() .driverClass("org.h2.Driver") .connectionUrl("jdbc:h2:mem:infinispan_string_based_" + nodeIndex + ";DB_CLOSE_DELAY=-1") .username("sa"); } } } return TestCacheManagerFactory.createClusteredCacheManager(holder); }
private ConfigurationBuilder configureCacheLoader(ConfigurationBuilder base, boolean purge) { ConfigurationBuilder cfg = base == null ? new ConfigurationBuilder() : base; cfg.transaction().transactionMode(TransactionMode.TRANSACTIONAL); createCacheStoreConfig(cfg.persistence(), false); cfg.persistence().stores().get(0).purgeOnStartup(purge); return cfg; }
@Override protected EmbeddedCacheManager createCacheManager(ConfigurationBuilder builder) { extraManager = TestCacheManagerFactory.createClusteredCacheManager(builder); // Inject our time service into the new CacheManager as well TestingUtil.replaceComponent(extraManager, TimeService.class, timeService, true); extraCache = extraManager.getCache(); SingleFileStoreConfigurationBuilder sfsBuilder = (SingleFileStoreConfigurationBuilder) builder.persistence().stores().get(0); // Make sure each cache writes to a different location sfsBuilder.location(TestingUtil.tmpDirectory(this.getClass().getSimpleName() + "2")); EmbeddedCacheManager returned = TestCacheManagerFactory.createClusteredCacheManager(builder); // Unfortunately we can't reinject timeservice once a cache has been started, thus we have to inject // here as well, since we need the cache to verify the cluster was formed TestingUtil.replaceComponent(returned, TimeService.class, timeService, true); Cache<Object, Object> checkCache = returned.getCache(); TestingUtil.blockUntilViewReceived(checkCache, 2, TimeUnit.SECONDS.toMillis(10)); return returned; } }