/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.framework; | |
import java.util.*; | |
import org.eclipse.persistence.testing.tests.TestRunModel ; | |
/** | |
* Run a batch task, e.g., LightRunAll, MediumRunAll and NotInLightRunAll utilizing PromptTestRunner. | |
* | |
* @author Edwin Tang | |
*/ | |
public class BatchTestRunner { | |
protected static final String PROPERTIES_FILE_FLAG = "pfile="; | |
protected static final String BATCH_NAME_FLAG = "batchname="; | |
protected static final String LIGHT_RUN_ALL = "lightrunall"; | |
protected static final String MEDIUM_RUN_ALL = "mediumrunall"; | |
protected static final String TEST_NOT_IN_LIGHT_RUN_ALL = "testnotinlightrunall"; | |
private String pFileName; | |
private String batchName; | |
private Vector testList; | |
/** | |
* Util method to log output. | |
*/ | |
public static void log(String str) { | |
System.out.println(str); | |
} | |
public static void main(String[] args) { | |
new BatchTestRunner().run(args); | |
} | |
private void run(String[] args) { | |
if (args.length < 2) { | |
this.printUsageAndExit(); | |
} | |
for (int i = 0; i < args.length; i++) { | |
processArguments(args[i]); | |
} | |
long startTime = System.currentTimeMillis(); | |
log("*** Beginning of running " + batchName + ", model by model. ***"); | |
PromptTestRunner ptr = new PromptTestRunner(); | |
for (int index = 0; index < testList.size(); ++index) { | |
String arg1 = "testmodel=" + testList.elementAt(index); | |
String arg2 = "pfile=" + pFileName; | |
String[] a = { arg1, arg2 }; | |
log("*** Running " + testList.elementAt(index)); | |
ptr.run(a); | |
} | |
long endTime = System.currentTimeMillis(); | |
log("*** End of running " + batchName + ", model by model. ***"); | |
log("*** " + testList.size() + " test models. "); | |
log("*** Total running time is " + ((endTime - startTime) / (1000 * 60)) + "m " + (((endTime - startTime) / 1000) % 60) + "s."); | |
System.exit(0); | |
} | |
public void printUsageAndExit() { | |
log("Usage:\n\tBatchTestRunner " + PROPERTIES_FILE_FLAG + "<PropertiesFile> " + BATCH_NAME_FLAG + "<BatchName>"); | |
log("\n\t" + BATCH_NAME_FLAG + "<BatchName> The name could be " + LIGHT_RUN_ALL + MEDIUM_RUN_ALL + " or " + TEST_NOT_IN_LIGHT_RUN_ALL); | |
log("\n\t" + PROPERTIES_FILE_FLAG + "<PropertiesFile> The specified properties file name"); | |
log("\n\t\t" + "Template of properties file:"); | |
log("\n\t\t\t" + "# properties for DatabseSession"); | |
log("\n\t\t\t" + "session.log=c:\\temp.txt"); | |
log("\n\t\t\t" + "session.logMessages=false"); | |
log("\n\n\t\t\t" + "# properties for TestExecutor"); | |
log("\n\t\t\t" + "executor.handleErrors=true"); | |
log("\n\n\t\t\t" + "# properties for DatabaseLogin"); | |
log("\n\t\t\t" + "login.databaseplatform=ORACLE"); | |
log("\n\t\t\t" + "login.driverClass=oracle.jdbc.OracleDriver"); | |
log("\n\t\t\t" + "login.databaseURL=jdbc:oracle:thin:@localhost:1521:ORCL"); | |
log("\n\t\t\t" + "login.username=scott"); | |
log("\n\t\t\t" + "login.password=tiger"); | |
log("\n\t" + "Example: java org.eclipse.persistence.testing.Testframework.BatchTestRunner "); | |
log("\n\t\t" + BATCH_NAME_FLAG + LIGHT_RUN_ALL); | |
log("\n\t\t" + PROPERTIES_FILE_FLAG + "C:\\titlcore.properties"); | |
System.exit(1); | |
} | |
private void processArguments(String arg) { | |
if (arg.startsWith(PROPERTIES_FILE_FLAG)) { | |
pFileName = arg.substring(PROPERTIES_FILE_FLAG.length()); | |
} else if (arg.startsWith(BATCH_NAME_FLAG)) { | |
batchName = arg.substring(BATCH_NAME_FLAG.length()); | |
if (batchName.equalsIgnoreCase(LIGHT_RUN_ALL)) { | |
testList = TestRunModel.buildLRGTestList(); | |
} else if (batchName.equalsIgnoreCase(MEDIUM_RUN_ALL)) { | |
testList = TestRunModel.buildAllTestModelsList() ; | |
} else if (batchName.equalsIgnoreCase(TEST_NOT_IN_LIGHT_RUN_ALL)) { | |
testList = TestRunModel.buildNonLRGTestList(); | |
} else { | |
log("Invaild batch name."); | |
log("Correct batch name should be " + LIGHT_RUN_ALL + ", " + MEDIUM_RUN_ALL + " or " + TEST_NOT_IN_LIGHT_RUN_ALL); | |
System.exit(1); | |
} | |
} | |
} | |
} |