package org.infinispan.persistence.jdbc.configuration;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;
import java.util.Properties;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.testng.annotations.Test;
@Test(groups = "unit", testName = "persistence.jdbc.configuration.ConfigurationTest")
public class ConfigurationTest {
private static final String JDBC_URL = "jdbc:h2:mem:infinispan;DB_CLOSE_DELAY=-1";
public void testImplicitPooledConnectionFactory() {
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
.connectionPool().connectionUrl(JDBC_URL);
Configuration configuration = b.build();
JdbcStringBasedStoreConfiguration store = (JdbcStringBasedStoreConfiguration) configuration.persistence().stores().get(0);
assert store.connectionFactory() instanceof PooledConnectionFactoryConfiguration;
}
public void testImplicitManagedConnectionFactory() {
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
.dataSource().jndiUrl("java:jboss/datasources/ExampleDS");
Configuration configuration = b.build();
JdbcStringBasedStoreConfiguration store = (JdbcStringBasedStoreConfiguration) configuration.persistence().stores().get(0);
assert store.connectionFactory() instanceof ManagedConnectionFactoryConfiguration;
}
public void testJdbcStringCacheStoreConfigurationAdaptor() {
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
.connectionPool()
.connectionUrl(JDBC_URL)
.fetchPersistentState(true)
.table()
.tableNamePrefix("STRINGS_")
.idColumnName("id").idColumnType("VARCHAR")
.dataColumnName("datum").dataColumnType("BINARY")
.timestampColumnName("version").timestampColumnType("BIGINT")
.async().enable();
Configuration configuration = b.build();
JdbcStringBasedStoreConfiguration store = (JdbcStringBasedStoreConfiguration) configuration.persistence().stores().get(0);
assert store.connectionFactory() instanceof PooledConnectionFactoryConfiguration;
assert ((PooledConnectionFactoryConfiguration)store.connectionFactory()).connectionUrl().equals(JDBC_URL);
assert store.table().tableNamePrefix().equals("STRINGS_");
assert store.table().idColumnName().equals("id");
assert store.table().idColumnType().equals("VARCHAR");
assert store.table().dataColumnName().equals("datum");
assert store.table().dataColumnType().equals("BINARY");
assert store.table().timestampColumnName().equals("version");
assert store.table().timestampColumnType().equals("BIGINT");
assert store.fetchPersistentState();
assert store.async().enabled();
b = new ConfigurationBuilder();
b.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class).read(store);
Configuration configuration2 = b.build();
JdbcStringBasedStoreConfiguration store2 = (JdbcStringBasedStoreConfiguration) configuration2.persistence().stores().get(0);
assert store2.connectionFactory() instanceof PooledConnectionFactoryConfiguration;
assert ((PooledConnectionFactoryConfiguration)store2.connectionFactory()).connectionUrl().equals(JDBC_URL);
assert store2.table().tableNamePrefix().equals("STRINGS_");
assert store2.table().idColumnName().equals("id");
assert store2.table().idColumnType().equals("VARCHAR");
assert store2.table().dataColumnName().equals("datum");
assert store2.table().dataColumnType().equals("BINARY");
assert store2.table().timestampColumnName().equals("version");
assert store2.table().timestampColumnType().equals("BIGINT");
assert store2.fetchPersistentState();
assert store2.async().enabled();
}
public void testTableProperties() {
Properties props = new Properties();
props.put("createOnStart", "false");
props.put("dropOnExit", "true");
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
.connectionPool().connectionUrl(JDBC_URL)
.withProperties(props);
Configuration stringConfiguration = b.build();
JdbcStringBasedStoreConfiguration stringStoreConfiguration = (JdbcStringBasedStoreConfiguration) stringConfiguration.persistence().stores().get(0);
assertFalse(stringStoreConfiguration.table().createOnStart());
assertTrue(stringStoreConfiguration.table().dropOnExit());
}
}