You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2014/05/14 02:27:04 UTC

svn commit: r1594423 [15/17] - in /hbase/branches/0.89-fb: ./ bin/ src/main/java/org/apache/hadoop/hbase/rest/ src/main/java/org/apache/hadoop/hbase/rest/client/ src/main/java/org/apache/hadoop/hbase/rest/metrics/ src/main/java/org/apache/hadoop/hbase/...

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java?rev=1594423&r1=1594422&r2=1594423&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java Wed May 14 00:26:57 2014
@@ -1,399 +0,0 @@
-/*
- * Copyright 2010 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hbase.rest;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.net.URLEncoder;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-import org.apache.commons.httpclient.Header;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.rest.client.Client;
-import org.apache.hadoop.hbase.rest.client.Cluster;
-import org.apache.hadoop.hbase.rest.client.Response;
-import org.apache.hadoop.hbase.rest.model.CellModel;
-import org.apache.hadoop.hbase.rest.model.CellSetModel;
-import org.apache.hadoop.hbase.rest.model.RowModel;
-import org.apache.hadoop.hbase.util.Bytes;
-
-public class TestRowResource extends HBaseRESTClusterTestBase {
-  static final String TABLE = "TestRowResource";
-  static final String CFA = "a";
-  static final String CFB = "b";
-  static final String COLUMN_1 = CFA + ":1";
-  static final String COLUMN_2 = CFB + ":2";
-  static final String ROW_1 = "testrow1";
-  static final String VALUE_1 = "testvalue1";
-  static final String ROW_2 = "testrow2";
-  static final String VALUE_2 = "testvalue2";
-  static final String ROW_3 = "testrow3";
-  static final String VALUE_3 = "testvalue3";
-  static final String ROW_4 = "testrow4";
-  static final String VALUE_4 = "testvalue4";
-
-  Client client;
-  JAXBContext context;
-  Marshaller marshaller;
-  Unmarshaller unmarshaller;
-  HBaseAdmin admin;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-    context = JAXBContext.newInstance(
-        CellModel.class,
-        CellSetModel.class,
-        RowModel.class);
-    marshaller = context.createMarshaller();
-    unmarshaller = context.createUnmarshaller();
-    client = new Client(new Cluster().add("localhost", testServletPort));
-    admin = new HBaseAdmin(conf);
-    if (admin.tableExists(TABLE)) {
-      return;
-    }
-    HTableDescriptor htd = new HTableDescriptor(TABLE);
-    htd.addFamily(new HColumnDescriptor(CFA));
-    htd.addFamily(new HColumnDescriptor(CFB));
-    admin.createTable(htd);
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    client.shutdown();
-    super.tearDown();
-  }
-
-  Response deleteRow(String table, String row) throws IOException {
-    StringBuilder path = new StringBuilder();
-    path.append('/');
-    path.append(table);
-    path.append('/');
-    path.append(row);
-    Response response = client.delete(path.toString());
-    Thread.yield();
-    return response;
-  }
-
-  Response deleteValue(String table, String row, String column)
-      throws IOException {
-    StringBuilder path = new StringBuilder();
-    path.append('/');
-    path.append(table);
-    path.append('/');
-    path.append(row);
-    path.append('/');
-    path.append(column);
-    Response response = client.delete(path.toString());
-    Thread.yield();
-    return response;
-  }
-
-  Response getValueXML(String table, String row, String column)
-      throws IOException {
-    StringBuilder path = new StringBuilder();
-    path.append('/');
-    path.append(table);
-    path.append('/');
-    path.append(row);
-    path.append('/');
-    path.append(column);
-    Response response = client.get(path.toString(), MIMETYPE_XML);
-    return response;
-  }
-
-  Response getValuePB(String table, String row, String column) 
-      throws IOException {
-    StringBuilder path = new StringBuilder();
-    path.append('/');
-    path.append(table);
-    path.append('/');
-    path.append(row);
-    path.append('/');
-    path.append(column);
-    Response response = client.get(path.toString(), MIMETYPE_PROTOBUF); 
-    return response;
-  }
-
-  Response putValueXML(String table, String row, String column, String value)
-      throws IOException, JAXBException {
-    StringBuilder path = new StringBuilder();
-    path.append('/');
-    path.append(table);
-    path.append('/');
-    path.append(row);
-    path.append('/');
-    path.append(column);
-    RowModel rowModel = new RowModel(row);
-    rowModel.addCell(new CellModel(Bytes.toBytes(column),
-      Bytes.toBytes(value)));
-    CellSetModel cellSetModel = new CellSetModel();
-    cellSetModel.addRow(rowModel);
-    StringWriter writer = new StringWriter();
-    marshaller.marshal(cellSetModel, writer);
-    Response response = client.put(path.toString(), MIMETYPE_XML,
-      Bytes.toBytes(writer.toString()));
-    Thread.yield();
-    return response;
-  }
-
-  void checkValueXML(String table, String row, String column, String value)
-      throws IOException, JAXBException {
-    Response response = getValueXML(table, row, column);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cellSet = (CellSetModel)
-      unmarshaller.unmarshal(new ByteArrayInputStream(response.getBody()));
-    RowModel rowModel = cellSet.getRows().get(0);
-    CellModel cell = rowModel.getCells().get(0);
-    assertEquals(Bytes.toString(cell.getColumn()), column);
-    assertEquals(Bytes.toString(cell.getValue()), value);
-  }
-
-  Response putValuePB(String table, String row, String column, String value)
-      throws IOException {
-    StringBuilder path = new StringBuilder();
-    path.append('/');
-    path.append(table);
-    path.append('/');
-    path.append(row);
-    path.append('/');
-    path.append(column);
-    RowModel rowModel = new RowModel(row);
-    rowModel.addCell(new CellModel(Bytes.toBytes(column),
-      Bytes.toBytes(value)));
-    CellSetModel cellSetModel = new CellSetModel();
-    cellSetModel.addRow(rowModel);
-    Response response = client.put(path.toString(), MIMETYPE_PROTOBUF,
-      cellSetModel.createProtobufOutput());
-    Thread.yield();
-    return response;
-  }
-
-  void checkValuePB(String table, String row, String column, String value)
-      throws IOException {
-    Response response = getValuePB(table, row, column);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cellSet = new CellSetModel();
-    cellSet.getObjectFromMessage(response.getBody());
-    RowModel rowModel = cellSet.getRows().get(0);
-    CellModel cell = rowModel.getCells().get(0);
-    assertEquals(Bytes.toString(cell.getColumn()), column);
-    assertEquals(Bytes.toString(cell.getValue()), value);
-  }
-
-  void doTestDelete() throws IOException, JAXBException {
-    Response response;
-    
-    response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    assertEquals(response.getCode(), 200);
-    response = putValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2);
-    assertEquals(response.getCode(), 200);
-    checkValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2);
-
-    response = deleteValue(TABLE, ROW_1, COLUMN_1);
-    assertEquals(response.getCode(), 200);
-    response = getValueXML(TABLE, ROW_1, COLUMN_1);
-    assertEquals(response.getCode(), 404);
-    checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2);
-
-    response = deleteRow(TABLE, ROW_1);
-    assertEquals(response.getCode(), 200);    
-    response = getValueXML(TABLE, ROW_1, COLUMN_1);
-    assertEquals(response.getCode(), 404);
-    response = getValueXML(TABLE, ROW_1, COLUMN_2);
-    assertEquals(response.getCode(), 404);
-  }
-
-  void doTestSingleCellGetPutXML() throws IOException, JAXBException {
-    Response response = getValueXML(TABLE, ROW_1, COLUMN_1);
-    assertEquals(response.getCode(), 404);
-
-    response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    assertEquals(response.getCode(), 200);
-    checkValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_2);
-    assertEquals(response.getCode(), 200);
-    checkValueXML(TABLE, ROW_1, COLUMN_1, VALUE_2);
-
-    response = deleteRow(TABLE, ROW_1);
-    assertEquals(response.getCode(), 200);    
-  }
-
-  void doTestSingleCellGetPutPB() throws IOException, JAXBException {
-    Response response = getValuePB(TABLE, ROW_1, COLUMN_1);
-    assertEquals(response.getCode(), 404);
-
-    response = putValuePB(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    assertEquals(response.getCode(), 200);
-    checkValuePB(TABLE, ROW_1, COLUMN_1, VALUE_1);
-
-    response = putValuePB(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    assertEquals(response.getCode(), 200);
-    checkValuePB(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    response = putValueXML(TABLE, ROW_1, COLUMN_1, VALUE_2);
-    assertEquals(response.getCode(), 200);
-    checkValuePB(TABLE, ROW_1, COLUMN_1, VALUE_2);
-
-    response = deleteRow(TABLE, ROW_1);
-    assertEquals(response.getCode(), 200);    
-  }
-
-  void doTestSingleCellGetPutBinary() throws IOException {
-    final String path = "/" + TABLE + "/" + ROW_3 + "/" + COLUMN_1;
-    final byte[] body = Bytes.toBytes(VALUE_3);
-    Response response = client.put(path, MIMETYPE_BINARY, body);
-    assertEquals(response.getCode(), 200);
-    Thread.yield();
-
-    response = client.get(path, MIMETYPE_BINARY);
-    assertEquals(response.getCode(), 200);
-    assertTrue(Bytes.equals(response.getBody(), body));
-    boolean foundTimestampHeader = false;
-    for (Header header: response.getHeaders()) {
-      if (header.getName().equals("X-Timestamp")) {
-        foundTimestampHeader = true;
-        break;
-      }
-    }
-    assertTrue(foundTimestampHeader);
-
-    response = deleteRow(TABLE, ROW_3);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestSingleCellGetJSON() throws IOException, JAXBException {
-    final String path = "/" + TABLE + "/" + ROW_4 + "/" + COLUMN_1;
-    Response response = client.put(path, MIMETYPE_BINARY,
-      Bytes.toBytes(VALUE_4));
-    assertEquals(response.getCode(), 200);
-    Thread.yield();
-    response = client.get(path, MIMETYPE_JSON);
-    assertEquals(response.getCode(), 200);
-    response = deleteRow(TABLE, ROW_4);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestURLEncodedKey() throws IOException, JAXBException {
-    String encodedKey = URLEncoder.encode("http://www.google.com/", 
-      HConstants.UTF8_ENCODING);
-    Response response;
-    response = putValueXML(TABLE, encodedKey, COLUMN_1, VALUE_1);
-    assertEquals(response.getCode(), 200);
-    response = putValuePB(TABLE, encodedKey, COLUMN_2, VALUE_2);
-    assertEquals(response.getCode(), 200);
-    checkValuePB(TABLE, encodedKey, COLUMN_1, VALUE_1);
-    checkValueXML(TABLE, encodedKey, COLUMN_2, VALUE_2);
-  }
-
-  void doTestMultiCellGetPutXML() throws IOException, JAXBException {
-    String path = "/" + TABLE + "/fakerow";  // deliberate nonexistent row
-
-    CellSetModel cellSetModel = new CellSetModel();
-    RowModel rowModel = new RowModel(ROW_1);
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_1),
-      Bytes.toBytes(VALUE_1)));
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_2),
-      Bytes.toBytes(VALUE_2)));
-    cellSetModel.addRow(rowModel);
-    rowModel = new RowModel(ROW_2);
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_1),
-      Bytes.toBytes(VALUE_3)));
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_2),
-      Bytes.toBytes(VALUE_4)));
-    cellSetModel.addRow(rowModel);
-    StringWriter writer = new StringWriter();
-    marshaller.marshal(cellSetModel, writer);
-    Response response = client.put(path, MIMETYPE_XML,
-      Bytes.toBytes(writer.toString()));
-    Thread.yield();
-
-    // make sure the fake row was not actually created
-    response = client.get(path, MIMETYPE_XML);
-    assertEquals(response.getCode(), 404);
-
-    // check that all of the values were created
-    checkValueXML(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    checkValueXML(TABLE, ROW_1, COLUMN_2, VALUE_2);
-    checkValueXML(TABLE, ROW_2, COLUMN_1, VALUE_3);
-    checkValueXML(TABLE, ROW_2, COLUMN_2, VALUE_4);
-
-    response = deleteRow(TABLE, ROW_1);
-    assertEquals(response.getCode(), 200);    
-    response = deleteRow(TABLE, ROW_2);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestMultiCellGetPutPB() throws IOException {
-    String path = "/" + TABLE + "/fakerow";  // deliberate nonexistent row
-
-    CellSetModel cellSetModel = new CellSetModel();
-    RowModel rowModel = new RowModel(ROW_1);
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_1),
-      Bytes.toBytes(VALUE_1)));
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_2),
-      Bytes.toBytes(VALUE_2)));
-    cellSetModel.addRow(rowModel);
-    rowModel = new RowModel(ROW_2);
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_1),
-      Bytes.toBytes(VALUE_3)));
-    rowModel.addCell(new CellModel(Bytes.toBytes(COLUMN_2),
-      Bytes.toBytes(VALUE_4)));
-    cellSetModel.addRow(rowModel);
-    Response response = client.put(path, MIMETYPE_PROTOBUF,
-      cellSetModel.createProtobufOutput());
-    Thread.yield();
-
-    // make sure the fake row was not actually created
-    response = client.get(path, MIMETYPE_PROTOBUF);
-    assertEquals(response.getCode(), 404);
-
-    // check that all of the values were created
-    checkValuePB(TABLE, ROW_1, COLUMN_1, VALUE_1);
-    checkValuePB(TABLE, ROW_1, COLUMN_2, VALUE_2);
-    checkValuePB(TABLE, ROW_2, COLUMN_1, VALUE_3);
-    checkValuePB(TABLE, ROW_2, COLUMN_2, VALUE_4);
-
-    response = deleteRow(TABLE, ROW_1);
-    assertEquals(response.getCode(), 200);    
-    response = deleteRow(TABLE, ROW_2);
-    assertEquals(response.getCode(), 200);
-  }
-
-  public void testRowResource() throws Exception {
-    doTestDelete();
-    doTestSingleCellGetPutXML();
-    doTestSingleCellGetPutPB();
-    doTestSingleCellGetPutBinary();
-    doTestSingleCellGetJSON();
-    doTestURLEncodedKey();
-    doTestMultiCellGetPutXML();
-    doTestMultiCellGetPutPB();
-  }
-}

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java?rev=1594423&r1=1594422&r2=1594423&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannerResource.java Wed May 14 00:26:57 2014
@@ -1,274 +0,0 @@
-/*
- * Copyright 2010 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hbase.rest;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.Iterator;
-import java.util.Random;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-import org.apache.commons.httpclient.Header;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.rest.client.Client;
-import org.apache.hadoop.hbase.rest.client.Cluster;
-import org.apache.hadoop.hbase.rest.client.Response;
-import org.apache.hadoop.hbase.rest.model.CellModel;
-import org.apache.hadoop.hbase.rest.model.CellSetModel;
-import org.apache.hadoop.hbase.rest.model.RowModel;
-import org.apache.hadoop.hbase.rest.model.ScannerModel;
-import org.apache.hadoop.hbase.util.Bytes;
-
-public class TestScannerResource extends HBaseRESTClusterTestBase {
-  static final String TABLE = "TestScannerResource";
-  static final String CFA = "a";
-  static final String CFB = "b";
-  static final String COLUMN_1 = CFA + ":1";
-  static final String COLUMN_2 = CFB + ":2";
-
-  static int expectedRows1;
-  static int expectedRows2;
-
-  Client client;
-  JAXBContext context;
-  Marshaller marshaller;
-  Unmarshaller unmarshaller;
-  HBaseAdmin admin;
-
-  int insertData(String tableName, String column, double prob)
-      throws IOException {
-    Random rng = new Random();
-    int count = 0;
-    HTable table = new HTable(conf, tableName);
-    byte[] k = new byte[3];
-    byte [][] famAndQf = KeyValue.parseColumn(Bytes.toBytes(column));
-    for (byte b1 = 'a'; b1 < 'z'; b1++) {
-      for (byte b2 = 'a'; b2 < 'z'; b2++) {
-        for (byte b3 = 'a'; b3 < 'z'; b3++) {
-          if (rng.nextDouble() < prob) {
-            k[0] = b1;
-            k[1] = b2;
-            k[2] = b3;
-            Put put = new Put(k);
-            put.add(famAndQf[0], famAndQf[1], k);
-            table.put(put);
-            count++;
-          }
-        }
-      }
-    }
-    table.flushCommits();
-    return count;
-  }
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-    context = JAXBContext.newInstance(
-        CellModel.class,
-        CellSetModel.class,
-        RowModel.class,
-        ScannerModel.class);
-    marshaller = context.createMarshaller();
-    unmarshaller = context.createUnmarshaller();
-    client = new Client(new Cluster().add("localhost", testServletPort));
-    admin = new HBaseAdmin(conf);
-    if (admin.tableExists(TABLE)) {
-      return;
-    }
-    HTableDescriptor htd = new HTableDescriptor(TABLE);
-    htd.addFamily(new HColumnDescriptor(CFA));
-    htd.addFamily(new HColumnDescriptor(CFB));
-    admin.createTable(htd);
-    expectedRows1 = insertData(TABLE, COLUMN_1, 1.0);
-    expectedRows2 = insertData(TABLE, COLUMN_2, 0.5);
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    client.shutdown();
-    super.tearDown();
-  }
-
-  int countCellSet(CellSetModel model) {
-    int count = 0;
-    Iterator<RowModel> rows = model.getRows().iterator();
-    while (rows.hasNext()) {
-      RowModel row = rows.next();
-      Iterator<CellModel> cells = row.getCells().iterator();
-      while (cells.hasNext()) {
-        cells.next();
-        count++;
-      }
-    }
-    return count;
-  }
-
-  void doTestSimpleScannerXML() throws IOException, JAXBException {
-    final int BATCH_SIZE = 5;
-    // new scanner
-    ScannerModel model = new ScannerModel();
-    model.setBatch(BATCH_SIZE);
-    model.addColumn(Bytes.toBytes(COLUMN_1));
-    StringWriter writer = new StringWriter();
-    marshaller.marshal(model, writer);
-    byte[] body = Bytes.toBytes(writer.toString());
-    Response response = client.put("/" + TABLE + "/scanner", MIMETYPE_XML,
-      body);
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-
-    // get a cell set
-    response = client.get(scannerURI, MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cellSet = (CellSetModel)
-      unmarshaller.unmarshal(new ByteArrayInputStream(response.getBody()));
-    // confirm batch size conformance
-    assertEquals(countCellSet(cellSet), BATCH_SIZE);
-
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestSimpleScannerPB() throws IOException {
-    final int BATCH_SIZE = 10;
-    // new scanner
-    ScannerModel model = new ScannerModel();
-    model.setBatch(BATCH_SIZE);
-    model.addColumn(Bytes.toBytes(COLUMN_1));
-    Response response = client.put("/" + TABLE + "/scanner",
-      MIMETYPE_PROTOBUF, model.createProtobufOutput());
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-
-    // get a cell set
-    response = client.get(scannerURI, MIMETYPE_PROTOBUF);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cellSet = new CellSetModel();
-    cellSet.getObjectFromMessage(response.getBody());
-    // confirm batch size conformance
-    assertEquals(countCellSet(cellSet), BATCH_SIZE);
-
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestSimpleScannerBinary() throws IOException {
-    // new scanner
-    ScannerModel model = new ScannerModel();
-    model.setBatch(1);
-    model.addColumn(Bytes.toBytes(COLUMN_1));
-    Response response = client.put("/" + TABLE + "/scanner",
-      MIMETYPE_PROTOBUF, model.createProtobufOutput());
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-
-    // get a cell
-    response = client.get(scannerURI, MIMETYPE_BINARY);
-    assertEquals(response.getCode(), 200);
-    // verify that data was returned
-    assertTrue(response.getBody().length > 0);
-    // verify that the expected X-headers are present
-    boolean foundRowHeader = false, foundColumnHeader = false,
-      foundTimestampHeader = false;
-    for (Header header: response.getHeaders()) {
-      if (header.getName().equals("X-Row")) {
-        foundRowHeader = true;
-      } else if (header.getName().equals("X-Column")) {
-        foundColumnHeader = true;
-      } else if (header.getName().equals("X-Timestamp")) {
-        foundTimestampHeader = true;
-      }
-    }
-    assertTrue(foundRowHeader);
-    assertTrue(foundColumnHeader);
-    assertTrue(foundTimestampHeader);
-
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-  }
-
-  int fullTableScan(ScannerModel model) throws IOException {
-    model.setBatch(100);
-    Response response = client.put("/" + TABLE + "/scanner",
-        MIMETYPE_PROTOBUF, model.createProtobufOutput());
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-    int count = 0;
-    while (true) {
-      response = client.get(scannerURI, MIMETYPE_PROTOBUF);
-      assertTrue(response.getCode() == 200 || response.getCode() == 204);
-      if (response.getCode() == 200) {
-        CellSetModel cellSet = new CellSetModel();
-        cellSet.getObjectFromMessage(response.getBody());
-        Iterator<RowModel> rows = cellSet.getRows().iterator();
-        while (rows.hasNext()) {
-          RowModel row = rows.next();
-          Iterator<CellModel> cells = row.getCells().iterator();
-          while (cells.hasNext()) {
-            cells.next();
-            count++;
-          }
-        }
-      } else {
-        break;
-      }
-    }
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-    return count;
-  }
-
-  void doTestFullTableScan() throws IOException {
-    ScannerModel model = new ScannerModel();
-    model.addColumn(Bytes.toBytes(COLUMN_1));
-    assertEquals(fullTableScan(model), expectedRows1);
-
-    model = new ScannerModel();
-    model.addColumn(Bytes.toBytes(COLUMN_2));
-    assertEquals(fullTableScan(model), expectedRows2);
-  }
-
-  public void testScannerResource() throws Exception {
-    doTestSimpleScannerXML();
-    doTestSimpleScannerPB();
-    doTestSimpleScannerBinary();
-    doTestFullTableScan();
-  }
-}

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java?rev=1594423&r1=1594422&r2=1594423&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestScannersWithFilters.java Wed May 14 00:26:57 2014
@@ -1,980 +0,0 @@
-/*
- * Copyright 2010 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hbase.rest;
-
-import java.io.ByteArrayInputStream;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.filter.BinaryComparator;
-import org.apache.hadoop.hbase.filter.Filter;
-import org.apache.hadoop.hbase.filter.FilterList;
-import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;
-import org.apache.hadoop.hbase.filter.InclusiveStopFilter;
-import org.apache.hadoop.hbase.filter.PageFilter;
-import org.apache.hadoop.hbase.filter.PrefixFilter;
-import org.apache.hadoop.hbase.filter.QualifierFilter;
-import org.apache.hadoop.hbase.filter.RegexStringComparator;
-import org.apache.hadoop.hbase.filter.RowFilter;
-import org.apache.hadoop.hbase.filter.SkipFilter;
-import org.apache.hadoop.hbase.filter.SubstringComparator;
-import org.apache.hadoop.hbase.filter.ValueFilter;
-import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
-import org.apache.hadoop.hbase.filter.FilterList.Operator;
-import org.apache.hadoop.hbase.rest.client.Client;
-import org.apache.hadoop.hbase.rest.client.Cluster;
-import org.apache.hadoop.hbase.rest.client.Response;
-import org.apache.hadoop.hbase.rest.model.CellModel;
-import org.apache.hadoop.hbase.rest.model.CellSetModel;
-import org.apache.hadoop.hbase.rest.model.RowModel;
-import org.apache.hadoop.hbase.rest.model.ScannerModel;
-import org.apache.hadoop.hbase.util.Bytes;
-
-public class TestScannersWithFilters extends HBaseRESTClusterTestBase {
-
-  static final Log LOG = LogFactory.getLog(TestScannersWithFilters.class);
-
-  static final byte [][] ROWS_ONE = {
-    Bytes.toBytes("testRowOne-0"), Bytes.toBytes("testRowOne-1"),
-    Bytes.toBytes("testRowOne-2"), Bytes.toBytes("testRowOne-3")
-  };
-
-  static final byte [][] ROWS_TWO = {
-    Bytes.toBytes("testRowTwo-0"), Bytes.toBytes("testRowTwo-1"),
-    Bytes.toBytes("testRowTwo-2"), Bytes.toBytes("testRowTwo-3")
-  };
-
-  static final byte [][] FAMILIES = {
-    Bytes.toBytes("testFamilyOne"), Bytes.toBytes("testFamilyTwo")
-  };
-
-  static final byte [][] QUALIFIERS_ONE = {
-    Bytes.toBytes("testQualifierOne-0"), Bytes.toBytes("testQualifierOne-1"),
-    Bytes.toBytes("testQualifierOne-2"), Bytes.toBytes("testQualifierOne-3")
-  };
-
-  static final byte [][] QUALIFIERS_TWO = {
-    Bytes.toBytes("testQualifierTwo-0"), Bytes.toBytes("testQualifierTwo-1"),
-    Bytes.toBytes("testQualifierTwo-2"), Bytes.toBytes("testQualifierTwo-3")
-  };
-
-  static final byte [][] VALUES = {
-    Bytes.toBytes("testValueOne"), Bytes.toBytes("testValueTwo")
-  };
-
-  Client client;
-  JAXBContext context;
-  Marshaller marshaller;
-  Unmarshaller unmarshaller;
-  long numRows = ROWS_ONE.length + ROWS_TWO.length;
-  long colsPerRow = FAMILIES.length * QUALIFIERS_ONE.length;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-    context = JAXBContext.newInstance(
-        CellModel.class,
-        CellSetModel.class,
-        RowModel.class,
-        ScannerModel.class);
-    marshaller = context.createMarshaller();
-    unmarshaller = context.createUnmarshaller();
-    client = new Client(new Cluster().add("localhost", testServletPort));
-    HBaseAdmin admin = new HBaseAdmin(conf);
-    if (!admin.tableExists(getName())) {
-      HTableDescriptor htd = new HTableDescriptor(getName());
-      htd.addFamily(new HColumnDescriptor(FAMILIES[0]));
-      htd.addFamily(new HColumnDescriptor(FAMILIES[1]));
-      admin.createTable(htd);
-      HTable table = new HTable(conf, getName());
-      // Insert first half
-      for(byte [] ROW : ROWS_ONE) {
-        Put p = new Put(ROW);
-        for(byte [] QUALIFIER : QUALIFIERS_ONE) {
-          p.add(FAMILIES[0], QUALIFIER, VALUES[0]);
-        }
-        table.put(p);
-      }
-      for(byte [] ROW : ROWS_TWO) {
-        Put p = new Put(ROW);
-        for(byte [] QUALIFIER : QUALIFIERS_TWO) {
-          p.add(FAMILIES[1], QUALIFIER, VALUES[1]);
-        }
-        table.put(p);
-      }
-      
-      // Insert second half (reverse families)
-      for(byte [] ROW : ROWS_ONE) {
-        Put p = new Put(ROW);
-        for(byte [] QUALIFIER : QUALIFIERS_ONE) {
-          p.add(FAMILIES[1], QUALIFIER, VALUES[0]);
-        }
-        table.put(p);
-      }
-      for(byte [] ROW : ROWS_TWO) {
-        Put p = new Put(ROW);
-        for(byte [] QUALIFIER : QUALIFIERS_TWO) {
-          p.add(FAMILIES[0], QUALIFIER, VALUES[1]);
-        }
-        table.put(p);
-      }
-      
-      // Delete the second qualifier from all rows and families
-      for(byte [] ROW : ROWS_ONE) {
-        Delete d = new Delete(ROW);
-        d.deleteColumns(FAMILIES[0], QUALIFIERS_ONE[1]);
-        d.deleteColumns(FAMILIES[1], QUALIFIERS_ONE[1]);
-        table.delete(d);
-      }    
-      for(byte [] ROW : ROWS_TWO) {
-        Delete d = new Delete(ROW);
-        d.deleteColumns(FAMILIES[0], QUALIFIERS_TWO[1]);
-        d.deleteColumns(FAMILIES[1], QUALIFIERS_TWO[1]);
-        table.delete(d);
-      }
-      colsPerRow -= 2;
-      
-      // Delete the second rows from both groups, one column at a time
-      for(byte [] QUALIFIER : QUALIFIERS_ONE) {
-        Delete d = new Delete(ROWS_ONE[1]);
-        d.deleteColumns(FAMILIES[0], QUALIFIER);
-        d.deleteColumns(FAMILIES[1], QUALIFIER);
-        table.delete(d);
-      }
-      for(byte [] QUALIFIER : QUALIFIERS_TWO) {
-        Delete d = new Delete(ROWS_TWO[1]);
-        d.deleteColumns(FAMILIES[0], QUALIFIER);
-        d.deleteColumns(FAMILIES[1], QUALIFIER);
-        table.delete(d);
-      }
-      numRows -= 2;
-    }
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    client.shutdown();
-    super.tearDown();
-  }
-
-  void verifyScan(Scan s, long expectedRows, long expectedKeys) 
-      throws Exception {
-    ScannerModel model = ScannerModel.fromScan(s);
-    model.setBatch(Integer.MAX_VALUE); // fetch it all at once
-    StringWriter writer = new StringWriter();
-    marshaller.marshal(model, writer);
-    LOG.debug(writer.toString());
-    byte[] body = Bytes.toBytes(writer.toString());
-    Response response = client.put("/" + getName() + "/scanner", MIMETYPE_XML,
-      body);
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-
-    // get a cell set
-    response = client.get(scannerURI, MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cells = (CellSetModel)
-      unmarshaller.unmarshal(new ByteArrayInputStream(response.getBody()));
-
-    int rows = cells.getRows().size();
-    assertTrue("Scanned too many rows! Only expected " + expectedRows + 
-        " total but scanned " + rows, expectedRows == rows);
-    for (RowModel row: cells.getRows()) {
-      int count = row.getCells().size();
-      assertEquals("Expected " + expectedKeys + " keys per row but " +
-        "returned " + count, expectedKeys, count);
-    }
-
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void verifyScanFull(Scan s, KeyValue [] kvs) throws Exception {
-    ScannerModel model = ScannerModel.fromScan(s);
-    model.setBatch(Integer.MAX_VALUE); // fetch it all at once
-    StringWriter writer = new StringWriter();
-    marshaller.marshal(model, writer);
-    LOG.debug(writer.toString());
-    byte[] body = Bytes.toBytes(writer.toString());
-    Response response = client.put("/" + getName() + "/scanner", MIMETYPE_XML,
-      body);
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-
-    // get a cell set
-    response = client.get(scannerURI, MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cellSet = (CellSetModel)
-      unmarshaller.unmarshal(new ByteArrayInputStream(response.getBody()));
-
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-
-    int row = 0;
-    int idx = 0;
-    Iterator<RowModel> i = cellSet.getRows().iterator();
-    for (boolean done = true; done; row++) {
-      done = i.hasNext();
-      if (!done) break;
-      RowModel rowModel = i.next();
-      List<CellModel> cells = rowModel.getCells();
-      if (cells.isEmpty()) break;
-      assertTrue("Scanned too many keys! Only expected " + kvs.length + 
-        " total but already scanned " + (cells.size() + idx), 
-        kvs.length >= idx + cells.size());
-      for (CellModel cell: cells) {
-        assertTrue("Row mismatch", 
-            Bytes.equals(rowModel.getKey(), kvs[idx].getRow()));
-        byte[][] split = KeyValue.parseColumn(cell.getColumn());
-        assertTrue("Family mismatch", 
-            Bytes.equals(split[0], kvs[idx].getFamily()));
-        assertTrue("Qualifier mismatch", 
-            Bytes.equals(split[1], kvs[idx].getQualifier()));
-        assertTrue("Value mismatch", 
-            Bytes.equals(cell.getValue(), kvs[idx].getValue()));
-        idx++;
-      }
-    }
-    assertEquals("Expected " + kvs.length + " total keys but scanned " + idx,
-      kvs.length, idx);
-  }
-
-  void verifyScanNoEarlyOut(Scan s, long expectedRows, long expectedKeys) 
-      throws Exception {
-    ScannerModel model = ScannerModel.fromScan(s);
-    model.setBatch(Integer.MAX_VALUE); // fetch it all at once
-    StringWriter writer = new StringWriter();
-    marshaller.marshal(model, writer);
-    LOG.debug(writer.toString());
-    byte[] body = Bytes.toBytes(writer.toString());
-    Response response = client.put("/" + getName() + "/scanner", MIMETYPE_XML,
-      body);
-    assertEquals(response.getCode(), 201);
-    String scannerURI = response.getLocation();
-    assertNotNull(scannerURI);
-
-    // get a cell set
-    response = client.get(scannerURI, MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    CellSetModel cellSet = (CellSetModel)
-      unmarshaller.unmarshal(new ByteArrayInputStream(response.getBody()));
-
-    // delete the scanner
-    response = client.delete(scannerURI);
-    assertEquals(response.getCode(), 200);
-
-    Iterator<RowModel> i = cellSet.getRows().iterator();
-    int j = 0;
-    for (boolean done = true; done; j++) {
-      done = i.hasNext();
-      if (!done) break;
-      RowModel rowModel = i.next();
-      List<CellModel> cells = rowModel.getCells();
-      if (cells.isEmpty()) break;
-      assertTrue("Scanned too many rows! Only expected " + expectedRows + 
-        " total but already scanned " + (j+1), expectedRows > j);
-      assertEquals("Expected " + expectedKeys + " keys per row but " +
-        "returned " + cells.size(), expectedKeys, cells.size());
-    }
-    assertEquals("Expected " + expectedRows + " rows but scanned " + j +
-      " rows", expectedRows, j);
-  }
-
-  void doTestNoFilter() throws Exception {
-    // No filter
-    long expectedRows = this.numRows;
-    long expectedKeys = this.colsPerRow;
-    
-    // Both families
-    Scan s = new Scan();
-    verifyScan(s, expectedRows, expectedKeys);
-
-    // One family
-    s = new Scan();
-    s.addFamily(FAMILIES[0]);
-    verifyScan(s, expectedRows, expectedKeys/2);
-  }
-
-  void doTestPrefixFilter() throws Exception {
-    // Grab rows from group one (half of total)
-    long expectedRows = this.numRows / 2;
-    long expectedKeys = this.colsPerRow;
-    Scan s = new Scan();
-    s.setFilter(new PrefixFilter(Bytes.toBytes("testRowOne")));
-    verifyScan(s, expectedRows, expectedKeys);
-  }
-
-  void doTestPageFilter() throws Exception {
-    // KVs in first 6 rows
-    KeyValue [] expectedKVs = {
-      // testRowOne-0
-      new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-      new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]),
-      new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-      new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-      new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[2], VALUES[0]),
-      new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-      // testRowOne-2
-      new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-      new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]),
-      new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-      new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-      new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[2], VALUES[0]),
-      new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-      // testRowOne-3
-      new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-      new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]),
-      new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-      new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-      new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[2], VALUES[0]),
-      new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-      // testRowTwo-0
-      new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-      new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-      new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-      new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-      new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-      new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-      // testRowTwo-2
-      new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-      new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-      new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-      new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-      new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-      new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-      // testRowTwo-3
-      new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-      new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-      new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-      new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-      new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-      new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1])
-    };
-    
-    // Grab all 6 rows
-    long expectedRows = 6;
-    long expectedKeys = this.colsPerRow;
-    Scan s = new Scan();
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScan(s, expectedRows, expectedKeys);
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScanFull(s, expectedKVs);
-    
-    // Grab first 4 rows (6 cols per row)
-    expectedRows = 4;
-    expectedKeys = this.colsPerRow;
-    s = new Scan();
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScan(s, expectedRows, expectedKeys);
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScanFull(s, Arrays.copyOf(expectedKVs, 24));
-    
-    // Grab first 2 rows
-    expectedRows = 2;
-    expectedKeys = this.colsPerRow;
-    s = new Scan();
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScan(s, expectedRows, expectedKeys);
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScanFull(s, Arrays.copyOf(expectedKVs, 12));
-
-    // Grab first row
-    expectedRows = 1;
-    expectedKeys = this.colsPerRow;
-    s = new Scan();
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScan(s, expectedRows, expectedKeys);
-    s.setFilter(new PageFilter(expectedRows));
-    verifyScanFull(s, Arrays.copyOf(expectedKVs, 6));    
-  }
-
-  void doTestInclusiveStopFilter() throws Exception {
-    // Grab rows from group one
-    
-    // If we just use start/stop row, we get total/2 - 1 rows
-    long expectedRows = (this.numRows / 2) - 1;
-    long expectedKeys = this.colsPerRow;
-    Scan s = new Scan(Bytes.toBytes("testRowOne-0"), 
-        Bytes.toBytes("testRowOne-3"));
-    verifyScan(s, expectedRows, expectedKeys);
-    
-    // Now use start row with inclusive stop filter
-    expectedRows = this.numRows / 2;
-    s = new Scan(Bytes.toBytes("testRowOne-0"));
-    s.setFilter(new InclusiveStopFilter(Bytes.toBytes("testRowOne-3")));
-    verifyScan(s, expectedRows, expectedKeys);
-
-    // Grab rows from group two
-    
-    // If we just use start/stop row, we get total/2 - 1 rows
-    expectedRows = (this.numRows / 2) - 1;
-    expectedKeys = this.colsPerRow;
-    s = new Scan(Bytes.toBytes("testRowTwo-0"), 
-        Bytes.toBytes("testRowTwo-3"));
-    verifyScan(s, expectedRows, expectedKeys);
-    
-    // Now use start row with inclusive stop filter
-    expectedRows = this.numRows / 2;
-    s = new Scan(Bytes.toBytes("testRowTwo-0"));
-    s.setFilter(new InclusiveStopFilter(Bytes.toBytes("testRowTwo-3")));
-    verifyScan(s, expectedRows, expectedKeys);
-
-  }
-  
-  void doTestQualifierFilter() throws Exception {
-    // Match two keys (one from each family) in half the rows
-    long expectedRows = this.numRows / 2;
-    long expectedKeys = 2;
-    Filter f = new QualifierFilter(CompareOp.EQUAL,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2")));
-    Scan s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys less than same qualifier
-    // Expect only two keys (one from each family) in half the rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = 2;
-    f = new QualifierFilter(CompareOp.LESS,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys less than or equal
-    // Expect four keys (two from each family) in half the rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = 4;
-    f = new QualifierFilter(CompareOp.LESS_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys not equal
-    // Expect four keys (two from each family)
-    // Only look in first group of rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = 4;
-    f = new QualifierFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2")));
-    s = new Scan(HConstants.EMPTY_START_ROW, Bytes.toBytes("testRowTwo"));
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys greater or equal
-    // Expect four keys (two from each family)
-    // Only look in first group of rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = 4;
-    f = new QualifierFilter(CompareOp.GREATER_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2")));
-    s = new Scan(HConstants.EMPTY_START_ROW, Bytes.toBytes("testRowTwo"));
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys greater
-    // Expect two keys (one from each family)
-    // Only look in first group of rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = 2;
-    f = new QualifierFilter(CompareOp.GREATER,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2")));
-    s = new Scan(HConstants.EMPTY_START_ROW, Bytes.toBytes("testRowTwo"));
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys not equal to
-    // Look across rows and fully validate the keys and ordering
-    // Expect varied numbers of keys, 4 per row in group one, 6 per row in
-    // group two
-    f = new QualifierFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(QUALIFIERS_ONE[2]));
-    s = new Scan();
-    s.setFilter(f);
-    
-    KeyValue [] kvs = {
-        // testRowOne-0
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowOne-2
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowOne-3
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowTwo-0
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-2
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-3
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-    };
-    verifyScanFull(s, kvs);
-     
-    // Test across rows and groups with a regex
-    // Filter out "test*-2"
-    // Expect 4 keys per row across both groups
-    f = new QualifierFilter(CompareOp.NOT_EQUAL,
-        new RegexStringComparator("test.+-2"));
-    s = new Scan();
-    s.setFilter(f);
-    
-    kvs = new KeyValue [] {
-        // testRowOne-0
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowOne-2
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowOne-3
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowTwo-0
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-2
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-3
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-    };
-    verifyScanFull(s, kvs);
-  }
-  
-  void doTestRowFilter() throws Exception {
-    // Match a single row, all keys
-    long expectedRows = 1;
-    long expectedKeys = this.colsPerRow;
-    Filter f = new RowFilter(CompareOp.EQUAL,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    Scan s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match a two rows, one from each group, using regex
-    expectedRows = 2;
-    expectedKeys = this.colsPerRow;
-    f = new RowFilter(CompareOp.EQUAL,
-        new RegexStringComparator("testRow.+-2"));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match rows less than
-    // Expect all keys in one row
-    expectedRows = 1;
-    expectedKeys = this.colsPerRow;
-    f = new RowFilter(CompareOp.LESS,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match rows less than or equal
-    // Expect all keys in two rows
-    expectedRows = 2;
-    expectedKeys = this.colsPerRow;
-    f = new RowFilter(CompareOp.LESS_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match rows not equal
-    // Expect all keys in all but one row
-    expectedRows = this.numRows - 1;
-    expectedKeys = this.colsPerRow;
-    f = new RowFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys greater or equal
-    // Expect all keys in all but one row
-    expectedRows = this.numRows - 1;
-    expectedKeys = this.colsPerRow;
-    f = new RowFilter(CompareOp.GREATER_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match keys greater
-    // Expect all keys in all but two rows
-    expectedRows = this.numRows - 2;
-    expectedKeys = this.colsPerRow;
-    f = new RowFilter(CompareOp.GREATER,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match rows not equal to testRowTwo-2
-    // Look across rows and fully validate the keys and ordering
-    // Should see all keys in all rows but testRowTwo-2
-    f = new RowFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testRowOne-2")));
-    s = new Scan();
-    s.setFilter(f);
-    
-    KeyValue [] kvs = {
-        // testRowOne-0
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[2], VALUES[0]),
-        new KeyValue(ROWS_ONE[0], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowOne-3
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[2], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowTwo-0
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-2
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-3
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-    };
-    verifyScanFull(s, kvs);
-    
-    // Test across rows and groups with a regex
-    // Filter out everything that doesn't match "*-2"
-    // Expect all keys in two rows
-    f = new RowFilter(CompareOp.EQUAL,
-        new RegexStringComparator(".+-2"));
-    s = new Scan();
-    s.setFilter(f);
-    
-    kvs = new KeyValue [] {
-        // testRowOne-2
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[3], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[2], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[1], QUALIFIERS_ONE[3], VALUES[0]),
-        // testRowTwo-2
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1])
-    };
-    verifyScanFull(s, kvs);
-  }
-  
-  void doTestValueFilter() throws Exception {
-    // Match group one rows
-    long expectedRows = this.numRows / 2;
-    long expectedKeys = this.colsPerRow;
-    Filter f = new ValueFilter(CompareOp.EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueOne")));
-    Scan s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-
-    // Match group two rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueTwo")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match all values using regex
-    expectedRows = this.numRows;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.EQUAL,
-        new RegexStringComparator("testValue((One)|(Two))"));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match values less than
-    // Expect group one rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.LESS,
-        new BinaryComparator(Bytes.toBytes("testValueTwo")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match values less than or equal
-    // Expect all rows
-    expectedRows = this.numRows;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.LESS_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueTwo")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-
-    // Match values less than or equal
-    // Expect group one rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.LESS_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueOne")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match values not equal
-    // Expect half the rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueOne")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match values greater or equal
-    // Expect all rows
-    expectedRows = this.numRows;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.GREATER_OR_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueOne")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match values greater
-    // Expect half rows
-    expectedRows = this.numRows / 2;
-    expectedKeys = this.colsPerRow;
-    f = new ValueFilter(CompareOp.GREATER,
-        new BinaryComparator(Bytes.toBytes("testValueOne")));
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, expectedRows, expectedKeys);
-    
-    // Match values not equal to testValueOne
-    // Look across rows and fully validate the keys and ordering
-    // Should see all keys in all group two rows
-    f = new ValueFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testValueOne")));
-    s = new Scan();
-    s.setFilter(f);
-    
-    KeyValue [] kvs = {
-        // testRowTwo-0
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-2
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-3
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-    };
-    verifyScanFull(s, kvs);
-  }
-  
-  void doTestSkipFilter() throws Exception {
-    // Test for qualifier regex: "testQualifierOne-2"
-    // Should only get rows from second group, and all keys
-    Filter f = new SkipFilter(new QualifierFilter(CompareOp.NOT_EQUAL,
-        new BinaryComparator(Bytes.toBytes("testQualifierOne-2"))));
-    Scan s = new Scan();
-    s.setFilter(f);
-    
-    KeyValue [] kvs = {
-        // testRowTwo-0
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-2
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-        // testRowTwo-3
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[3], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[2], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[1], QUALIFIERS_TWO[3], VALUES[1]),
-    };
-    verifyScanFull(s, kvs);
-  }
-    
-  void doTestFilterList() throws Exception {
-    // Test getting a single row, single key using Row, Qualifier, and Value 
-    // regular expression and substring filters
-    // Use must pass all
-    List<Filter> filters = new ArrayList<Filter>();
-    filters.add(new RowFilter(CompareOp.EQUAL,
-      new RegexStringComparator(".+-2")));
-    filters.add(new QualifierFilter(CompareOp.EQUAL,
-      new RegexStringComparator(".+-2")));
-    filters.add(new ValueFilter(CompareOp.EQUAL,
-      new SubstringComparator("One")));
-    Filter f = new FilterList(Operator.MUST_PASS_ALL, filters);
-    Scan s = new Scan();
-    s.addFamily(FAMILIES[0]);
-    s.setFilter(f);
-    KeyValue [] kvs = {
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[2], VALUES[0])
-    };
-    verifyScanFull(s, kvs);
-
-    // Test getting everything with a MUST_PASS_ONE filter including row, qf,
-    // val, regular expression and substring filters
-    filters.clear();
-    filters.add(new RowFilter(CompareOp.EQUAL,
-      new RegexStringComparator(".+Two.+")));
-    filters.add(new QualifierFilter(CompareOp.EQUAL,
-      new RegexStringComparator(".+-2")));
-    filters.add(new ValueFilter(CompareOp.EQUAL,
-      new SubstringComparator("One")));
-    f = new FilterList(Operator.MUST_PASS_ONE, filters);
-    s = new Scan();
-    s.setFilter(f);
-    verifyScanNoEarlyOut(s, this.numRows, this.colsPerRow);    
-  }
-  
-  void doTestFirstKeyOnlyFilter() throws Exception {
-    Scan s = new Scan();
-    s.setFilter(new FirstKeyOnlyFilter());
-    // Expected KVs, the first KV from each of the remaining 6 rows
-    KeyValue [] kvs = {
-        new KeyValue(ROWS_ONE[0], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[2], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_ONE[3], FAMILIES[0], QUALIFIERS_ONE[0], VALUES[0]),
-        new KeyValue(ROWS_TWO[0], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[2], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1]),
-        new KeyValue(ROWS_TWO[3], FAMILIES[0], QUALIFIERS_TWO[0], VALUES[1])
-    };
-    verifyScanFull(s, kvs);
-  }
-  
-  public void testScannersWithFilters() throws Exception {
-    doTestNoFilter();
-    doTestPrefixFilter();
-    doTestPageFilter();
-    doTestInclusiveStopFilter();
-    doTestQualifierFilter();
-    doTestRowFilter();
-    doTestValueFilter();
-    doTestSkipFilter();
-    doTestFilterList();
-    doTestFirstKeyOnlyFilter();
-  }
-}

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java?rev=1594423&r1=1594422&r2=1594423&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestSchemaResource.java Wed May 14 00:26:57 2014
@@ -1,138 +0,0 @@
-/*
- * Copyright 2010 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hbase.rest;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.StringWriter;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.rest.client.Client;
-import org.apache.hadoop.hbase.rest.client.Cluster;
-import org.apache.hadoop.hbase.rest.client.Response;
-import org.apache.hadoop.hbase.rest.model.ColumnSchemaModel;
-import org.apache.hadoop.hbase.rest.model.TableSchemaModel;
-import org.apache.hadoop.hbase.rest.model.TestTableSchemaModel;
-import org.apache.hadoop.hbase.util.Bytes;
-
-public class TestSchemaResource extends HBaseRESTClusterTestBase {
-  static String TABLE1 = "TestSchemaResource1";
-  static String TABLE2 = "TestSchemaResource2";
-
-  Client client;
-  JAXBContext context;
-  HBaseAdmin admin;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-    context = JAXBContext.newInstance(
-        ColumnSchemaModel.class,
-        TableSchemaModel.class);
-    admin = new HBaseAdmin(conf);
-    client = new Client(new Cluster().add("localhost", testServletPort));
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    client.shutdown();
-    super.tearDown();
-  }
-
-  byte[] toXML(TableSchemaModel model) throws JAXBException {
-    StringWriter writer = new StringWriter();
-    context.createMarshaller().marshal(model, writer);
-    return Bytes.toBytes(writer.toString());
-  }
-
-  TableSchemaModel fromXML(byte[] content) throws JAXBException {
-    return (TableSchemaModel) context.createUnmarshaller()
-      .unmarshal(new ByteArrayInputStream(content));
-  }
-
-  void doTestTableCreateAndDeleteXML() throws IOException, JAXBException {
-    String schemaPath = "/" + TABLE1 + "/schema";
-    TableSchemaModel model;
-    Response response;
-
-    assertFalse(admin.tableExists(TABLE1));
-
-    // create the table
-    model = TestTableSchemaModel.buildTestModel(TABLE1);
-    TestTableSchemaModel.checkModel(model, TABLE1);
-    response = client.put(schemaPath, MIMETYPE_XML, toXML(model));
-    assertEquals(response.getCode(), 201);
-
-    // make sure HBase concurs, and wait for the table to come online
-    admin.enableTable(TABLE1);
-
-    // retrieve the schema and validate it
-    response = client.get(schemaPath, MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    model = fromXML(response.getBody());
-    TestTableSchemaModel.checkModel(model, TABLE1);
-
-    // delete the table
-    client.delete(schemaPath);
-
-    // make sure HBase concurs
-    assertFalse(admin.tableExists(TABLE1));
-  }
-
-  void doTestTableCreateAndDeletePB() throws IOException, JAXBException {
-    String schemaPath = "/" + TABLE2 + "/schema";
-    TableSchemaModel model;
-    Response response;
-
-    assertFalse(admin.tableExists(TABLE2));
-
-    // create the table
-    model = TestTableSchemaModel.buildTestModel(TABLE2);
-    TestTableSchemaModel.checkModel(model, TABLE2);
-    response = client.put(schemaPath, Constants.MIMETYPE_PROTOBUF,
-      model.createProtobufOutput());
-    assertEquals(response.getCode(), 201);
-
-    // make sure HBase concurs, and wait for the table to come online
-    admin.enableTable(TABLE2);
-
-    // retrieve the schema and validate it
-    response = client.get(schemaPath, Constants.MIMETYPE_PROTOBUF);
-    assertEquals(response.getCode(), 200);
-    model = new TableSchemaModel();
-    model.getObjectFromMessage(response.getBody());
-    TestTableSchemaModel.checkModel(model, TABLE2);
-
-    // delete the table
-    client.delete(schemaPath);
-
-    // make sure HBase concurs
-    assertFalse(admin.tableExists(TABLE2));
-  }
-
-  public void testSchemaResource() throws Exception {
-    doTestTableCreateAndDeleteXML();
-    doTestTableCreateAndDeletePB();
-  }
-}

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java?rev=1594423&r1=1594422&r2=1594423&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestStatusResource.java Wed May 14 00:26:57 2014
@@ -1,104 +0,0 @@
-/*
- * Copyright 2010 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hbase.rest;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-import org.apache.hadoop.hbase.rest.client.Client;
-import org.apache.hadoop.hbase.rest.client.Cluster;
-import org.apache.hadoop.hbase.rest.client.Response;
-import org.apache.hadoop.hbase.rest.model.StorageClusterStatusModel;
-import org.apache.hadoop.hbase.util.Bytes;
-
-public class TestStatusResource extends HBaseRESTClusterTestBase {
-  static final byte[] ROOT_REGION_NAME = Bytes.toBytes("-ROOT-,,0");
-  static final byte[] META_REGION_NAME = Bytes.toBytes(".META.,,1");
-
-  Client client;
-  JAXBContext context;
-  
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-    context = JAXBContext.newInstance(
-      StorageClusterStatusModel.class);
-    client = new Client(new Cluster().add("localhost", testServletPort));
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    client.shutdown();
-    super.tearDown();
-  }
-
-  void validate(StorageClusterStatusModel model) {
-    assertNotNull(model);
-    assertTrue(model.getRegions() >= 2);
-    assertTrue(model.getRequests() >= 0);
-    // assumes minicluster with two regionservers
-    assertTrue(model.getAverageLoad() >= 1.0);
-    assertNotNull(model.getLiveNodes());
-    assertNotNull(model.getDeadNodes());
-    assertFalse(model.getLiveNodes().isEmpty());
-    boolean foundRoot = false, foundMeta = false;
-    for (StorageClusterStatusModel.Node node: model.getLiveNodes()) {
-      assertNotNull(node.getName());
-      assertTrue(node.getStartCode() > 0L);
-      assertTrue(node.getRequests() >= 0);
-      assertFalse(node.getRegions().isEmpty());
-      for (StorageClusterStatusModel.Node.Region region: node.getRegions()) {
-        if (Bytes.equals(region.getName(), ROOT_REGION_NAME)) {
-          foundRoot = true;
-        } else if (Bytes.equals(region.getName(), META_REGION_NAME)) {
-          foundMeta = true;
-        }
-      }
-    }
-    assertTrue(foundRoot);
-    assertTrue(foundMeta);
-  }
-
-  void doTestGetClusterStatusXML() throws IOException, JAXBException {
-    Response response = client.get("/status/cluster", MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    StorageClusterStatusModel model = (StorageClusterStatusModel)
-      context.createUnmarshaller().unmarshal(
-        new ByteArrayInputStream(response.getBody()));
-    validate(model);
-  }
-  
-  void doTestGetClusterStatusPB() throws IOException {
-    Response response = client.get("/status/cluster", MIMETYPE_PROTOBUF);
-    assertEquals(response.getCode(), 200);
-    StorageClusterStatusModel model = new StorageClusterStatusModel();
-    model.getObjectFromMessage(response.getBody());
-    validate(model);
-  }
-
-  public void testStatusResource() throws Exception {
-    doTestGetClusterStatusXML();
-    doTestGetClusterStatusPB();
-  }
-}

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java?rev=1594423&r1=1594422&r2=1594423&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/rest/TestTableResource.java Wed May 14 00:26:57 2014
@@ -1,229 +0,0 @@
-/*
- * Copyright 2010 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hbase.rest;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.HServerAddress;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.rest.client.Client;
-import org.apache.hadoop.hbase.rest.client.Cluster;
-import org.apache.hadoop.hbase.rest.client.Response;
-import org.apache.hadoop.hbase.rest.model.TableModel;
-import org.apache.hadoop.hbase.rest.model.TableInfoModel;
-import org.apache.hadoop.hbase.rest.model.TableListModel;
-import org.apache.hadoop.hbase.rest.model.TableRegionModel;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.util.StringUtils;
-
-public class TestTableResource extends HBaseRESTClusterTestBase {
-  static final Log LOG = LogFactory.getLog(TestTableResource.class);
-
-  static String TABLE = "TestTableResource";
-  static String COLUMN_FAMILY = "test";
-  static String COLUMN = COLUMN_FAMILY + ":qualifier";
-  static Map<HRegionInfo,HServerAddress> regionMap;
-
-  Client client;
-  JAXBContext context;
-  HBaseAdmin admin;
-
-  @Override
-  protected void setUp() throws Exception {
-    super.setUp();
-    context = JAXBContext.newInstance(
-        TableModel.class,
-        TableInfoModel.class,
-        TableListModel.class,
-        TableRegionModel.class);
-    client = new Client(new Cluster().add("localhost", testServletPort));
-    admin = new HBaseAdmin(conf);
-    if (admin.tableExists(TABLE)) {
-      return;
-    }
-    HTableDescriptor htd = new HTableDescriptor(TABLE);
-    htd.addFamily(new HColumnDescriptor(COLUMN_FAMILY));
-    admin.createTable(htd);
-    HTable table = new HTable(conf, TABLE);
-    byte[] k = new byte[3];
-    byte [][] famAndQf = KeyValue.parseColumn(Bytes.toBytes(COLUMN));
-    for (byte b1 = 'a'; b1 < 'z'; b1++) {
-      for (byte b2 = 'a'; b2 < 'z'; b2++) {
-        for (byte b3 = 'a'; b3 < 'z'; b3++) {
-          k[0] = b1;
-          k[1] = b2;
-          k[2] = b3;
-          Put put = new Put(k);
-          put.add(famAndQf[0], famAndQf[1], k);
-          table.put(put);
-        }
-      }
-    }
-    table.flushCommits();
-    // get the initial layout (should just be one region)
-    Map<HRegionInfo,HServerAddress> m = table.getRegionsInfo();
-    assertEquals(m.size(), 1);
-    // tell the master to split the table
-    admin.split(TABLE);
-    // give some time for the split to happen
-    try {
-      Thread.sleep(15 * 1000);
-    } catch (InterruptedException e) {
-      LOG.warn(StringUtils.stringifyException(e));
-    }
-    // check again
-    m = table.getRegionsInfo();
-    // should have two regions now
-    assertEquals(m.size(), 2);
-    regionMap = m;
-    LOG.info("regions: " + regionMap);
-  }
-
-  @Override
-  protected void tearDown() throws Exception {
-    client.shutdown();
-    super.tearDown();
-  }
-
-  void checkTableList(TableListModel model) {
-    boolean found = false;
-    Iterator<TableModel> tables = model.getTables().iterator();
-    assertTrue(tables.hasNext());
-    while (tables.hasNext()) {
-      TableModel table = tables.next();
-      if (table.getName().equals(TABLE)) {
-        found = true;
-        break;
-      }
-    }
-    assertTrue(found);
-  }
-
-  void doTestTableListText() throws IOException {
-    Response response = client.get("/", MIMETYPE_TEXT);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestTableListXML() throws IOException, JAXBException {
-    Response response = client.get("/", MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    TableListModel model = (TableListModel)
-      context.createUnmarshaller()
-        .unmarshal(new ByteArrayInputStream(response.getBody()));
-    checkTableList(model);
-  }
-
-  void doTestTableListJSON() throws IOException {
-    Response response = client.get("/", MIMETYPE_JSON);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestTableListPB() throws IOException, JAXBException {
-    Response response = client.get("/", MIMETYPE_PROTOBUF);
-    assertEquals(response.getCode(), 200);
-    TableListModel model = new TableListModel();
-    model.getObjectFromMessage(response.getBody());
-    checkTableList(model);
-  }
-
-  public void checkTableInfo(TableInfoModel model) {
-    assertEquals(model.getName(), TABLE);
-    Iterator<TableRegionModel> regions = model.getRegions().iterator();
-    assertTrue(regions.hasNext());
-    while (regions.hasNext()) {
-      TableRegionModel region = regions.next();
-      boolean found = false;
-      for (Map.Entry<HRegionInfo,HServerAddress> e: regionMap.entrySet()) {
-        HRegionInfo hri = e.getKey();
-        String hriRegionName = hri.getRegionNameAsString();
-        String regionName = region.getName();
-        if (hriRegionName.startsWith(regionName)) {
-          found = true;
-          byte[] startKey = hri.getStartKey();
-          byte[] endKey = hri.getEndKey();
-          InetSocketAddress sa = e.getValue().getInetSocketAddress();
-          String location = sa.getHostName() + ":" +
-            Integer.valueOf(sa.getPort());
-          assertEquals(hri.getRegionId(), region.getId());
-          assertTrue(Bytes.equals(startKey, region.getStartKey()));
-          assertTrue(Bytes.equals(endKey, region.getEndKey()));
-          assertEquals(location, region.getLocation());
-          break;
-        }
-      }
-      assertTrue(found);
-    }
-  }
-
-  void doTestTableInfoText() throws IOException {
-    Response response = client.get("/" + TABLE + "/regions", MIMETYPE_TEXT);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestTableInfoXML() throws IOException, JAXBException {
-    Response response = client.get("/" + TABLE + "/regions", MIMETYPE_XML);
-    assertEquals(response.getCode(), 200);
-    TableInfoModel model = (TableInfoModel)
-      context.createUnmarshaller()
-        .unmarshal(new ByteArrayInputStream(response.getBody()));
-    checkTableInfo(model);
-  }
-
-  void doTestTableInfoJSON() throws IOException {
-    Response response = client.get("/" + TABLE + "/regions", MIMETYPE_JSON);
-    assertEquals(response.getCode(), 200);
-  }
-
-  void doTestTableInfoPB() throws IOException, JAXBException {
-    Response response = 
-      client.get("/" + TABLE + "/regions", MIMETYPE_PROTOBUF);
-    assertEquals(response.getCode(), 200);
-    TableInfoModel model = new TableInfoModel();
-    model.getObjectFromMessage(response.getBody());
-    checkTableInfo(model);
-  }
-
-  public void testTableResource() throws Exception {
-    doTestTableListText();
-    doTestTableListXML();
-    doTestTableListJSON();
-    doTestTableListPB();
-    doTestTableInfoText();
-    doTestTableInfoXML();
-    doTestTableInfoJSON();
-    doTestTableInfoPB();
-  }
-}