diff --git src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java index 93d0ed1..4759d12 100644 --- src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java +++ src/main/java/org/apache/hadoop/hbase/rest/RowSpec.java @@ -45,7 +45,7 @@ public class RowSpec { new TreeSet(Bytes.BYTES_COMPARATOR); private long startTime = DEFAULT_START_TIMESTAMP; private long endTime = DEFAULT_END_TIMESTAMP; - private int maxVersions = HColumnDescriptor.DEFAULT_VERSIONS; + private int maxVersions = 1; private int maxValues = Integer.MAX_VALUE; public RowSpec(String path) throws IllegalArgumentException { diff --git src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java index 6cff851..8d4b5cc 100644 --- src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java +++ src/test/java/org/apache/hadoop/hbase/rest/TestRowResource.java @@ -20,6 +20,9 @@ package org.apache.hadoop.hbase.rest; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.StringWriter; @@ -32,7 +35,11 @@ import javax.xml.bind.Unmarshaller; import org.apache.commons.httpclient.Header; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.*; +import org.apache.hadoop.hbase.HBaseTestingUtility; +import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.HTableDescriptor; +import org.apache.hadoop.hbase.MediumTests; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.rest.client.Client; import org.apache.hadoop.hbase.rest.client.Cluster; @@ -41,10 +48,9 @@ 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; - -import static org.junit.Assert.*; - +import org.junit.After; import org.junit.AfterClass; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -85,8 +91,13 @@ public class TestRowResource { RowModel.class); marshaller = context.createMarshaller(); unmarshaller = context.createUnmarshaller(); - client = new Client(new Cluster().add("localhost", + client = new Client(new Cluster().add("localhost", REST_TEST_UTIL.getServletPort())); + + } + + @Before + public void beforeMethod() throws Exception { HBaseAdmin admin = TEST_UTIL.getHBaseAdmin(); if (admin.tableExists(TABLE)) { return; @@ -97,6 +108,15 @@ public class TestRowResource { admin.createTable(htd); } + @After + public void afterMethod() throws Exception { + HBaseAdmin admin = TEST_UTIL.getHBaseAdmin(); + if (admin.tableExists(TABLE)) { + admin.disableTable(TABLE); + admin.deleteTable(TABLE); + } + } + @AfterClass public static void tearDownAfterClass() throws Exception { REST_TEST_UTIL.shutdownServletContainer(); @@ -659,7 +679,7 @@ public class TestRowResource { for (CellModel cell: rowModel.getCells()) { assertEquals(COLUMN_1, Bytes.toString(cell.getColumn())); assertEquals(values[i], Bytes.toString(cell.getValue())); - } + } } for (String row : rows) { response = deleteRow(TABLE, row); @@ -684,6 +704,36 @@ public class TestRowResource { assertEquals(response.getCode(), 400); } + @Test + public void testLatestCellGetXML() throws IOException, JAXBException { + final String path = "/" + TABLE + "/" + ROW_1 + "/" + COLUMN_1; + CellSetModel cellSetModel = new CellSetModel(); + RowModel rowModel = new RowModel(ROW_1); + CellModel cellOne = new CellModel(Bytes.toBytes(COLUMN_1), 1L, Bytes.toBytes(VALUE_1)); + CellModel cellTwo = new CellModel(Bytes.toBytes(COLUMN_1), 2L, Bytes.toBytes(VALUE_2)); + rowModel.addCell(cellOne); + rowModel.addCell(cellTwo); + cellSetModel.addRow(rowModel); + StringWriter writer = new StringWriter(); + marshaller.marshal(cellSetModel, writer); + Response response = client.put(path, Constants.MIMETYPE_XML, + Bytes.toBytes(writer.toString())); + assertEquals(response.getCode(), 200); + Thread.yield(); + response = getValueXML(TABLE, ROW_1, COLUMN_1); + assertEquals(response.getCode(), 200); + assertEquals(Constants.MIMETYPE_XML, response.getHeader("content-type")); + CellSetModel cellSet = (CellSetModel) unmarshaller.unmarshal(new ByteArrayInputStream( + response.getBody())); + assertTrue(cellSet.getRows().size() == 1); + assertTrue(cellSet.getRows().get(0).getCells().size() == 1); + CellModel cell = cellSet.getRows().get(0).getCells().get(0); + assertEquals(VALUE_2, Bytes.toString(cell.getValue())); + assertEquals(2L, cell.getTimestamp()); + response = deleteRow(TABLE, ROW_1); + assertEquals(response.getCode(), 200); + } + @org.junit.Rule public org.apache.hadoop.hbase.ResourceCheckerJUnitRule cu = new org.apache.hadoop.hbase.ResourceCheckerJUnitRule();