package org.infinispan.persistence.jdbc.configuration;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.persistence.jdbc.DatabaseType;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
import org.infinispan.test.TestingUtil.InfinispanStartTag;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@Test(groups = "unit", testName = "persistence.jdbc.configuration.XmlFileParsingTest")
public class XmlFileParsingTest extends AbstractInfinispanTest {
protected EmbeddedCacheManager cacheManager;
@AfterMethod
public void cleanup() {
TestingUtil.killCacheManagers(cacheManager);
}
public void testStringKeyedJdbcStore() throws Exception {
String config = InfinispanStartTag.LATEST +
" <cache-container default-cache=\"default\">\n" +
" <local-cache name=\"default\">\n" +
" <persistence>\n" +
" <string-keyed-jdbc-store xmlns=\"urn:infinispan:config:store:jdbc:"+ InfinispanStartTag.LATEST.majorMinor()+"\" key-to-string-mapper=\"DummyKey2StringMapper\" shared=\"true\" " +
" preload=\"true\" read-only=\"true\" fetch-state=\"true\" purge=\"true\" singleton=\"false\" dialect=\"H2\">\n" +
" <connection-pool connection-url=\"jdbc:h2:mem:infinispan;DB_CLOSE_DELAY=-1\" username=\"dbuser\" password=\"dbpass\" driver=\"org.h2.Driver\"/>\n" +
" <string-keyed-table prefix=\"entry\" fetch-size=\"34\" batch-size=\"128\" >\n" +
" <id-column name=\"id\" type=\"VARCHAR\" />\n" +
" <data-column name=\"datum\" type=\"BINARY\" />\n" +
" <timestamp-column name=\"version\" type=\"BIGINT\" />\n" +
" </string-keyed-table>\n" +
" <write-behind />\n" +
" </string-keyed-jdbc-store>\n" +
" </persistence>\n" +
" </local-cache></cache-container>\n" +
TestingUtil.INFINISPAN_END_TAG;
InputStream is = new ByteArrayInputStream(config.getBytes());
cacheManager = TestCacheManagerFactory.fromStream(is);
assertEquals(1, cacheManager.getDefaultCacheConfiguration().persistence().stores().size());
JdbcStringBasedStoreConfiguration store = (JdbcStringBasedStoreConfiguration) cacheManager.getDefaultCacheConfiguration().persistence().stores().get(0);
assertEquals(128, store.table().batchSize());
assertEquals(34, store.table().fetchSize());
assertEquals("BINARY", store.table().dataColumnType());
assertEquals("version", store.table().timestampColumnName());
assertTrue(store.async().enabled());
assertEquals("DummyKey2StringMapper", store.key2StringMapper());
assertTrue(store.shared());
assertTrue(store.preload());
assertEquals(DatabaseType.H2, store.dialect());
PooledConnectionFactoryConfiguration connectionFactory = (PooledConnectionFactoryConfiguration) store.connectionFactory();
assertEquals("jdbc:h2:mem:infinispan;DB_CLOSE_DELAY=-1", connectionFactory.connectionUrl());
assertEquals("org.h2.Driver", connectionFactory.driverClass());
assertEquals("dbuser", connectionFactory.username());
assertEquals("dbpass", connectionFactory.password());
assertTrue(store.ignoreModifications());
assertTrue(store.fetchPersistentState());
assertTrue(store.purgeOnStartup());
assertFalse(store.singletonStore().enabled());
}
}