You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2012/11/16 22:39:34 UTC
svn commit: r1410581 - in
/hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore:
TestHiveMetaStore.java TestMetaStoreEventListener.java
Author: hashutosh
Date: Fri Nov 16 21:39:33 2012
New Revision: 1410581
URL: http://svn.apache.org/viewvc?rev=1410581&view=rev
Log:
HIVE-3713 : Metastore: Sporadic unit test failures (Gunther Hagleitner via Ashutosh Chauhan)
Modified:
hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java
Modified: hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java?rev=1410581&r1=1410580&r2=1410581&view=diff
==============================================================================
--- hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java (original)
+++ hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java Fri Nov 16 21:39:33 2012
@@ -852,6 +852,53 @@ public abstract class TestHiveMetaStore
}
}
+ public void testDatabaseLocationWithPermissionProblems() throws Exception {
+
+ // Note: The following test will fail if you are running this test as root. Setting
+ // permission to '0' on the database folder will not preclude root from being able
+ // to create the necessary files.
+
+ if (System.getProperty("user.name").equals("root")) {
+ System.err.println("Skipping test because you are running as root!");
+ return;
+ }
+
+ silentDropDatabase(TEST_DB1_NAME);
+
+ Database db = new Database();
+ db.setName(TEST_DB1_NAME);
+ String dbLocation =
+ HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test/_testDB_create_";
+ FileSystem fs = FileSystem.get(new Path(dbLocation).toUri(), hiveConf);
+ fs.mkdirs(
+ new Path(HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test"),
+ new FsPermission((short) 0));
+ db.setLocationUri(dbLocation);
+
+
+ boolean createFailed = false;
+ try {
+ client.createDatabase(db);
+ } catch (MetaException cantCreateDB) {
+ createFailed = true;
+ } finally {
+ // Cleanup
+ if (!createFailed) {
+ try {
+ client.dropDatabase(TEST_DB1_NAME);
+ } catch(Exception e) {
+ System.err.println("Failed to remove database in cleanup: " + e.getMessage());
+ }
+ }
+
+ fs.setPermission(new Path(HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test"),
+ new FsPermission((short) 755));
+ fs.delete(new Path(HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test"), true);
+ }
+
+ assertTrue("Database creation succeeded even with permission problem", createFailed);
+ }
+
public void testDatabaseLocation() throws Throwable {
try {
// clear up any existing databases
@@ -874,24 +921,6 @@ public abstract class TestHiveMetaStore
client.dropDatabase(TEST_DB1_NAME);
silentDropDatabase(TEST_DB1_NAME);
- db = new Database();
- db.setName(TEST_DB1_NAME);
- dbLocation =
- HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test/_testDB_create_";
- FileSystem fs = FileSystem.get(new Path(dbLocation).toUri(), hiveConf);
- fs.mkdirs(
- new Path(HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test"),
- new FsPermission((short) 0));
- db.setLocationUri(dbLocation);
-
- boolean createFailed = false;
- try {
- client.createDatabase(db);
- } catch (MetaException cantCreateDB) {
- createFailed = true;
- }
- assertTrue("Database creation succeeded even with permission problem", createFailed);
-
boolean objectNotExist = false;
try {
client.getDatabase(TEST_DB1_NAME);
@@ -900,23 +929,16 @@ public abstract class TestHiveMetaStore
}
assertTrue("Database " + TEST_DB1_NAME + " exists ", objectNotExist);
- // Cleanup
- fs.setPermission(
- new Path(HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test"),
- new FsPermission((short) 755));
- fs.delete(new Path(HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/test"), true);
-
-
db = new Database();
db.setName(TEST_DB1_NAME);
dbLocation =
HiveConf.getVar(hiveConf, HiveConf.ConfVars.METASTOREWAREHOUSE) + "/_testDB_file_";
- fs = FileSystem.get(new Path(dbLocation).toUri(), hiveConf);
+ FileSystem fs = FileSystem.get(new Path(dbLocation).toUri(), hiveConf);
fs.createNewFile(new Path(dbLocation));
fs.deleteOnExit(new Path(dbLocation));
db.setLocationUri(dbLocation);
- createFailed = false;
+ boolean createFailed = false;
try {
client.createDatabase(db);
} catch (MetaException cantCreateDB) {
@@ -2084,10 +2106,12 @@ public abstract class TestHiveMetaStore
* at least works correctly.
*/
public void testSynchronized() throws Exception {
+ int currentNumberOfDbs = client.getAllDatabases().size();
+
IMetaStoreClient synchronizedClient =
HiveMetaStoreClient.newSynchronizedClient(client);
List<String> databases = synchronizedClient.getAllDatabases();
- assertEquals(1, databases.size());
+ assertEquals(currentNumberOfDbs, databases.size());
}
public void testTableFilter() throws Exception {
Modified: hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java?rev=1410581&r1=1410580&r2=1410581&view=diff
==============================================================================
--- hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java (original)
+++ hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestMetaStoreEventListener.java Fri Nov 16 21:39:33 2012
@@ -66,6 +66,10 @@ public class TestMetaStoreEventListener
private HiveMetaStoreClient msc;
private Driver driver;
+ private static final String dbName = "tmpdb";
+ private static final String tblName = "tmptbl";
+ private static final String renamed = "tmptbl2";
+
private static class RunMS implements Runnable {
@Override
@@ -83,13 +87,16 @@ public class TestMetaStoreEventListener
protected void setUp() throws Exception {
super.setUp();
+
System.setProperty("hive.metastore.event.listeners",
DummyListener.class.getName());
System.setProperty("hive.metastore.pre.event.listeners",
DummyPreListener.class.getName());
+
Thread t = new Thread(new RunMS());
t.start();
Thread.sleep(40000);
+
hiveConf = new HiveConf(this.getClass());
hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://localhost:" + msPort);
hiveConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTRETRIES, 3);
@@ -99,6 +106,11 @@ public class TestMetaStoreEventListener
SessionState.start(new CliSessionState(hiveConf));
msc = new HiveMetaStoreClient(hiveConf, null);
driver = new Driver(hiveConf);
+
+ driver.run("drop database if exists " + dbName + " cascade");
+
+ DummyListener.notifyList.clear();
+ DummyPreListener.notifyList.clear();
}
@Override
@@ -184,9 +196,6 @@ public class TestMetaStoreEventListener
}
public void testListener() throws Exception {
- String dbName = "tmpdb";
- String tblName = "tmptbl";
- String renamed = "tmptbl2";
int listSize = 0;
List<ListenerEvent> notifyList = DummyListener.notifyList;