/*
* JBoss, Home of Professional Open Source
* Copyright 2009 Red Hat Inc. and/or its affiliates and other
* contributors as indicated by the @author tags. All rights reserved.
* See the copyright.txt in the distribution for a full listing of
* individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.infinispan.loaders.jdbc.mixed;
import org.infinispan.loaders.LockSupportCacheStoreConfig;
import org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* Tester class for {@link JdbcMixedCacheStoreConfig}.
*
* @author Mircea.Markus@jboss.com
*/
@Test(groups = "unit", testName = "loaders.jdbc.mixed.JdbcMixedCacheStoreConfigTest")
public class JdbcMixedCacheStoreConfigTest {
private JdbcMixedCacheStoreConfig config;
@BeforeMethod
public void createConfig() {
config = new JdbcMixedCacheStoreConfig();
}
/**
* Just take some random props and check their correctness.
*/
public void simpleTest() {
config = new JdbcMixedCacheStoreConfig();
config.setConnectionUrl("url");
config.setCreateTableOnStartForBinary(false);
config.setCreateTableOnStartForStrings(true);
config.setDataColumnNameForBinary("binary_dc");
config.setDataColumnNameForStrings("strings_dc");
config.setDataColumnTypeForBinary("binary_dct");
config.setDataColumnTypeForStrings("strings_dct");
config.setDriverClass("driver");
//some checks
assert !config.getBinaryCacheStoreConfig().getTableManipulation().isCreateTableOnStart();
assert config.getStringCacheStoreConfig().getTableManipulation().isCreateTableOnStart();
assert config.getConnectionFactoryConfig().getDriverClass().equals("driver");
assert config.getBinaryCacheStoreConfig().getTableManipulation().getDataColumnName().equals("binary_dc");
assert config.getBinaryCacheStoreConfig().getTableManipulation().getDataColumnType().equals("binary_dct");
assert config.getStringCacheStoreConfig().getTableManipulation().getDataColumnName().equals("strings_dc");
assert config.getStringCacheStoreConfig().getTableManipulation().getDataColumnType().equals("strings_dct");
}
public void testSameTableName() {
config.setTableNamePrefixForBinary("table");
try {
config.setTableNamePrefixForStrings("table");
assert false : "exception expected as same table name is not allowed for both cache stores";
} catch (Exception e) {
//expected
}
//and the other way around
config.setTableNamePrefixForStrings("table2");
try {
config.setTableNamePrefixForBinary("table2");
assert false : "exception expected as same table name is not allowed for both cache stores";
} catch (Exception e) {
//expected
}
}
public void testKey2StringMapper() {
config.setKey2StringMapperClass(DefaultTwoWayKey2StringMapper.class.getName());
assert config.getStringCacheStoreConfig().getKey2StringMapper().getClass().equals(DefaultTwoWayKey2StringMapper.class);
}
public void testConcurrencyLevel() {
assert config.getStringCacheStoreConfig().getLockConcurrencyLevel() == LockSupportCacheStoreConfig.DEFAULT_CONCURRENCY_LEVEL / 2;
assert config.getBinaryCacheStoreConfig().getLockConcurrencyLevel() == LockSupportCacheStoreConfig.DEFAULT_CONCURRENCY_LEVEL / 2;
config.setLockConcurrencyLevelForStrings(11);
config.setLockConcurrencyLevelForBinary(12);
assert config.getStringCacheStoreConfig().getLockConcurrencyLevel() == 11;
assert config.getBinaryCacheStoreConfig().getLockConcurrencyLevel() == 12;
}
public void testEnforcedSyncPurging() {
assert config.getBinaryCacheStoreConfig().isPurgeSynchronously();
assert config.getStringCacheStoreConfig().isPurgeSynchronously();
}
public void voidTestLockAcquisitionTimeout() {
assert config.getStringCacheStoreConfig().getLockAcquistionTimeout() == LockSupportCacheStoreConfig.DEFAULT_LOCK_ACQUISITION_TIMEOUT;
assert config.getBinaryCacheStoreConfig().getLockAcquistionTimeout() == LockSupportCacheStoreConfig.DEFAULT_LOCK_ACQUISITION_TIMEOUT;
config.setLockAcquistionTimeout(13);
assert config.getStringCacheStoreConfig().getLockAcquistionTimeout() == 13;
assert config.getBinaryCacheStoreConfig().getLockAcquistionTimeout() == 13;
}
}