HBASE-21689: Make table/namespace specific current quota info available in shell(describe_namespace & describe)
Signed-off-by: Guanghao Zhang <zghao@apache.org>
This commit is contained in:
parent
281558a3ab
commit
006f05b458
|
@ -32,6 +32,7 @@ Alternatively, you can use the abbreviated 'desc' for the same thing.
|
||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
||||||
def command(table)
|
def command(table)
|
||||||
column_families = admin.get_column_families(table)
|
column_families = admin.get_column_families(table)
|
||||||
|
|
||||||
|
@ -40,9 +41,17 @@ EOF
|
||||||
formatter.header(['COLUMN FAMILIES DESCRIPTION'])
|
formatter.header(['COLUMN FAMILIES DESCRIPTION'])
|
||||||
column_families.each do |column_family|
|
column_families.each do |column_family|
|
||||||
formatter.row([column_family.to_s], true)
|
formatter.row([column_family.to_s], true)
|
||||||
|
puts
|
||||||
end
|
end
|
||||||
formatter.footer
|
formatter.footer
|
||||||
|
puts
|
||||||
|
formatter.header(%w[QUOTAS])
|
||||||
|
count = quotas_admin.list_quotas(TABLE => table.to_s) do |_, quota|
|
||||||
|
formatter.row([quota])
|
||||||
|
end
|
||||||
|
formatter.footer(count)
|
||||||
end
|
end
|
||||||
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,12 +27,22 @@ Describe the named namespace. For example:
|
||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# rubocop:disable Metrics/AbcSize
|
||||||
def command(namespace)
|
def command(namespace)
|
||||||
desc = admin.describe_namespace(namespace)
|
desc = admin.describe_namespace(namespace)
|
||||||
|
|
||||||
formatter.header(['DESCRIPTION'], [64])
|
formatter.header(['DESCRIPTION'], [64])
|
||||||
formatter.row([desc], true, [64])
|
formatter.row([desc], true, [64])
|
||||||
|
|
||||||
|
puts
|
||||||
|
formatter.header(%w[QUOTAS])
|
||||||
|
ns = namespace.to_s
|
||||||
|
count = quotas_admin.list_quotas(NAMESPACE => ns) do |_, quota|
|
||||||
|
formatter.row([quota])
|
||||||
|
end
|
||||||
|
formatter.footer(count)
|
||||||
end
|
end
|
||||||
|
# rubocop:enable Metrics/AbcSize
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -59,7 +59,8 @@ module Hbase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Simple administration methods tests
|
# Simple administration methods tests
|
||||||
|
# rubocop:disable Metrics/ClassLength
|
||||||
class AdminMethodsTest < Test::Unit::TestCase
|
class AdminMethodsTest < Test::Unit::TestCase
|
||||||
include TestHelpers
|
include TestHelpers
|
||||||
|
|
||||||
|
@ -193,7 +194,7 @@ module Hbase
|
||||||
drop_test_table(@create_test_name)
|
drop_test_table(@create_test_name)
|
||||||
command(:create, @create_test_name, 'a', 'b')
|
command(:create, @create_test_name, 'a', 'b')
|
||||||
assert_equal(['a:', 'b:'], table(@create_test_name).get_all_columns.sort)
|
assert_equal(['a:', 'b:'], table(@create_test_name).get_all_columns.sort)
|
||||||
end
|
end
|
||||||
|
|
||||||
define_test "create should work with hash column args" do
|
define_test "create should work with hash column args" do
|
||||||
drop_test_table(@create_test_name)
|
drop_test_table(@create_test_name)
|
||||||
|
@ -267,8 +268,61 @@ module Hbase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
define_test "describe should return a description" do
|
define_test 'describe should return a description and quotas' do
|
||||||
assert_not_nil admin.describe(@test_name)
|
drop_test_table(@create_test_name)
|
||||||
|
command(:create, @create_test_name, 'cf1', 'cf2')
|
||||||
|
command(:set_quota,
|
||||||
|
TYPE => SPACE,
|
||||||
|
LIMIT => '1G',
|
||||||
|
POLICY => NO_INSERTS,
|
||||||
|
TABLE => @create_test_name)
|
||||||
|
output = capture_stdout { command(:describe, @create_test_name) }
|
||||||
|
|
||||||
|
assert(output.include?("Table #{@create_test_name} is ENABLED"))
|
||||||
|
assert(output.include?('COLUMN FAMILIES DESCRIPTION'))
|
||||||
|
assert(output.include?("NAME => 'cf1'"))
|
||||||
|
assert(output.include?("NAME => 'cf2'"))
|
||||||
|
assert(output.include?('2 row(s)'))
|
||||||
|
|
||||||
|
assert(output.include?('QUOTAS'))
|
||||||
|
assert(output.include?('LIMIT => 1G'))
|
||||||
|
assert(output.include?('VIOLATION_POLICY => NO_INSERTS'))
|
||||||
|
assert(output.include?('TYPE => SPACE'))
|
||||||
|
assert(output.include?('1 row(s)'))
|
||||||
|
|
||||||
|
command(:set_quota,
|
||||||
|
TYPE => SPACE,
|
||||||
|
LIMIT => NONE,
|
||||||
|
TABLE => @create_test_name)
|
||||||
|
output = capture_stdout { command(:describe, @create_test_name) }
|
||||||
|
assert(output.include?('0 row(s)'))
|
||||||
|
end
|
||||||
|
|
||||||
|
define_test 'describe_namespace should return a description and quotas' do
|
||||||
|
ns = @create_test_name
|
||||||
|
command(:create_namespace, ns)
|
||||||
|
command(:set_quota,
|
||||||
|
TYPE => SPACE,
|
||||||
|
LIMIT => '1G',
|
||||||
|
POLICY => NO_INSERTS,
|
||||||
|
NAMESPACE => ns)
|
||||||
|
output = capture_stdout { command(:describe_namespace, ns) }
|
||||||
|
|
||||||
|
assert(output.include?('DESCRIPTION'))
|
||||||
|
assert(output.include?("NAME => '#{ns}'"))
|
||||||
|
|
||||||
|
assert(output.include?('QUOTAS'))
|
||||||
|
assert(output.include?('LIMIT => 1G'))
|
||||||
|
assert(output.include?('VIOLATION_POLICY => NO_INSERTS'))
|
||||||
|
assert(output.include?('TYPE => SPACE'))
|
||||||
|
assert(output.include?('1 row(s)'))
|
||||||
|
|
||||||
|
command(:set_quota,
|
||||||
|
TYPE => SPACE,
|
||||||
|
LIMIT => NONE,
|
||||||
|
NAMESPACE => ns)
|
||||||
|
output = capture_stdout { command(:describe_namespace, ns) }
|
||||||
|
assert(output.include?('0 row(s)'))
|
||||||
end
|
end
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
@ -332,6 +386,7 @@ module Hbase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
# rubocop:enable Metrics/ClassLength
|
||||||
|
|
||||||
# Simple administration methods tests
|
# Simple administration methods tests
|
||||||
class AdminCloneTableSchemaTest < Test::Unit::TestCase
|
class AdminCloneTableSchemaTest < Test::Unit::TestCase
|
||||||
|
|
Loading…
Reference in New Issue