/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
***************************************************************************************
*/
package com.espertech.esperio.db.config;
import com.espertech.esper.client.ConfigurationDBRef;
import junit.framework.TestCase;
import java.net.URL;
public class TestConfig extends TestCase {
private ConfigurationDBAdapter config;
public void setUp() {
config = new ConfigurationDBAdapter();
}
public void testConfigureFromStream() throws Exception {
URL url = this.getClass().getClassLoader().getResource("esperio-db-sample-config.xml");
ConfigurationDBAdapterParser.doConfigure(config, url.openStream(), url.toString());
assertFileConfig(config);
}
public void testEngineDefaults() {
config = new ConfigurationDBAdapter();
}
protected static void assertFileConfig(ConfigurationDBAdapter config) throws Exception {
assertEquals(3, config.getJdbcConnections().size());
ConfigurationDBRef connection = config.getJdbcConnections().get("db1");
ConfigurationDBRef.DataSourceConnection dsDef = (ConfigurationDBRef.DataSourceConnection) connection.getConnectionFactoryDesc();
assertEquals("java:comp/env/jdbc/mydb", dsDef.getContextLookupName());
assertEquals("{java.naming.provider.url=iiop://localhost:1050, java.naming.factory.initial=com.myclass.CtxFactory}", dsDef.getEnvProperties().toString());
assertNull(connection.getConnectionSettings().getAutoCommit());
assertNull(connection.getConnectionSettings().getCatalog());
assertNull(connection.getConnectionSettings().getReadOnly());
assertNull(connection.getConnectionSettings().getTransactionIsolation());
// assert database reference - data source factory and DBCP config
connection = config.getJdbcConnections().get("db2");
ConfigurationDBRef.DataSourceFactory dsFactory = (ConfigurationDBRef.DataSourceFactory) connection.getConnectionFactoryDesc();
assertEquals("org.apache.commons.dbcp.BasicDataSourceFactory", dsFactory.getFactoryClassname());
assertEquals("jdbc:mysql://localhost/test", dsFactory.getProperties().getProperty("url"));
assertEquals("myusername", dsFactory.getProperties().getProperty("username"));
assertEquals("mypassword", dsFactory.getProperties().getProperty("password"));
assertEquals("com.mysql.jdbc.Driver", dsFactory.getProperties().getProperty("driverClassName"));
assertEquals("2", dsFactory.getProperties().getProperty("initialSize"));
assertEquals((Boolean) true, connection.getConnectionSettings().getAutoCommit());
assertEquals("TEST", connection.getConnectionSettings().getCatalog());
assertEquals(Boolean.TRUE, connection.getConnectionSettings().getReadOnly());
assertEquals(new Integer(0), connection.getConnectionSettings().getTransactionIsolation());
// assert database reference - driver manager config
connection = config.getJdbcConnections().get("db3");
ConfigurationDBRef.DriverManagerConnection dmDef = (ConfigurationDBRef.DriverManagerConnection) connection.getConnectionFactoryDesc();
assertEquals("my.sql.Driver", dmDef.getClassName());
assertEquals("jdbc:mysql://localhost/test?user=root&password=welcome", dmDef.getUrl());
assertEquals("myuser", dmDef.getOptionalUserName());
assertEquals("mypassword", dmDef.getOptionalPassword());
assertEquals("{user=myuser, password=mypassword, somearg=someargvalue}", dmDef.getOptionalProperties().toString());
assertEquals(null, connection.getConnectionSettings().getAutoCommit());
assertEquals(null, connection.getConnectionSettings().getCatalog());
assertEquals(null, connection.getConnectionSettings().getReadOnly());
assertEquals(null, connection.getConnectionSettings().getTransactionIsolation());
assertEquals(1, config.getDmlQueries().size());
DMLQuery dmlQuery = config.getDmlQueries().get(0);
assertEquals("db1", dmlQuery.getConnection());
assertEquals("insert into MyEventStore(key1, value1, value2)\nvalues (?, ?, ?)", dmlQuery.getSql());
assertEquals("InsertToDBStream", dmlQuery.getStream());
assertEquals("MyInsertQuery", dmlQuery.getName());
assertEquals("queue1", dmlQuery.getExecutorName());
assertEquals((int) 2, (int) dmlQuery.getRetry());
assertEquals(1d, dmlQuery.getRetryIntervalSec());
assertEquals(3, dmlQuery.getBindings().size());
BindingParameter binding = dmlQuery.getBindings().get(0);
assertEquals(1, binding.getPosition());
assertEquals("eventProperty1", binding.getPropertyName());
binding = dmlQuery.getBindings().get(1);
assertEquals(2, binding.getPosition());
assertEquals("eventProperty2", binding.getPropertyName());
UpsertQuery upsertQuery = config.getUpsertQueries().get(0);
assertEquals("db1", upsertQuery.getConnection());
assertEquals("MyKeyedTable", upsertQuery.getTableName());
assertEquals("UpdateInsertDBTableTrigger", upsertQuery.getStream());
assertEquals("UpdateInsertSample", upsertQuery.getName());
assertEquals("queue1", upsertQuery.getExecutorName());
assertEquals((int) 3, (int) upsertQuery.getRetry());
assertNull(upsertQuery.getRetryIntervalSec());
assertEquals(2, upsertQuery.getKeys().size());
Column col = upsertQuery.getKeys().get(0);
assertEquals("eventProperty1", col.getProperty());
assertEquals("keyColumn1", col.getColumn());
assertEquals("varchar", col.getType());
assertEquals(2, upsertQuery.getValues().size());
col = upsertQuery.getValues().get(0);
assertEquals("eventProperty3", col.getProperty());
assertEquals("valueColumn1", col.getColumn());
assertEquals("varchar", col.getType());
assertEquals(1, config.getExecutors().size());
Executor workQueue = config.getExecutors().get("queue1");
assertEquals(2, workQueue.getNumThreads());
}
}