public static void doTestGetTableRegions(Hbase.Iface handler) throws Exception { assertEquals(handler.getTableNames().size(), 0); handler.createTable(tableAname, getColumnDescriptors()); assertEquals(handler.getTableNames().size(), 1); List<TRegionInfo> regions = handler.getTableRegions(tableAname); int regionCount = regions.size(); assertEquals("empty table should have only 1 region, " + "but found " + regionCount, regionCount, 1); LOG.info("Region found:" + regions.get(0)); handler.disableTable(tableAname); handler.deleteTable(tableAname); regionCount = handler.getTableRegions(tableAname).size(); assertEquals("non-existing table should have 0 region, " + "but found " + regionCount, regionCount, 0); }
public static void doTestGetRegionInfo(Hbase.Iface handler) throws Exception { // Create tableA and add two columns to rowA handler.createTable(tableAname, getColumnDescriptors()); try { handler.mutateRow(tableAname, rowAname, getMutations(), null); byte[] searchRow = HRegionInfo.createRegionName( TableName.valueOf(tableAname.array()), rowAname.array(), HConstants.NINES, false); TRegionInfo regionInfo = handler.getRegionInfo(ByteBuffer.wrap(searchRow)); assertTrue(Bytes.toStringBinary(regionInfo.getName()).startsWith( Bytes.toStringBinary(tableAname))); } finally { handler.disableTable(tableAname); handler.deleteTable(tableAname); } }
@BeforeClass public static void setUpBeforeClass() throws Exception { // binaryProtocol if (binaryProtocol) { System.out.println("[blockingTransport]"); ttransport = createTTransport(); System.out.println("[binaryProtocol]"); tprotocol = createTBinaryProtocol(ttransport); } else { System.out.println("[noblockingTransport]"); ttransport = createTFramedTransport(); System.out.println("[compactProtocol]"); tprotocol = createTCompactProtocol(ttransport); } client = new Hbase.Client(tprotocol); }
public static void doTestGetTableRegions(Hbase.Iface handler) throws Exception { assertEquals(0, handler.getTableNames().size()); handler.createTable(tableAname, getColumnDescriptors()); assertEquals(1, handler.getTableNames().size()); List<TRegionInfo> regions = handler.getTableRegions(tableAname); int regionCount = regions.size(); assertEquals("empty table should have only 1 region, " + "but found " + regionCount, 1, regionCount); LOG.info("Region found:" + regions.get(0)); handler.disableTable(tableAname); handler.deleteTable(tableAname); regionCount = handler.getTableRegions(tableAname).size(); assertEquals("non-existing table should have 0 region, " + "but found " + regionCount, 0, regionCount); }
private void testExceptionType(Hbase.Iface handler, ThriftMetrics metrics, ByteBuffer tTableName, String rowkey, ErrorThrowingGetObserver.ErrorType errorType) throws Exception { long preGetCounter = metricsHelper.getCounter("getRow_num_ops", metrics.getSource()); String exceptionKey = errorType.getMetricName(); long preExceptionCounter = metricsHelper.checkCounterExists(exceptionKey, metrics.getSource()) ? metricsHelper.getCounter(exceptionKey, metrics.getSource()) : 0; Map<ByteBuffer, ByteBuffer> attributes = new HashMap<>(); attributes.put(asByteBuffer(ErrorThrowingGetObserver.SHOULD_ERROR_ATTRIBUTE), asByteBuffer(errorType.name())); try { List<TRowResult> tRowResult = handler.getRow(tTableName, asByteBuffer(rowkey), attributes); fail("Get with error attribute should have thrown an exception"); } catch (IOError e) { LOG.info("Received exception: ", e); metricsHelper.assertCounter("getRow_num_ops", preGetCounter + 1, metrics.getSource()); metricsHelper.assertCounter(exceptionKey, preExceptionCounter + 1, metrics.getSource()); } }
private void talkToThriftServer(int customHeaderSize) throws Exception { THttpClient httpClient = new THttpClient( "http://"+ HConstants.LOCALHOST + ":" + port); httpClient.open(); if (customHeaderSize > 0) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < customHeaderSize; i++) { sb.append("a"); } httpClient.setCustomHeader("User-Agent", sb.toString()); } try { TProtocol prot; prot = new TBinaryProtocol(httpClient); Hbase.Client client = new Hbase.Client(prot); if (!tableCreated){ TestThriftServer.createTestTables(client); tableCreated = true; } TestThriftServer.checkTableList(client); } finally { httpClient.close(); } }
/** * Tests if the metrics for thrift handler work correctly */ public void doTestThriftMetrics() throws Exception { Configuration conf = UTIL.getConfiguration(); ThriftMetrics metrics = getMetrics(conf); Hbase.Iface handler = getHandlerForMetricsTest(metrics, conf); createTestTables(handler); dropTestTables(handler); metricsHelper.assertCounter("createTable_num_ops", 2, metrics.getSource()); metricsHelper.assertCounter("deleteTable_num_ops", 2, metrics.getSource()); metricsHelper.assertCounter("disableTable_num_ops", 2, metrics.getSource()); handler.getTableNames(); // This will have an artificial delay. // 3 to 6 seconds (to account for potential slowness), measured in nanoseconds metricsHelper.assertGaugeGt("getTableNames_avg_time", 3L * 1000 * 1000 * 1000, metrics.getSource()); metricsHelper.assertGaugeLt("getTableNames_avg_time",6L * 1000 * 1000 * 1000, metrics.getSource()); }
public static Hbase.Iface newInstance(Hbase.Iface handler, ThriftMetrics metrics, Configuration conf) { return (Hbase.Iface) Proxy.newProxyInstance( handler.getClass().getClassLoader(), new Class[]{Hbase.Iface.class}, new HbaseHandlerMetricsProxy(handler, metrics, conf)); }
/** * Tests if the metrics for thrift handler work correctly */ public void doTestThriftMetrics() throws Exception { LOG.info("START doTestThriftMetrics"); Configuration conf = UTIL.getConfiguration(); ThriftMetrics metrics = getMetrics(conf); Hbase.Iface handler = getHandlerForMetricsTest(metrics, conf); int currentCountCreateTable = getCurrentCount("createTable_num_ops", 2, metrics); int currentCountDeleteTable = getCurrentCount("deleteTable_num_ops", 2, metrics); int currentCountDisableTable = getCurrentCount("disableTable_num_ops", 2, metrics); createTestTables(handler); dropTestTables(handler);; metricsHelper.assertCounter("createTable_num_ops", currentCountCreateTable + 2, metrics.getSource()); metricsHelper.assertCounter("deleteTable_num_ops", currentCountDeleteTable + 2, metrics.getSource()); metricsHelper.assertCounter("disableTable_num_ops", currentCountDisableTable + 2, metrics.getSource()); handler.getTableNames(); // This will have an artificial delay. // 3 to 6 seconds (to account for potential slowness), measured in nanoseconds try { metricsHelper.assertGaugeGt("getTableNames_avg_time", 3L * 1000 * 1000 * 1000, metrics.getSource()); metricsHelper.assertGaugeLt("getTableNames_avg_time",6L * 1000 * 1000 * 1000, metrics.getSource()); } catch (AssertionError e) { LOG.info("Fix me! Why does this happen? A concurrent cluster running?", e); } }
public static void createTestTables(Hbase.Iface handler) throws Exception { // Create/enable/disable/delete tables, ensure methods act correctly assertEquals(handler.getTableNames().size(), 0); handler.createTable(tableAname, getColumnDescriptors()); assertEquals(handler.getTableNames().size(), 1); assertEquals(handler.getColumnDescriptors(tableAname).size(), 2); assertTrue(handler.isTableEnabled(tableAname)); handler.createTable(tableBname, new ArrayList<ColumnDescriptor>()); assertEquals(handler.getTableNames().size(), 2); }
public static void dropTestTables(Hbase.Iface handler) throws Exception { handler.disableTable(tableBname); assertFalse(handler.isTableEnabled(tableBname)); handler.deleteTable(tableBname); assertEquals(handler.getTableNames().size(), 1); handler.disableTable(tableAname); assertFalse(handler.isTableEnabled(tableAname)); /* TODO Reenable. assertFalse(handler.isTableEnabled(tableAname)); handler.enableTable(tableAname); assertTrue(handler.isTableEnabled(tableAname)); handler.disableTable(tableAname);*/ handler.deleteTable(tableAname); assertEquals(handler.getTableNames().size(), 0); }
private Hbase.Client refresh(Hbase.Client client, THttpClient httpClient) { httpClient.setCustomHeader("doAs", doAsUser); if(secure) { try { httpClient.setCustomHeader("Authorization", generateTicket()); } catch (GSSException e) { e.printStackTrace(); } } return client; }
public ThriftServerRunner(Configuration conf, HBaseHandler handler) { this.conf = HBaseConfiguration.create(conf); this.listenPort = conf.getInt(PORT_CONF_KEY, DEFAULT_LISTEN_PORT); this.metrics = new ThriftMetrics(listenPort, conf, Hbase.Iface.class); handler.initMetrics(metrics); this.handler = HbaseHandlerMetricsProxy.newInstance(handler, metrics, conf); }
/** * Tests if the metrics for thrift handler work correctly */ public void doTestThriftMetrics() throws Exception { Configuration conf = UTIL.getConfiguration(); ThriftMetrics metrics = getMetrics(conf); Hbase.Iface handler = getHandler(metrics, conf); createTestTables(handler); dropTestTables(handler); verifyMetrics(metrics, "createTable_num_ops", 2); verifyMetrics(metrics, "deleteTable_num_ops", 2); verifyMetrics(metrics, "disableTable_num_ops", 2); }
public static void dropTestTables(Hbase.Iface handler) throws Exception { handler.disableTable(tableBname); assertFalse(handler.isTableEnabled(tableBname)); handler.deleteTable(tableBname); assertEquals(handler.getTableNames().size(), 1); handler.disableTable(tableAname); /* TODO Reenable. assertFalse(handler.isTableEnabled(tableAname)); handler.enableTable(tableAname); assertTrue(handler.isTableEnabled(tableAname)); handler.disableTable(tableAname);*/ handler.deleteTable(tableAname); }
private Hbase.Client refresh(Hbase.Client client, THttpClient httpClient) { if(secure) { httpClient.setCustomHeader("doAs", "hbase"); try { httpClient.setCustomHeader("Authorization", generateTicket()); } catch (GSSException e) { e.printStackTrace(); } } return client; }
public PoolableHbaseTTransport(TTransport ttransport, ObjectPool<TTransport> pool, boolean compactProtocol) { this.ttransport = ttransport; this.pool = pool; // this.compactProtocol = compactProtocol; if (!this.compactProtocol) { this.tprotocol = new TBinaryProtocol(ttransport); } else { this.tprotocol = new TCompactProtocol(ttransport); } this.delegate = new Hbase.Client(this.tprotocol); }
public HtSessionImpl(HtSessionFactoryImpl factory, TTransport ttransport) { this.factory = factory; this.ttransport = ttransport; // if (ttransport instanceof Delegateable) { @SuppressWarnings("unchecked") Delegateable<Hbase.Client> targetable = (Delegateable<Hbase.Client>) ttransport; this.delegate = targetable.getDelegate(); } }
@Test public void getTable() throws Exception { TTransport ttransport = htDataSource.getTTransport(); TProtocol tprotocol = new TBinaryProtocol(ttransport); Hbase.Client client = new Hbase.Client(tprotocol); // String TABLE_NAME = "UIH_OverallItemInfo"; // long beg = System.currentTimeMillis(); Map<ByteBuffer, ColumnDescriptor> hcds = client .getColumnDescriptors(ByteBufferHelper.toByteBuffer(TABLE_NAME)); // StringBuilder buffer = new StringBuilder(); buffer.append("["); buffer.append(TABLE_NAME); buffer.append("] "); int size = hcds.size(); int i = 0; for (ColumnDescriptor column : hcds.values()) { buffer.append(ByteHelper.toString(column.getName())); buffer.append(", " + column.getTimeToLive());// server沒提供 if (i < size - 1) { buffer.append(", "); } i++; } ttransport.close(); // long end = System.currentTimeMillis(); System.out.println((end - beg) + " at mills."); System.out.println(buffer); }
@Test // 50 times: 59110 mills. public void listTables() throws Exception { int count = 50; // long beg = System.currentTimeMillis(); for (int i = 0; i < count; i++) { TTransport ttransport = htDataSource.getTTransport(); TProtocol tprotocol = new TBinaryProtocol(ttransport); Hbase.Client client = new Hbase.Client(tprotocol); List<ByteBuffer> list = client.getTableNames(); for (ByteBuffer name : list) { StringBuilder buffer = new StringBuilder(); buffer.append("["); buffer.append(ByteBufferHelper.toString(name)); buffer.append("] "); Map<ByteBuffer, ColumnDescriptor> hcds = client .getColumnDescriptors(name); int size = hcds.size(); int j = 0; for (ColumnDescriptor column : hcds.values()) { buffer.append(ByteHelper.toString(column.getName())); if (j < size - 1) { buffer.append(", "); } j++; } // System.out.println(buffer); ttransport.close(); } } long end = System.currentTimeMillis(); System.out.println(count + " times: " + (end - beg) + " mills. "); }
/** * list all tables * * @throws Exception */ @Test // 50 times: 59193 mills. public void listTables() throws Exception { int count = 50; // long beg = System.currentTimeMillis(); for (int i = 0; i < count; i++) { TTransport ttransport = createTTransport(); TProtocol tprotocol = createTBinaryProtocol(ttransport); Hbase.Client client = createClient(tprotocol); System.out.println(client); // List<ByteBuffer> list = client.getTableNames(); for (ByteBuffer name : list) { StringBuilder buffer = new StringBuilder(); buffer.append("["); buffer.append(ByteBufferHelper.toString(name)); buffer.append("] "); Map<ByteBuffer, ColumnDescriptor> hcds = client .getColumnDescriptors(name); int size = hcds.size(); int j = 0; for (ColumnDescriptor column : hcds.values()) { buffer.append(ByteHelper.toString(column.getName())); if (j < size - 1) { buffer.append(", "); } j++; } // System.out.println(buffer); } ttransport.close(); } long end = System.currentTimeMillis(); System.out.println(count + " times: " + (end - beg) + " mills. "); }