You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by mp...@apache.org on 2012/07/10 22:56:26 UTC

svn commit: r1359895 - in /flume/trunk: ./ flume-ng-sinks/flume-ng-hbase-sink/src/test/java/org/apache/flume/sink/hbase/TestAsyncHBaseSink.java

Author: mpercy
Date: Tue Jul 10 20:56:26 2012
New Revision: 1359895

URL: http://svn.apache.org/viewvc?rev=1359895&view=rev
Log:
FLUME-1310. Make Asynch hbase sink test work with other versions of Hbase.

(Hari Shreedharan via Mike Percy)

Modified:
    flume/trunk/   (props changed)
    flume/trunk/flume-ng-sinks/flume-ng-hbase-sink/src/test/java/org/apache/flume/sink/hbase/TestAsyncHBaseSink.java

Propchange: flume/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Jul 10 20:56:26 2012
@@ -1 +1,2 @@
 target
+.swp

Modified: flume/trunk/flume-ng-sinks/flume-ng-hbase-sink/src/test/java/org/apache/flume/sink/hbase/TestAsyncHBaseSink.java
URL: http://svn.apache.org/viewvc/flume/trunk/flume-ng-sinks/flume-ng-hbase-sink/src/test/java/org/apache/flume/sink/hbase/TestAsyncHBaseSink.java?rev=1359895&r1=1359894&r2=1359895&view=diff
==============================================================================
--- flume/trunk/flume-ng-sinks/flume-ng-hbase-sink/src/test/java/org/apache/flume/sink/hbase/TestAsyncHBaseSink.java (original)
+++ flume/trunk/flume-ng-sinks/flume-ng-hbase-sink/src/test/java/org/apache/flume/sink/hbase/TestAsyncHBaseSink.java Tue Jul 10 20:56:26 2012
@@ -46,6 +46,7 @@ import org.apache.hadoop.hbase.client.HT
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.master.HMaster;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster;
 import org.junit.AfterClass;
@@ -55,6 +56,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 import com.google.common.primitives.Longs;
+import java.lang.reflect.Method;
 
 public class TestAsyncHBaseSink {
   private static HBaseTestingUtility testUtility;
@@ -85,7 +87,6 @@ public class TestAsyncHBaseSink {
     Configuration hbaseConf =  HBaseConfiguration.create();
 
     hbaseConf.set(HConstants.HBASE_DIR, hbaseRoot);
-    hbaseConf.set("hbase.master", "local");
     hbaseConf.setInt(HConstants.ZOOKEEPER_CLIENT_PORT, 2181);
     hbaseConf.set(HConstants.ZOOKEEPER_QUORUM, "0.0.0.0");
     hbaseConf.setInt("hbase.master.info.port", -1);
@@ -93,11 +94,42 @@ public class TestAsyncHBaseSink {
     String zookeeperDir = new File(workDir,"zk").getAbsolutePath();
     int zookeeperPort = 2181;
     zookeeperCluster = new MiniZooKeeperCluster();
-    zookeeperCluster.setDefaultClientPort(zookeeperPort);
+    Method m;
+    Class<?> zkParam[] = {Integer.TYPE};
+    try{
+      m = MiniZooKeeperCluster.class.getDeclaredMethod("setDefaultClientPort",
+          zkParam);
+    } catch (NoSuchMethodException e) {
+      m = MiniZooKeeperCluster.class.getDeclaredMethod("setClientPort",
+          zkParam);
+    }
+
+    m.invoke(zookeeperCluster, new Object[] {new Integer(zookeeperPort)});
     zookeeperCluster.startup(new File(zookeeperDir));
-    hbaseCluster= new MiniHBaseCluster(hbaseConf, 1);
-    hbaseConf.set("hbase.master",
-        hbaseCluster.getMaster().getServerName().getHostAndPort());
+    hbaseCluster = new MiniHBaseCluster(hbaseConf, 1);
+    HMaster master = hbaseCluster.getMaster();
+    Object serverName = master.getServerName();
+    String hostAndPort;
+    if(serverName instanceof String) {
+      System.out.println("Server name is string, using HServerAddress.");
+      m = HMaster.class.getDeclaredMethod("getMasterAddress",
+          new Class<?>[]{});
+      Class<?> clazz = Class.forName("org.apache.hadoop.hbase.HServerAddress");
+      /*
+       * Call method to get server address
+       */
+      Object serverAddr = clazz.cast(m.invoke(master, new Object[]{}));
+      //returns the address as hostname:port
+      hostAndPort = serverAddr.toString();
+    } else {
+      System.out.println("ServerName is org.apache.hadoop.hbase.ServerName," +
+          "using getHostAndPort()");
+      Class<?> clazz = Class.forName("org.apache.hadoop.hbase.ServerName");
+      m = clazz.getDeclaredMethod("getHostAndPort", new Class<?>[] {});
+      hostAndPort = m.invoke(serverName, new Object[]{}).toString();
+    }
+
+    hbaseConf.set("hbase.master", hostAndPort);
     testUtility = new HBaseTestingUtility(hbaseConf);
     testUtility.setZkCluster(zookeeperCluster);
     hbaseCluster.startMaster();