From 9647fee3f0f196d064879afd41b9eff51d5aa036 Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Thu, 19 Nov 2015 14:19:00 -0800 Subject: [PATCH] HBASE-14851 Add test showing how to use per put TTL from thrift --- .../TestThriftHBaseServiceHandler.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java index 8003bffda82..654324d569e 100644 --- a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java +++ b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java @@ -684,6 +684,56 @@ public class TestThriftHBaseServiceHandler { } } + @Test + public void testPutTTL() throws Exception { + ThriftHBaseServiceHandler handler = createHandler(); + byte[] rowName = "testPutTTL".getBytes(); + ByteBuffer table = wrap(tableAname); + List columnValues = new ArrayList(); + + // Add some dummy data + columnValues.add( + new TColumnValue( + wrap(familyAname), + wrap(qualifierAname), + wrap(Bytes.toBytes(1L)))); + + + TPut put = new TPut(wrap(rowName), columnValues); + put.setColumnValues(columnValues); + + Map attributes = new HashMap<>(); + + // Time in ms for the kv's to live. + long ttlTimeMs = 2000L; + + // the _ttl attribute is a number of ms ttl for key values in this put. + attributes.put(wrap(Bytes.toBytes("_ttl")), wrap(Bytes.toBytes(ttlTimeMs))); + // Attach the attributes + put.setAttributes(attributes); + // Send it. + handler.put(table, put); + + // Now get the data back + TGet getOne = new TGet(wrap(rowName)); + TResult resultOne = handler.get(table, getOne); + + // It's there. + assertArrayEquals(rowName, resultOne.getRow()); + assertEquals(1, resultOne.getColumnValuesSize()); + + // Sleep 30 seconds just to make 100% sure that the key value should be expired. + Thread.sleep(ttlTimeMs * 15); + + TGet getTwo = new TGet(wrap(rowName)); + TResult resultTwo = handler.get(table, getTwo); + + + // Nothing should be there since it's ttl'd out. + assertNull(resultTwo.getRow()); + assertEquals(0, resultTwo.getColumnValuesSize()); + } + /** * Padding numbers to make comparison of sort order easier in a for loop *