From a6c130956d9110ffb9c515d031fd05d78a32b59d Mon Sep 17 00:00:00 2001 From: wanghuan Date: Wed, 9 Jan 2019 13:41:13 +0800 Subject: [PATCH] [PATCH] HBASE-21699 Fixed create table failed when using SPLITS_FILE => 'splits.txt' --- .../apache/hadoop/hbase/HTableDescriptor.java | 2 +- .../hadoop/hbase/TestHTableDescriptor.java | 8 +++- hbase-shell/src/test/ruby/hbase/table_test.rb | 40 ++++++++++++++----- hbase-shell/src/test/ruby/test_helper.rb | 16 +++++--- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java index 960b91fa15..4f3c24e7c7 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java @@ -187,7 +187,7 @@ public class HTableDescriptor implements TableDescriptor, Comparable ['10', '20', '30', '40']) - @table = table(@testTableName) - splits = @table._get_splits_internal() - #Total splits is 5 but here count is 4 as we ignore implicit empty split. + define_test 'Split count for a table' do + @test_table_name = 'table_with_splits' + create_test_table_with_splits(@test_table_name, SPLITS => %w[10 20 30 40]) + @table = table(@test_table_name) + splits = @table._get_splits_internal + # Total splits is 5 but here count is 4 as we ignore implicit empty split. assert_equal(4, splits.size) - assert_equal(["10", "20", "30", "40"], splits) - drop_test_table(@testTableName) + assert_equal(%w[10 20 30 40], splits) + drop_test_table(@test_table_name) + end + + define_test 'Split count for a table by file' do + @test_table_name = 'table_with_splits_file' + @splits_file = 'target/generated-test-sources/splits.txt' + File.exist?(@splits_file) && File.delete(@splits_file) + file = File.new(@splits_file, 'w') + %w[10 20 30 40].each { |item| file.puts item } + file.close + create_test_table_with_splits_file(@test_table_name, + SPLITS_FILE => @splits_file) + @table = table(@test_table_name) + splits = @table._get_splits_internal + # Total splits is 5 but here count is 4 as we ignore implicit empty split. + assert_equal(4, splits.size) + assert_equal(%w[10 20 30 40], splits) + drop_test_table(@test_table_name) + File.delete(@splits_file) end - define_test "Split count for a empty table" do - splits = @test_table._get_splits_internal() - #Empty split should not be part of this array. + define_test 'Split count for a empty table' do + splits = @test_table._get_splits_internal + # Empty split should not be part of this array. assert_equal(0, splits.size) assert_equal([], splits) end diff --git a/hbase-shell/src/test/ruby/test_helper.rb b/hbase-shell/src/test/ruby/test_helper.rb index f72a1c6a84..78fba7a206 100644 --- a/hbase-shell/src/test/ruby/test_helper.rb +++ b/hbase-shell/src/test/ruby/test_helper.rb @@ -102,14 +102,18 @@ module Hbase def create_test_table_with_splits(name, splits) # Create the table if needed - unless admin.exists?(name) - command(:create, name, 'f1', splits) - end + command(:create, name, 'f1', splits) unless admin.exists?(name) # Enable the table if needed - unless admin.enabled?(name) - admin.enable(name) - end + admin.enable(name) unless admin.enabled?(name) + end + + def create_test_table_with_splits_file(name, splits_file) + # Create the table if needed + command(:create, name, 'f1', splits_file) unless admin.exists?(name) + + # Enable the table if needed + admin.enable(name) unless admin.enabled?(name) end def create_test_table_with_region_replicas(name, num_of_replicas, splits) -- 2.19.1