/*
* Copyright 2001-2013 Terracotta, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
package org.quartz.utils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.hamcrest.CoreMatchers;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
import org.quartz.integrations.tests.JdbcQuartzDerbyUtilities;
import org.quartz.integrations.tests.QuartzDatabaseTestSupport;
import java.util.Properties;
/**
* A integration test to ensure PoolConnectionProvider is working properly.
*/
public class PoolingConnectionProviderTest extends QuartzDatabaseTestSupport {
boolean testConnectionProviderClass = false;
@Test
public void testC3p0PoolProviderWithExtraProps() throws Exception {
validateC3p0PoolProviderClassWithExtraProps();
// Turn flag on for next test.
testConnectionProviderClass = true;
}
@Test
public void testC3p0PoolProviderClassWithExtraProps() throws Exception {
validateC3p0PoolProviderClassWithExtraProps();
// Turn flag off for next test.
testConnectionProviderClass = false;
}
private void validateC3p0PoolProviderClassWithExtraProps() throws Exception {
DBConnectionManager dbManager = DBConnectionManager.getInstance();
ConnectionProvider provider = dbManager.getConnectionProvider("myDS");
ComboPooledDataSource ds = ((PoolingConnectionProvider)provider).getDataSource();
Assert.assertThat(ds.getDriverClass(), Matchers.is("org.apache.derby.jdbc.ClientDriver"));
Assert.assertThat(ds.getJdbcUrl(), Matchers.is(JdbcQuartzDerbyUtilities.DATABASE_CONNECTION_PREFIX));
Assert.assertThat(ds.getUser(), Matchers.is("quartz"));
Assert.assertThat(ds.getPassword(), Matchers.is("quartz"));
Assert.assertThat(ds.getMaxPoolSize(), Matchers.is(5));
Assert.assertThat(ds.getMinPoolSize(), Matchers.is(5));
Assert.assertThat(ds.getAcquireIncrement(), Matchers.is(5));
Assert.assertThat(ds.getAcquireRetryAttempts(), Matchers.is(3));
Assert.assertThat(ds.getAcquireRetryDelay(), Matchers.is(3000));
}
@Override
protected Properties createSchedulerProperties() {
Properties properties = new Properties();
properties.put("org.quartz.scheduler.instanceName","TestScheduler");
properties.put("org.quartz.scheduler.instanceId","AUTO");
properties.put("org.quartz.scheduler.skipUpdateCheck","true");
properties.put("org.quartz.threadPool.class","org.quartz.simpl.SimpleThreadPool");
properties.put("org.quartz.threadPool.threadCount","12");
properties.put("org.quartz.threadPool.threadPriority","5");
properties.put("org.quartz.jobStore.misfireThreshold","10000");
properties.put("org.quartz.jobStore.class","org.quartz.impl.jdbcjobstore.JobStoreTX");
properties.put("org.quartz.jobStore.driverDelegateClass","org.quartz.impl.jdbcjobstore.StdJDBCDelegate");
properties.put("org.quartz.jobStore.useProperties","true");
properties.put("org.quartz.jobStore.dataSource","myDS");
properties.put("org.quartz.jobStore.tablePrefix","QRTZ_");
properties.put("org.quartz.jobStore.isClustered", "false");
if (testConnectionProviderClass)
properties.put("org.quartz.dataSource.myDS.connectionProvider.class", "org.quartz.utils.PoolingConnectionProvider");
properties.put("org.quartz.dataSource.myDS.driver", "org.apache.derby.jdbc.ClientDriver");
properties.put("org.quartz.dataSource.myDS.URL",JdbcQuartzDerbyUtilities.DATABASE_CONNECTION_PREFIX);
properties.put("org.quartz.dataSource.myDS.user","quartz");
properties.put("org.quartz.dataSource.myDS.password","quartz");
properties.put("org.quartz.dataSource.myDS.maxConnections","5");
// Set extra properties
properties.put("org.quartz.dataSource.myDS.minPoolSize","5");
properties.put("org.quartz.dataSource.myDS.acquireIncrement","5");
properties.put("org.quartz.dataSource.myDS.acquireRetryAttempts","3");
properties.put("org.quartz.dataSource.myDS.acquireRetryDelay","3000");
return properties;
}
}