/*
* RHQ Management Platform
* Copyright (C) 2005-2013 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.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package org.rhq.server.metrics.migrator;
import java.util.List;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.apache.commons.lang.time.StopWatch;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.hibernate.ejb.Ejb3Configuration;
import org.rhq.server.metrics.migrator.datasources.ExistingDataBulkExportSource;
import org.rhq.server.metrics.migrator.datasources.ExistingPostgresDataBulkExportSource;
/**
* @author Thomas Segismont
*/
public class DataSourceTest {
//ExistingPostgresDataBulkExport
public static void main(String[] args) throws Exception {
BasicConfigurator.configure();
Logger.getRootLogger().setLevel(Level.INFO);
Logger.getLogger("org.rhq").setLevel(Level.DEBUG);
EntityManagerFactory entityManagerFactory = null;
EntityManager entityManager = null;
ExistingDataBulkExportSource source = null;
try {
entityManagerFactory = createEntityManager();
entityManager = entityManagerFactory.createEntityManager();
source = new ExistingPostgresDataBulkExportSource(entityManager,
"SELECT schedule_id, time_stamp, value, minvalue, maxvalue FROM RHQ_MEASUREMENT_DATA_NUM_1D");
StopWatch stopWatch = new StopWatch();
stopWatch.start();
source.initialize();
int rowIndex = 0;
int maxResults = 30000;
for (;;) {
List<Object[]> existingData = source.getData(rowIndex, maxResults);
if (existingData.size() < maxResults) {
break;
} else {
rowIndex += maxResults;
}
}
stopWatch.stop();
System.out.println("Execution: " + stopWatch);
} finally {
if (source != null) {
source.close();
}
if (entityManager != null) {
entityManager.close();
}
if (entityManagerFactory != null) {
entityManagerFactory.close();
}
}
}
private static EntityManagerFactory createEntityManager() throws Exception {
Properties properties = new Properties();
properties.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence");
properties.put("hibernate.connection.username", "rhqadmin");
properties.put("hibernate.connection.password", "rhqadmin");
properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
String driverClassName = "org.postgresql.Driver";
try {
//Required to preload the driver manually.
//Without this the driver load will fail due to the packaging.
Class.forName(driverClassName);
} catch (ClassNotFoundException e) {
throw new Exception("Postgres SQL Driver class could not be loaded. Missing class: " + driverClassName);
}
properties.put("hibernate.driver_class", driverClassName);
properties.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/rhq");
Ejb3Configuration configuration = new Ejb3Configuration();
configuration.setProperties(properties);
return configuration.buildEntityManagerFactory();
}
//ExistingDataJPABulkExportSource
public static void main2(String[] args) throws Exception {
BasicConfigurator.configure();
Logger.getRootLogger().setLevel(Level.INFO);
Logger.getLogger("org.rhq").setLevel(Level.DEBUG);
EntityManagerFactory entityManagerFactory = null;
EntityManager entityManager = null;
ExistingDataBulkExportSource source = null;
try {
entityManagerFactory = createEntityManager();
entityManager = entityManagerFactory.createEntityManager();
source = new ExistingPostgresDataBulkExportSource(entityManager,
"SELECT schedule_id, time_stamp, value, minvalue, maxvalue FROM RHQ_MEASUREMENT_DATA_NUM_1D");
StopWatch stopWatch = new StopWatch();
stopWatch.start();
source.initialize();
int rowIndex = 0;
int maxResults = 30000;
for (;;) {
List<Object[]> existingData = source.getData(rowIndex, maxResults);
if (existingData.size() < maxResults) {
break;
} else {
rowIndex += maxResults;
}
}
stopWatch.stop();
System.out.println("Execution: " + stopWatch);
} finally {
if (source != null) {
source.close();
}
if (entityManager != null) {
entityManager.close();
}
if (entityManagerFactory != null) {
entityManagerFactory.close();
}
}
}
private static EntityManagerFactory createEntityManager2() throws Exception {
Properties properties = new Properties();
properties.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence");
properties.put("hibernate.connection.username", "rhqadmin");
properties.put("hibernate.connection.password", "rhqadmin");
properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
String driverClassName = "org.postgresql.Driver";
try {
//Required to preload the driver manually.
//Without this the driver load will fail due to the packaging.
Class.forName(driverClassName);
} catch (ClassNotFoundException e) {
throw new Exception("Postgres SQL Driver class could not be loaded. Missing class: " + driverClassName);
}
properties.put("hibernate.driver_class", driverClassName);
properties.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/rhqdev");
Ejb3Configuration configuration = new Ejb3Configuration();
configuration.setProperties(properties);
return configuration.buildEntityManagerFactory();
}
}