From 37d95cf660237cb74e92a66bb87c32de696ebf8a Mon Sep 17 00:00:00 2001 From: "subrat.mishra" Date: Sun, 16 Sep 2018 08:27:08 +0530 Subject: [PATCH] HBASE-21178 Changed the method signature of converter_method to accept only bytes in convert_bytes method. --- hbase-shell/src/main/ruby/hbase/table.rb | 9 +++++--- hbase-shell/src/test/ruby/hbase/table_test.rb | 30 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/hbase-shell/src/main/ruby/hbase/table.rb b/hbase-shell/src/main/ruby/hbase/table.rb index 55211b0056..7a334a0814 100644 --- a/hbase-shell/src/main/ruby/hbase/table.rb +++ b/hbase-shell/src/main/ruby/hbase/table.rb @@ -778,13 +778,16 @@ EOF end def convert_bytes(bytes, converter_class = nil, converter_method = nil) - convert_bytes_with_position(bytes, 0, bytes.length, converter_class, converter_method) + # Avoid nil + converter_class ||= 'org.apache.hadoop.hbase.util.Bytes' + converter_method ||= 'toStringBinary' + eval(converter_class).method(converter_method).call(bytes) end def convert_bytes_with_position(bytes, offset, len, converter_class, converter_method) # Avoid nil - converter_class = 'org.apache.hadoop.hbase.util.Bytes' unless converter_class - converter_method = 'toStringBinary' unless converter_method + converter_class ||= 'org.apache.hadoop.hbase.util.Bytes' + converter_method ||= 'toStringBinary' eval(converter_class).method(converter_method).call(bytes, offset, len) end diff --git a/hbase-shell/src/test/ruby/hbase/table_test.rb b/hbase-shell/src/test/ruby/hbase/table_test.rb index 9b15f839f9..f0f8c59440 100644 --- a/hbase-shell/src/test/ruby/hbase/table_test.rb +++ b/hbase-shell/src/test/ruby/hbase/table_test.rb @@ -437,6 +437,21 @@ module Hbase end end + define_test 'get should work with a custom converter class' do + @test_table.put(1, 'x:v', 1234) + begin + res = @test_table._get_internal('1', COLUMNS => + ['x:v:c(org.apache.hadoop.hbase.util.Bytes).len']) + assert_not_nil(res) + assert_kind_of(Hash, res) + assert_not_nil(res['x:v']) + assert_not_nil(/value=4/.match(res['x:v'])) + ensure + # clean up newly added columns for this test only. + @test_table.deleteall(1, 'x:v') + end + end + #------------------------------------------------------------------------------- define_test "scan should work w/o any params" do @@ -679,6 +694,21 @@ module Hbase assert_not_nil(res) end + define_test 'scan should work with a custom converter class' do + @test_table.put(1, 'x:v', 1234) + begin + res = @test_table._scan_internal COLUMNS => + ['x:v:c(org.apache.hadoop.hbase.util.Bytes).len'] + assert_not_nil(res) + assert_kind_of(Hash, res) + assert_not_nil(res['1']['x:v']) + assert_not_nil(/value=4/.match(res['1']['x:v'])) + ensure + # clean up newly added columns for this test only. + @test_table.deleteall(1, 'x:v') + end + end + define_test "mutation with TTL should expire" do @test_table.put('ttlTest', 'x:a', 'foo', { TTL => 1000 } ) begin -- 2.15.2 (Apple Git-101.1)