You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by wc...@apache.org on 2022/04/05 16:53:26 UTC

[hbase] branch branch-2 updated: HBASE-26927 Add snapshot scanner UT with SFT and some cleanups to Tes… (#4322)

This is an automated email from the ASF dual-hosted git repository.

wchevreuil pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 1c14046ee05 HBASE-26927 Add snapshot scanner UT with SFT and some cleanups to Tes… (#4322)
1c14046ee05 is described below

commit 1c14046ee0522f2c2b5a985de5434b98bca5fc51
Author: Wellington Ramos Chevreuil <wc...@apache.org>
AuthorDate: Tue Apr 5 16:55:34 2022 +0100

    HBASE-26927 Add snapshot scanner UT with SFT and some cleanups to Tes… (#4322)
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
    Signed-off-by: Josh Elser <el...@apache.org>
    
    (cherry picked from commit ae3718be0fa11127cb272ddf305f8a0753f4603d)
---
 .../hbase/client/TestTableSnapshotScanner.java     | 38 +++++++++-----------
 .../client/TestTableSnapshotScannerWithSFT.java    | 42 ++++++++++++++++++++++
 2 files changed, 59 insertions(+), 21 deletions(-)

diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java
index c51df964897..de678e7185e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java
@@ -50,6 +50,7 @@ import org.apache.hadoop.hbase.util.HFileArchiveUtil;
 import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
 import org.junit.After;
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
@@ -74,6 +75,7 @@ public class TestTableSnapshotScanner {
 
   private FileSystem fs;
   private Path rootDir;
+  private boolean clusterUp;
 
   @Rule
   public TestName name = new TestName();
@@ -89,29 +91,30 @@ public class TestTableSnapshotScanner {
     }
   }
 
+  @Before
   public void setupCluster() throws Exception {
     setupConf(UTIL.getConfiguration());
     StartMiniClusterOption option = StartMiniClusterOption.builder()
         .numRegionServers(NUM_REGION_SERVERS).numDataNodes(NUM_REGION_SERVERS)
         .createRootDir(true).build();
     UTIL.startMiniCluster(option);
+    clusterUp = true;
     rootDir = UTIL.getHBaseCluster().getMaster().getMasterFileSystem().getRootDir();
     fs = rootDir.getFileSystem(UTIL.getConfiguration());
   }
 
+  @After
   public void tearDownCluster() throws Exception {
-    UTIL.shutdownMiniCluster();
+    if (clusterUp) {
+      UTIL.shutdownMiniCluster();
+    }
   }
 
-  private static void setupConf(Configuration conf) {
+  protected void setupConf(Configuration conf) {
     // Enable snapshot
     conf.setBoolean(SnapshotManager.HBASE_SNAPSHOT_ENABLED, true);
   }
 
-  @After
-  public void tearDown() throws Exception {
-  }
-
   public static void createTableAndSnapshot(HBaseTestingUtility util, TableName tableName,
       String snapshotName, int numRegions)
       throws Exception {
@@ -149,7 +152,6 @@ public class TestTableSnapshotScanner {
 
   @Test
   public void testNoDuplicateResultsWhenSplitting() throws Exception {
-    setupCluster();
     TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");
     String snapshotName = "testSnapshotBug";
     try {
@@ -195,14 +197,12 @@ public class TestTableSnapshotScanner {
     } finally {
       UTIL.getAdmin().deleteSnapshot(snapshotName);
       UTIL.deleteTable(tableName);
-      tearDownCluster();
     }
   }
 
 
   @Test
   public void testScanLimit() throws Exception {
-    setupCluster();
     final TableName tableName = TableName.valueOf(name.getMethodName());
     final String snapshotName = tableName + "Snapshot";
     TableSnapshotScanner scanner = null;
@@ -227,7 +227,6 @@ public class TestTableSnapshotScanner {
       }
       UTIL.getAdmin().deleteSnapshot(snapshotName);
       UTIL.deleteTable(tableName);
-      tearDownCluster();
     }
   }
 
@@ -248,7 +247,6 @@ public class TestTableSnapshotScanner {
 
   @Test
   public void testScannerWithRestoreScanner() throws Exception {
-    setupCluster();
     TableName tableName = TableName.valueOf("testScanner");
     String snapshotName = "testScannerWithRestoreScanner";
     try {
@@ -288,19 +286,18 @@ public class TestTableSnapshotScanner {
     } finally {
       UTIL.getAdmin().deleteSnapshot(snapshotName);
       UTIL.deleteTable(tableName);
-      tearDownCluster();
     }
   }
 
   private void testScanner(HBaseTestingUtility util, String snapshotName, int numRegions,
       boolean shutdownCluster) throws Exception {
-    setupCluster();
     TableName tableName = TableName.valueOf("testScanner");
     try {
       createTableAndSnapshot(util, tableName, snapshotName, numRegions);
 
       if (shutdownCluster) {
         util.shutdownMiniHBaseCluster();
+        clusterUp = false;
       }
 
       Path restoreDir = util.getDataTestDirOnTestFS(snapshotName);
@@ -312,10 +309,9 @@ public class TestTableSnapshotScanner {
       verifyScanner(scanner, bbb, yyy);
       scanner.close();
     } finally {
-      if (!shutdownCluster) {
+      if (clusterUp) {
         util.getAdmin().deleteSnapshot(snapshotName);
         util.deleteTable(tableName);
-        tearDownCluster();
       }
     }
   }
@@ -359,7 +355,6 @@ public class TestTableSnapshotScanner {
 
   @Test
   public void testMergeRegion() throws Exception {
-    setupCluster();
     TableName tableName = TableName.valueOf("testMergeRegion");
     String snapshotName = tableName.getNameAsString() + "_snapshot";
     Configuration conf = UTIL.getConfiguration();
@@ -385,9 +380,12 @@ public class TestTableSnapshotScanner {
           for (RegionInfo region : regions) {
             Path regionDir = new Path(tableDir, region.getEncodedName());
             for (Path familyDir : FSUtils.getFamilyDirs(fs, regionDir)) {
-              if (fs.listStatus(familyDir).length != 1) {
-                return false;
+              for (FileStatus fs : fs.listStatus(familyDir)) {
+                if(!fs.getPath().getName().equals(".filelist")) {
+                  return true;
+                }
               }
+              return false;
             }
           }
           return true;
@@ -462,17 +460,15 @@ public class TestTableSnapshotScanner {
       }
     } catch (Exception e) {
       LOG.error("scan snapshot error", e);
+      Assert.fail("Should not throw Exception: " + e.getMessage());
       Assert.fail("Should not throw FileNotFoundException");
       Assert.assertTrue(e.getCause() != null);
       Assert.assertTrue(e.getCause().getCause() instanceof FileNotFoundException);
-    } finally {
-      tearDownCluster();
     }
   }
 
   @Test
   public void testDeleteTableWithMergedRegions() throws Exception {
-    setupCluster();
     final TableName tableName = TableName.valueOf(this.name.getMethodName());
     String snapshotName = tableName.getNameAsString() + "_snapshot";
     Configuration conf = UTIL.getConfiguration();
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScannerWithSFT.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScannerWithSFT.java
new file mode 100644
index 00000000000..e7eadcfb59e
--- /dev/null
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScannerWithSFT.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.client;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.regionserver.storefiletracker.StoreFileTrackerFactory;
+import org.apache.hadoop.hbase.testclassification.ClientTests;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
+import org.junit.ClassRule;
+import org.junit.experimental.categories.Category;
+
+@Category({ LargeTests.class, ClientTests.class})
+public class TestTableSnapshotScannerWithSFT extends TestTableSnapshotScanner {
+
+  @ClassRule
+  public static final HBaseClassTestRule CLASS_RULE =
+    HBaseClassTestRule.forClass(TestTableSnapshotScannerWithSFT.class);
+
+  @Override
+  protected void setupConf(Configuration conf) {
+    super.setupConf(conf);
+    // Enable snapshot
+    conf.set(StoreFileTrackerFactory.TRACKER_IMPL, StoreFileTrackerFactory.Trackers.FILE.name());
+  }
+
+}