You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2015/08/07 20:14:23 UTC

[2/5] hbase git commit: HBASE-14105 Add shell tests for Snapshot

HBASE-14105 Add shell tests for Snapshot

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bb1407d9
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bb1407d9
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bb1407d9

Branch: refs/heads/branch-1.2
Commit: bb1407d942ad8b9dcbe07947dfd08ac353725000
Parents: 0ec323f
Author: Ashish Singhi <as...@huawei.com>
Authored: Fri Aug 7 10:01:14 2015 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Fri Aug 7 10:01:14 2015 -0700

----------------------------------------------------------------------
 hbase-shell/src/test/ruby/hbase/admin_test.rb | 149 +++++++++++++++++++++
 hbase-shell/src/test/ruby/test_helper.rb      |   8 ++
 2 files changed, 157 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/bb1407d9/hbase-shell/src/test/ruby/hbase/admin_test.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/hbase/admin_test.rb b/hbase-shell/src/test/ruby/hbase/admin_test.rb
index b643890..713706f 100644
--- a/hbase-shell/src/test/ruby/hbase/admin_test.rb
+++ b/hbase-shell/src/test/ruby/hbase/admin_test.rb
@@ -385,4 +385,153 @@ module Hbase
       replication_status("replication", "sink")
     end
   end
+
+# Simple administration methods tests
+  class AdminSnapshotTest < Test::Unit::TestCase
+    include TestHelpers
+
+    def setup
+      setup_hbase
+      # Create test table if it does not exist
+      @test_name = "hbase_shell_tests_table"
+      drop_test_table(@test_name)
+      create_test_table(@test_name)
+	  #Test snapshot name
+      @create_test_snapshot = 'hbase_shell_tests_snapshot'
+    end
+
+    def teardown
+      shutdown
+    end
+
+    #-------------------------------------------------------------------------------
+    define_test "Snapshot should fail with non-string snapshot name" do
+      assert_raise(NoMethodError) do
+        admin.snapshot(123, 'xxx')
+      end
+    end
+
+    define_test "Snapshot should fail with non-string table name" do
+      assert_raise(NoMethodError) do
+        admin.snapshot(@create_test_snapshot, 123)
+      end
+    end
+
+    define_test "Snapshot should fail without table name" do
+      assert_raise(ArgumentError) do
+        admin.snapshot("hbase_create_test_snapshot")
+      end
+    end
+
+    define_test "Snapshot should work with string args" do
+      drop_test_snapshot()
+      admin.snapshot(@test_name, @create_test_snapshot)
+      list = admin.list_snapshot(@create_test_snapshot)
+      assert_equal(1, list.size)
+    end
+
+    define_test "Snapshot should work when SKIP_FLUSH args" do
+      drop_test_snapshot()
+      admin.snapshot(@test_name, @create_test_snapshot, {SKIP_FLUSH => true})
+      list = admin.list_snapshot(@create_test_snapshot)
+      assert_equal(1, list.size)
+    end
+
+    define_test "List snapshot without any args" do
+      drop_test_snapshot()
+      admin.snapshot(@test_name, @create_test_snapshot)
+      list = admin.list_snapshot()
+      assert_equal(1, list.size)
+    end
+
+    define_test "List snapshot for a non-existing snapshot" do
+      list = admin.list_snapshot("xyz")
+      assert_equal(0, list.size)
+    end
+
+    define_test "Restore snapshot without any args" do
+      assert_raise(ArgumentError) do
+        admin.restore_snapshot()
+      end
+    end
+
+    define_test "Restore snapshot should work" do
+      drop_test_snapshot()
+      restore_table = "test_restore_snapshot_table"
+      admin.create(restore_table, 'f1', 'f2')
+      assert_match(eval("/" + "f1" + "/"), admin.describe(restore_table))
+      assert_match(eval("/" + "f2" + "/"), admin.describe(restore_table))
+      admin.snapshot(restore_table, @create_test_snapshot)
+      admin.alter(restore_table, true, METHOD => 'delete', NAME => 'f1')
+      assert_no_match(eval("/" + "f1" + "/"), admin.describe(restore_table))
+      assert_match(eval("/" + "f2" + "/"), admin.describe(restore_table))
+      drop_test_table(restore_table)
+      admin.restore_snapshot(@create_test_snapshot)
+      assert_match(eval("/" + "f1" + "/"), admin.describe(restore_table))
+      assert_match(eval("/" + "f2" + "/"), admin.describe(restore_table))
+      drop_test_table(restore_table)
+    end
+
+    define_test "Clone snapshot without any args" do
+      assert_raise(ArgumentError) do
+        admin.restore_snapshot()
+      end
+    end
+
+    define_test "Clone snapshot without table name args" do
+      assert_raise(ArgumentError) do
+        admin.clone_snapshot(@create_test_snapshot)
+      end
+    end
+
+    define_test "Clone snapshot should work" do
+      drop_test_snapshot()
+      clone_table = "test_clone_snapshot_table"
+      assert_match(eval("/" + "x" + "/"), admin.describe(@test_name))
+      assert_match(eval("/" + "y" + "/"), admin.describe(@test_name))
+      admin.snapshot(@test_name, @create_test_snapshot)
+      admin.clone_snapshot(@create_test_snapshot, clone_table)
+      assert_match(eval("/" + "x" + "/"), admin.describe(clone_table))
+      assert_match(eval("/" + "y" + "/"), admin.describe(clone_table))
+      drop_test_table(clone_table)
+    end
+
+    define_test "Delete snapshot without any args" do
+      assert_raise(ArgumentError) do
+        admin.delete_snapshot()
+      end
+    end
+
+    define_test "Delete snapshot should work" do
+      drop_test_snapshot()
+      admin.snapshot(@test_name, @create_test_snapshot)
+      list = admin.list_snapshot()
+      assert_equal(1, list.size)
+      admin.delete_snapshot(@create_test_snapshot)
+      list = admin.list_snapshot()
+      assert_equal(0, list.size)
+    end
+
+    define_test "Delete all snapshots without any args" do
+      assert_raise(ArgumentError) do
+        admin.delete_all_snapshot()
+      end
+    end
+
+    define_test "Delete all snapshots should work" do
+      drop_test_snapshot()
+      admin.snapshot(@test_name, "delete_all_snapshot1")
+      admin.snapshot(@test_name, "delete_all_snapshot2")
+      admin.snapshot(@test_name, "snapshot_delete_all_1")
+      admin.snapshot(@test_name, "snapshot_delete_all_2")
+      list = admin.list_snapshot()
+      assert_equal(4, list.size)
+      admin.delete_all_snapshot("d.*")
+      list = admin.list_snapshot()
+      assert_equal(2, list.size)
+      admin.delete_all_snapshot(".*")
+      list = admin.list_snapshot()
+      assert_equal(0, list.size)
+    end
+  end
 end

http://git-wip-us.apache.org/repos/asf/hbase/blob/bb1407d9/hbase-shell/src/test/ruby/test_helper.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/test_helper.rb b/hbase-shell/src/test/ruby/test_helper.rb
index 80eb4f5..67bbb14 100644
--- a/hbase-shell/src/test/ruby/test_helper.rb
+++ b/hbase-shell/src/test/ruby/test_helper.rb
@@ -114,6 +114,14 @@ module Hbase
     def replication_status(format,type)
       return admin.status(format,type)
     end
+
+    def drop_test_snapshot()
+      begin
+        admin.delete_all_snapshot(".*")
+      rescue => e
+        puts "IGNORING DELETE ALL SNAPSHOT ERROR: #{e}"
+      end
+    end
   end
 end