diff --git service/src/test/org/apache/hive/service/cli/session/TestSessionCleanup.java service/src/test/org/apache/hive/service/cli/session/TestSessionCleanup.java index 51ce2c2426..62eb15b51a 100644 --- service/src/test/org/apache/hive/service/cli/session/TestSessionCleanup.java +++ service/src/test/org/apache/hive/service/cli/session/TestSessionCleanup.java @@ -23,8 +23,9 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.Random; import java.util.Set; - +import java.util.concurrent.atomic.AtomicInteger; import org.apache.hadoop.hive.conf.HiveConf; @@ -41,6 +42,11 @@ * TestSessionCleanup. */ public class TestSessionCleanup { + + private static final AtomicInteger salt = new AtomicInteger(new Random().nextInt()); + private final String TEST_DATA_DIR = System.getProperty("java.io.tmpdir") + File.separator + + TestSessionCleanup.class.getCanonicalName() + "-" + System.currentTimeMillis() + "_" + salt.getAndIncrement(); + // Create subclass of EmbeddedThriftBinaryCLIService, just so we can get an accessor to the CLIService. // Needed for access to the OperationManager. private class MyEmbeddedThriftBinaryCLIService extends EmbeddedThriftBinaryCLIService { @@ -61,6 +67,10 @@ public void testTempSessionFileCleanup() throws Exception { hiveConf .setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER, "org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory"); + //NOTES: Apply a random tmp directory to avoid default location conflicting with other tests + hiveConf + .setVar(HiveConf.ConfVars.HIVE_SERVER2_LOGGING_OPERATION_LOG_LOCATION, + TEST_DATA_DIR + File.separator + "operation_logs"); service.init(hiveConf); ThriftCLIServiceClient client = new ThriftCLIServiceClient(service); @@ -75,11 +85,11 @@ public void testTempSessionFileCleanup() throws Exception { Assert.assertNotNull(queryId2); File operationLogRootDir = new File( new HiveConf().getVar(ConfVars.HIVE_SERVER2_LOGGING_OPERATION_LOG_LOCATION)); - Assert.assertNotEquals(operationLogRootDir.list().length, 0); + Assert.assertNotEquals(0, operationLogRootDir.list().length); client.closeSession(sessionHandle); // Check if session files are removed - Assert.assertEquals(operationLogRootDir.list().length, 0); + Assert.assertEquals(0, operationLogRootDir.list().length); // Check if the pipeout files are removed Set finalPipeoutFiles = new HashSet(Arrays.asList(getPipeoutFiles())); diff --git service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java index be8d70b56a..2eb07eee28 100644 --- service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java +++ service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java @@ -77,6 +77,10 @@ public void setup() throws Exception { conf.setBoolVar(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY, false); conf.setVar(HiveConf.ConfVars.HIVE_METRICS_REPORTER, MetricsReporting.JSON_FILE.name() + "," + MetricsReporting.JMX.name()); conf.setBoolVar(HiveConf.ConfVars.HIVEOPTIMIZEMETADATAQUERIES, false); + //NOTES: If we enable operation log, SessionManager will delete operation logs directory on exit, + //it maybe impact TestSessionCleanup, because they use the same location ConfVars.HIVE_SERVER2_LOGGING_OPERATION_LOG_LOCATION, + // when we run testing in parallel on local machine with -DforkCount=x, it happen. + conf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_LOGGING_OPERATION_ENABLED, false); MetricsFactory.init(conf); sm = new SessionManager(null, true);