package de.superx; import static org.junit.Assert.assertFalse; import java.util.Map; import org.apache.log4j.Logger; import org.junit.Ignore; import org.pentaho.di.core.Result; import org.pentaho.di.core.database.DatabaseMeta; import org.pentaho.di.core.logging.LogLevel; import org.pentaho.di.job.Job; import org.pentaho.di.job.JobMeta; import org.pentaho.di.metastore.DatabaseMetaStoreUtil; import org.pentaho.metastore.api.exceptions.MetaStoreException; import org.pentaho.metastore.stores.memory.MemoryMetaStore; @Ignore public class KettleTestRunner { private static Logger logger = Logger.getLogger(KettleTestRunner.class); public static void runKettleJob(String jobFile, Map parameters, LogLevel logLevel) { try { MemoryMetaStore metastore = new MemoryMetaStore(); initKettleEnvironment(metastore); JobMeta jobMeta = new JobMeta(null, jobFile, null, metastore, null); for (String key : parameters.keySet()) { jobMeta.setParameterValue(key, parameters.get(key)); } Job job = new Job(null, jobMeta); job.setLogLevel(logLevel); job.start(); job.waitUntilFinished(); notifyLoggedErrors(job); } catch (Exception e) { logger.error("Couldn't run kettle job!", e); } } private static void initKettleEnvironment(MemoryMetaStore metastore) throws MetaStoreException { DatabaseMeta dbmeta = new DatabaseMeta("eduetl", "POSTGRESQL", "JNDI", null, "eduetl", "1521", null, null); DatabaseMetaStoreUtil.createDatabaseElement(metastore, dbmeta); } private static void notifyLoggedErrors(Job job) { Result result = job.getResult(); String log = result.getLogText(); boolean errorsOccured = log.contains("ERROR"); assertFalse("Errors where found in kettle log:\n" + log, errorsOccured); } }