| package edu.uci.ics.hivesterix.test.optimizer; |
| |
| import java.io.File; |
| import java.io.PrintWriter; |
| import java.io.StringWriter; |
| |
| import org.apache.hadoop.hive.conf.HiveConf; |
| import org.apache.hadoop.hive.ql.Driver; |
| import org.junit.Test; |
| |
| import edu.uci.ics.hivesterix.common.config.ConfUtil; |
| import edu.uci.ics.hivesterix.test.base.AbstractHivesterixTestCase; |
| |
| public class OptimizerTestCase extends AbstractHivesterixTestCase { |
| private File resultFile; |
| |
| OptimizerTestCase(File queryFile, File resultFile) { |
| super("testOptimizer", queryFile); |
| this.queryFile = queryFile; |
| this.resultFile = resultFile; |
| } |
| |
| @Test |
| public void testOptimizer() throws Exception { |
| StringBuilder queryString = new StringBuilder(); |
| readFileToString(queryFile, queryString); |
| String[] queries = queryString.toString().split(";"); |
| StringWriter sw = new StringWriter(); |
| |
| HiveConf hconf = ConfUtil.getHiveConf(); |
| Driver driver = new Driver(hconf, new PrintWriter(sw)); |
| driver.init(); |
| |
| int i = 0; |
| for (String query : queries) { |
| if (i == queries.length - 1) |
| break; |
| if (query.toLowerCase().indexOf("create") >= 0 || query.toLowerCase().indexOf("drop") >= 0 |
| || query.toLowerCase().indexOf("set") >= 0 || query.toLowerCase().startsWith("\n\ncreate") |
| || query.toLowerCase().startsWith("\n\ndrop") || query.toLowerCase().startsWith("\n\nset")) |
| driver.run(query); |
| else |
| driver.compile(query); |
| driver.clear(); |
| i++; |
| } |
| StringBuilder buf = new StringBuilder(); |
| readFileToString(resultFile, buf); |
| if (!buf.toString().equals(sw.toString())) { |
| throw new Exception("Result for " + queryFile + " changed:\n" + sw.toString()); |
| } |
| } |
| } |