/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.db.tool;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.fail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import org.hibernate.mapping.Table;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.test.TestProperties;
/**
* Test DbTool.
*/
@Test(groups = TestGroup.UNIT_DB)
public class DbToolTest {
private static final String TEST_TABLE = "db_tool_unit_test_table";
private DbTool _tool;
@BeforeMethod(alwaysRun = true)
public void setUp() throws Exception {
Properties props = TestProperties.getTestProperties();
String dbHost = props.getProperty("utildb.jdbc.url");
String user = props.getProperty("utildb.jdbc.username");
String password = props.getProperty("utildb.jdbc.password");
_tool = new DbTool(dbHost, user, password);
_tool.initialize();
}
public void testDrop() throws Exception {
_tool.createTestSchema();
createTestTable();
_tool.dropTestSchema();
// The table should no longer be there
try {
_tool.executeSql(_tool.getTestCatalog(), _tool.getTestSchema(), "SELECT * FROM " + TEST_TABLE);
fail();
} catch (OpenGammaRuntimeException e) {
// Ok - no table should be there!
}
}
public void testClear() throws Exception {
_tool.createTestSchema();
createTestTable();
_tool.executeSql(_tool.getTestCatalog(), _tool.getTestSchema(), "INSERT INTO " + TEST_TABLE + " (test_column) VALUES ('test')");
_tool.clearTestTables();
Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet rs = statement
.executeQuery("SELECT COUNT(*) FROM " + TEST_TABLE);
if (rs.next()) {
int count = rs.getInt(1);
assertEquals(0, count);
} else {
fail();
}
rs.close();
statement.close();
connection.close();
_tool.dropTestSchema();
}
private Connection getConnection() throws SQLException {
return DriverManager.getConnection(
_tool.getDbServerHost() + "/" + _tool.getTestCatalog(), _tool.getUser(), _tool.getPassword());
}
private void createTestTable() throws SQLException {
Table table = new Table(TEST_TABLE);
try {
String dropSql = table.sqlDropString(_tool.getHibernateDialect(), null, _tool
.getTestSchema());
_tool.executeSql(_tool.getTestCatalog(), _tool.getTestSchema(), dropSql);
} catch (OpenGammaRuntimeException e) {
// It might not exist, that's OK
}
String createSql = "CREATE TABLE "
+ table.getQualifiedName(_tool.getHibernateDialect(), null, _tool
.getTestSchema()) + " (test_column char(50))";
_tool.executeSql(_tool.getTestCatalog(), _tool.getTestSchema(), createSql);
}
}