/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.core.db;
import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.helper.ProjectHelper2;
import org.testng.annotations.Test;
/**
* Performs database tests that require ANT to run the actual tests (like the DBUpgrade stuff).
*
* @author John Mazzitelli
*
*/
@Test
public class AntDatabaseTest extends AbstractDatabaseTestUtil {
/**
* Tests upgrading schema on postgres DB.
*
* @throws Exception
*/
public void testDbUpgradePostgres() throws Exception {
String db = "postgresql";
// skip test if it is to be skipped
if (getConnection(db) == null) {
return;
}
String test_resources_dir = System.getProperty("AntDatabaseTest.test-resources");
System.setProperty("test.upgrade.dbsetup.xmlfile", "preupgrade-dbsetup.xml");
System.setProperty("test.upgrade.target.schema.version", "2.0.0");
System.setProperty("test.upgrade.jdbc.url", getTestDatabaseConnectionUrl(db));
System.setProperty("test.upgrade.jdbc.user", getTestDatabaseConnectionUsername(db));
System.setProperty("test.upgrade.jdbc.password", getTestDatabaseConnectionPassword(db));
System.setProperty("basedir", test_resources_dir);
startAnt(test_resources_dir + File.separator + "test-upgrade.xml");
}
/**
* Launches ANT and runs the default target in the given build file.
*
* @param build_file_str
*
* @throws RuntimeException
*/
private void startAnt(String build_file_str) {
Project project = new Project();
File build_file = new File(build_file_str);
try {
project.setCoreLoader(getClass().getClassLoader());
project.init();
new ProjectHelper2().parse(project, build_file);
project.executeTarget(project.getDefaultTarget());
} catch (BuildException e) {
throw new RuntimeException("Cannot run ANT on script [" + build_file_str + "]. Cause: " + e, e);
}
}
}