package edu.uci.ics.hivesterix.perf; | |
import java.io.File; | |
import java.util.List; | |
import junit.framework.Test; | |
import junit.framework.TestResult; | |
import edu.uci.ics.hivesterix.perf.base.AbstractPerfTestSuiteClass; | |
public class PerfTestSuite extends AbstractPerfTestSuiteClass { | |
private static final String PATH_TO_QUERIES = "src/test/resources/perf/queries/"; | |
private static final String PATH_TO_RESULTS = "src/test/resources/perf/results/"; | |
private static final String PATH_TO_IGNORES = "src/test/resources/perf/ignore.txt"; | |
private static final String FILE_EXTENSION_OF_RESULTS = "result"; | |
public static Test suite() throws Exception { | |
List<String> ignores = getIgnoreList(PATH_TO_IGNORES); | |
File testData = new File(PATH_TO_QUERIES); | |
File[] queries = testData.listFiles(); | |
PerfTestSuite testSuite = new PerfTestSuite(); | |
// set hdfs and hyracks cluster, and load test data to hdfs | |
try { | |
testSuite.setup(); | |
testSuite.loadData(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
throw new IllegalStateException(e.getMessage()); | |
} | |
for (File qFile : queries) { | |
if (isIgnored(qFile.getName(), ignores)) | |
continue; | |
if (qFile.isFile()) { | |
String resultFileName = hiveExtToResExt(qFile.getName()); | |
File rFile = new File(PATH_TO_RESULTS + resultFileName); | |
testSuite.addTest(new PerfTestCase(qFile, rFile)); | |
} | |
} | |
return testSuite; | |
} | |
private static String hiveExtToResExt(String fname) { | |
int dot = fname.lastIndexOf('.'); | |
return fname.substring(0, dot + 1) + FILE_EXTENSION_OF_RESULTS; | |
} | |
/** | |
* Runs the tests and collects their result in a TestResult. | |
*/ | |
@Override | |
public void run(TestResult result) { | |
int testCount = countTestCases(); | |
for (int i = 0; i < testCount; i++) { | |
Test each = this.testAt(i); | |
if (result.shouldStop()) | |
break; | |
runTest(each, result); | |
} | |
// cleanup hdfs and hyracks cluster | |
try { | |
cleanup(); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
throw new IllegalStateException(e.getMessage()); | |
} | |
} | |
} |