Package org.logicalcobwebs.proxool

Source Code of org.logicalcobwebs.proxool.ManyPoolsTest

/*
* This software is released under a licence similar to the Apache Software Licence.
* See org.logicalcobwebs.proxool.package.html for details.
* The latest version is available at http://proxool.sourceforge.net
*/
package org.logicalcobwebs.proxool;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.logicalcobwebs.proxool.admin.SnapshotResultMonitor;
import org.logicalcobwebs.proxool.admin.SnapshotIF;

import java.util.Properties;

/**
* Test whether Proxool is happy to run lots of pools. Is it scalable?
*
* @version $Revision: 1.4 $, $Date: 2006/01/18 14:40:06 $
* @author bill
* @author $Author: billhorsman $ (current maintainer)
* @since Proxool 0.8
*/
public class ManyPoolsTest extends AbstractProxoolTest {

    private static final Log LOG = LogFactory.getLog(ManyPoolsTest.class);

    public ManyPoolsTest(String alias) {
        super(alias);
    }

    public void testManyPools() throws ProxoolException {

        final String testName = "manyPools";

        Properties info = new Properties();
        info.setProperty(ProxoolConstants.USER_PROPERTY, TestConstants.HYPERSONIC_USER);
        info.setProperty(ProxoolConstants.PASSWORD_PROPERTY, TestConstants.HYPERSONIC_PASSWORD);
        info.setProperty(ProxoolConstants.VERBOSE_PROPERTY, Boolean.TRUE.toString());
        info.setProperty(ProxoolConstants.MINIMUM_CONNECTION_COUNT_PROPERTY, "0");
        info.setProperty(ProxoolConstants.MAXIMUM_CONNECTION_COUNT_PROPERTY, "5");
        info.setProperty(ProxoolConstants.PROTOTYPE_COUNT_PROPERTY, "2");
        info.setProperty(ProxoolConstants.HOUSE_KEEPING_SLEEP_TIME_PROPERTY, "30000");
        info.setProperty(ProxoolConstants.HOUSE_KEEPING_TEST_SQL_PROPERTY, TestConstants.HYPERSONIC_TEST_SQL);
       
        final int poolCount = 100;
        String alias[] = new String[poolCount];
        for (int i = 0; i < poolCount; i++) {
            alias[i] = testName + "_" + i;
            String url = ProxoolConstants.PROXOOL
                    + ProxoolConstants.ALIAS_DELIMITER
                    + alias[i]
                    + ProxoolConstants.URL_DELIMITER
                    + TestConstants.HYPERSONIC_DRIVER
                    + ProxoolConstants.URL_DELIMITER
                    + TestConstants.HYPERSONIC_URL_PREFIX + i;
            ProxoolFacade.registerConnectionPool(url, info);
        }

        SnapshotResultMonitor srm = new SnapshotResultMonitor(alias[poolCount - 1]) {
            public boolean check(SnapshotIF snapshot) throws Exception {
                LOG.debug("Checking availableConnectionCount: " + snapshot.getAvailableConnectionCount());
                return (snapshot.getAvailableConnectionCount() == 2);
            }
        };
        srm.setDelay(2000);
        srm.setTimeout(300000);
        assertEquals("Timeout", ResultMonitor.SUCCESS, srm.getResult());
        assertEquals("activeConnectionCount", 0, srm.getSnapshot().getActiveConnectionCount());

    }
}


/*
Revision history:
$Log: ManyPoolsTest.java,v $
Revision 1.4  2006/01/18 14:40:06  billhorsman
Unbundled Jakarta's Commons Logging.

Revision 1.3  2004/07/13 20:36:57  billhorsman
Open a different database for each pool. Otherwise Hypersonic has some threading issues.

Revision 1.2  2004/05/26 17:19:09  brenuart
Allow JUnit tests to be executed against another database.
By default the test configuration will be taken from the 'testconfig-hsqldb.properties' file located in the org.logicalcobwebs.proxool package.
This behavior can be overriden by setting the 'testConfig' environment property to another location.

Revision 1.1  2003/03/05 18:49:27  billhorsman
moved test to right tree

Revision 1.1  2003/03/05 18:42:33  billhorsman
big refactor of prototyping and house keeping to
drastically reduce the number of threads when using
many pools

*/
TOP

Related Classes of org.logicalcobwebs.proxool.ManyPoolsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.