You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2020/04/20 14:45:17 UTC

[hbase-site] branch asf-site updated: Published site at bcacc4ce939e60fd69891df6315a39aef852b567.

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new bfc2932  Published site at bcacc4ce939e60fd69891df6315a39aef852b567.
bfc2932 is described below

commit bfc2932c1c1de1df31a7bcc876a54422f020d148
Author: jenkins <bu...@apache.org>
AuthorDate: Mon Apr 20 14:44:43 2020 +0000

    Published site at bcacc4ce939e60fd69891df6315a39aef852b567.
---
 acid-semantics.html                                |   2 +-
 apache_hbase_reference_guide.pdf                   |   4 +-
 book.html                                          |   2 +-
 bulk-loads.html                                    |   2 +-
 checkstyle-aggregate.html                          |  10 +-
 coc.html                                           |   2 +-
 dependencies.html                                  |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 devapidocs/constant-values.html                    |   4 +-
 .../src-html/org/apache/hadoop/hbase/Version.html  |   4 +-
 .../hbase/master/snapshot/SnapshotManager.html     |   2 +-
 downloads.html                                     |   2 +-
 export_control.html                                |   2 +-
 index.html                                         |   2 +-
 issue-tracking.html                                |   2 +-
 mail-lists.html                                    |   2 +-
 metrics.html                                       |   2 +-
 old_news.html                                      |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 poweredbyhbase.html                                |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 project-summary.html                               |   2 +-
 pseudo-distributed.html                            |   2 +-
 replication.html                                   |   2 +-
 resources.html                                     |   2 +-
 source-repository.html                             |   2 +-
 sponsors.html                                      |   2 +-
 supportingprojects.html                            |   2 +-
 team-list.html                                     |   2 +-
 testdevapidocs/index-all.html                      |  10 +
 .../apache/hadoop/hbase/backup/package-tree.html   |   2 +-
 .../SnapshotWithAclTestBase.AccessReadAction.html  |  12 +-
 ...pshotWithAclTestBase.AccessSnapshotAction.html} |  52 +-
 .../SnapshotWithAclTestBase.AccessWriteAction.html |  12 +-
 .../hbase/client/SnapshotWithAclTestBase.html      |  70 ++-
 .../hadoop/hbase/client/TestSnapshotWithAcl.html   |   4 +-
 .../client/TestSnapshotWithAclAsyncAdmin.html      |   4 +-
 ...apshotWithAclTestBase.AccessSnapshotAction.html | 125 +++++
 .../hadoop/hbase/client/package-summary.html       | 552 ++++++++++-----------
 .../apache/hadoop/hbase/client/package-tree.html   |   1 +
 .../apache/hadoop/hbase/io/hfile/package-tree.html |   2 +-
 .../org/apache/hadoop/hbase/package-tree.html      |  10 +-
 .../hadoop/hbase/procedure2/package-tree.html      |   2 +-
 .../hadoop/hbase/regionserver/package-tree.html    |   6 +-
 .../access/SecureTestUtil.AccessTestAction.html    |   2 +-
 .../class-use/SecureTestUtil.AccessTestAction.html |   4 +
 .../org/apache/hadoop/hbase/test/package-tree.html |   2 +-
 .../org/apache/hadoop/hbase/wal/package-tree.html  |   2 +-
 testdevapidocs/overview-tree.html                  |   1 +
 .../SnapshotWithAclTestBase.AccessReadAction.html  | 456 +++++++++--------
 ...apshotWithAclTestBase.AccessSnapshotAction.html | 347 +++++++++++++
 .../SnapshotWithAclTestBase.AccessWriteAction.html | 456 +++++++++--------
 .../hbase/client/SnapshotWithAclTestBase.html      | 456 +++++++++--------
 57 files changed, 1657 insertions(+), 1013 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 1f94158..b2200b8 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -467,7 +467,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index cfa0e8c..0bf29fd 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.rc.2, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20200418143108+00'00')
-/CreationDate (D:20200418144327+00'00')
+/ModDate (D:20200420143113+00'00')
+/CreationDate (D:20200420144156+00'00')
 >>
 endobj
 2 0 obj
diff --git a/book.html b/book.html
index 42e999a..e58f574 100644
--- a/book.html
+++ b/book.html
@@ -45200,7 +45200,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2020-04-18 14:31:08 UTC
+Last updated 2020-04-20 14:31:13 UTC
 </div>
 </div>
 <script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 5209fd3..36d166f 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -172,7 +172,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 6a2b400..4e925c4 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7369,7 +7369,7 @@
 <tr class="a">
 <td>annotation</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
-<td>9</td>
+<td>10</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>blocks</td>
@@ -7468,7 +7468,7 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>596</td>
+<td>595</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -8500,8 +8500,8 @@
 <td>600</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>annotation</td>
+<td>MissingDeprecated</td>
 <td>Javadoc comment at column 33 has parse error. Details: no viable alternative at input '&lt;Map.Entry&lt;' while parsing HTML_ELEMENT</td>
 <td>642</td></tr>
 <tr class="a">
@@ -80038,7 +80038,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/coc.html b/coc.html
index 2315597..f36203e 100644
--- a/coc.html
+++ b/coc.html
@@ -241,7 +241,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index f6baa6a..169e853 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -313,7 +313,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index f7054a4..c1b36c3 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -755,7 +755,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index 90cfdf4..d487181 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -194,7 +194,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 3810e44..9019e2d 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1061,7 +1061,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 0f20426..565fccd 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -4165,14 +4165,14 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Apr 18 14:40:01 UTC 2020"</code></td>
+<td class="colLast"><code>"Mon Apr 20 14:38:13 UTC 2020"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"2846ea4700d1802e6ec907a99087d0b24806ce51"</code></td>
+<td class="colLast"><code>"bcacc4ce939e60fd69891df6315a39aef852b567"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index f6b137e..2614afe 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <span class="sourceLineNo">010</span>  justification="Intentional; to be modified in test")<a name="line.10"></a>
 <span class="sourceLineNo">011</span>public class Version {<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String version = new String("3.0.0-SNAPSHOT");<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String revision = "2846ea4700d1802e6ec907a99087d0b24806ce51";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String revision = "bcacc4ce939e60fd69891df6315a39aef852b567";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String user = "jenkins";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String date = "Sat Apr 18 14:40:01 UTC 2020";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String date = "Mon Apr 20 14:38:13 UTC 2020";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>  public static final String url = "git://jenkins-websites-he-de.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.16"></a>
 <span class="sourceLineNo">017</span>  public static final String srcChecksum = "(stdin)=";<a name="line.17"></a>
 <span class="sourceLineNo">018</span>}<a name="line.18"></a>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html
index e9e68e4..91249d6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html
@@ -643,7 +643,7 @@
 <span class="sourceLineNo">635</span>      builder.setVersion(SnapshotDescriptionUtils.SNAPSHOT_LAYOUT_VERSION);<a name="line.635"></a>
 <span class="sourceLineNo">636</span>    }<a name="line.636"></a>
 <span class="sourceLineNo">637</span>    RpcServer.getRequestUser().ifPresent(user -&gt; {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      if (User.isHBaseSecurityEnabled(master.getConfiguration())) {<a name="line.638"></a>
+<span class="sourceLineNo">638</span>      if (AccessChecker.isAuthorizationSupported(master.getConfiguration())) {<a name="line.638"></a>
 <span class="sourceLineNo">639</span>        builder.setOwner(user.getShortName());<a name="line.639"></a>
 <span class="sourceLineNo">640</span>      }<a name="line.640"></a>
 <span class="sourceLineNo">641</span>    });<a name="line.641"></a>
diff --git a/downloads.html b/downloads.html
index 0e0cef0..9c7bd0b 100644
--- a/downloads.html
+++ b/downloads.html
@@ -465,7 +465,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index 174bff4..277d454 100644
--- a/export_control.html
+++ b/export_control.html
@@ -197,7 +197,7 @@ for more details.</p>
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index 5d3f1eb..c9a935c 100644
--- a/index.html
+++ b/index.html
@@ -275,7 +275,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-tracking.html b/issue-tracking.html
index c7cd45c..436266a 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -169,7 +169,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/mail-lists.html b/mail-lists.html
index 618bf4f..c9f46df 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -229,7 +229,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index e3ab136..62b3833 100644
--- a/metrics.html
+++ b/metrics.html
@@ -325,7 +325,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index 68c4472..1f1e896 100644
--- a/old_news.html
+++ b/old_news.html
@@ -316,7 +316,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index 212548c..05fc7a5 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -321,7 +321,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index 03b3058..ac677c9 100644
--- a/plugins.html
+++ b/plugins.html
@@ -248,7 +248,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 37c2b29..c50b1f4 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -650,7 +650,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index f1d12f8..a1c0538 100644
--- a/project-info.html
+++ b/project-info.html
@@ -210,7 +210,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index bbe2597..68645d2 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -186,7 +186,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-summary.html b/project-summary.html
index 811c654..2a0c1b0 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -212,7 +212,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index abbe999..ecc4f6a 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -174,7 +174,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index b163ca6..7bc06d2 100644
--- a/replication.html
+++ b/replication.html
@@ -169,7 +169,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index 1a3dcd5..2732889 100644
--- a/resources.html
+++ b/resources.html
@@ -197,7 +197,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/source-repository.html b/source-repository.html
index 1111d14..e737a8d 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -180,7 +180,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index 4389fd7..2910a94 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -199,7 +199,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index 01fa77c..8c8aaa6 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -390,7 +390,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team-list.html b/team-list.html
index 265c3cd..364a9c9 100644
--- a/team-list.html
+++ b/team-list.html
@@ -701,7 +701,7 @@
         <div class="row">
             <p>Copyright &copy;2007&#x2013;2020
 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
-All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-18</li>
+All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2020-04-20</li>
 </p>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 2836f56..095cdea 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -434,6 +434,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#AccessReadAction-org.apache.hadoop.hbase.TableName-">AccessReadAction(TableName)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#AccessSnapshotAction-java.lang.String-">AccessSnapshotAction(String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/client/RemoteAdmin.html#accessToken">accessToken</a></span> - Variable in class org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/RemoteAdmin.html" title="class in org.apache.hadoop.hbase.rest.client">RemoteAdmin</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#AccessWriteAction-org.apache.hadoop.hbase.TableName-">AccessWriteAction(TableName)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></dt>
@@ -39788,6 +39790,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreaded.html#run-java.util.concurrent.atomic.AtomicBoolean-">run(AtomicBoolean)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreaded.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableGetMultiThreaded</a></dt>
@@ -44839,6 +44843,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.html#SnapshotMock-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-">SnapshotMock(Configuration, FileSystem, Path)</a></span> - Constructor for class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotTestingUtils.S [...]
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#snapshotName">snapshotName</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#snapshotName">snapshotName</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScanPerformanceEvaluation.html#snapshotName">snapshotName</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScanPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">ScanPerformanceEvaluation</a></dt>
@@ -44909,6 +44915,8 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessReadAction</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessSnapshotAction</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessWriteAction</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/TestRpcServerSlowConnectionSetup.html#socket">socket</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestRpcServerSlowConnectionSetup.html" title="class in org.apache.hadoop.hbase.ipc">TestRpcServerSlowConnectionSetup</a></dt>
@@ -56051,6 +56059,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html#testDeleteSingleTimestamp--">testDeleteSingleTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testDeleteSnapshot--">testDeleteSnapshot()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.html#testDeleteSnapshot--">testDeleteSnapshot()</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestSnapshotFromMaster.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestSnapshotFromMaster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncSnapshotAdminApi.html#testDeleteSnapshots--">testDeleteSnapshots()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncSnapshotAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncSnapshotAdminApi</a></dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index fa6650a..88e37d3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -150,8 +150,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
index 398e02e..9ca7101 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" target="_top">Frames</a></li>
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.61">SnapshotWithAclTestBase.AccessReadAction</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.64">SnapshotWithAclTestBase.AccessReadAction</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a></pre>
 </li>
@@ -206,7 +206,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.63">tableName</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.66">tableName</a></pre>
 </li>
 </ul>
 </li>
@@ -223,7 +223,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AccessReadAction</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.65">AccessReadAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.68">AccessReadAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -240,7 +240,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.70">run</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.73">run</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" target="_top">Frames</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html
similarity index 81%
copy from testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
copy to testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html
index 398e02e..1eb3df7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html
@@ -4,7 +4,7 @@
 <head>
 <!-- Generated by javadoc -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>SnapshotWithAclTestBase.AccessReadAction (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<title>SnapshotWithAclTestBase.AccessSnapshotAction (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
 <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
 <script type="text/javascript" src="../../../../../script.js"></script>
 </head>
@@ -12,7 +12,7 @@
 <script type="text/javascript"><!--
     try {
         if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="SnapshotWithAclTestBase.AccessReadAction (Apache HBase 3.0.0-SNAPSHOT Test API)";
+            parent.document.title="SnapshotWithAclTestBase.AccessSnapshotAction (Apache HBase 3.0.0-SNAPSHOT Test API)";
         }
     }
     catch(err) {
@@ -40,7 +40,7 @@ var activeTableTab = "activeTableTab";
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/SnapshotWithAclTestBase.AccessReadAction.html">Use</a></li>
+<li><a href="class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../../index-all.html">Index</a></li>
@@ -49,12 +49,12 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" target="_top">Frames</a></li>
-<li><a href="SnapshotWithAclTestBase.AccessReadAction.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">Frames</a></li>
+<li><a href="SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_top">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
@@ -93,14 +93,14 @@ var activeTableTab = "activeTableTab";
 <!-- ======== START OF CLASS DATA ======== -->
 <div class="header">
 <div class="subTitle">org.apache.hadoop.hbase.client</div>
-<h2 title="Class SnapshotWithAclTestBase.AccessReadAction" class="title">Class SnapshotWithAclTestBase.AccessReadAction</h2>
+<h2 title="Class SnapshotWithAclTestBase.AccessSnapshotAction" class="title">Class SnapshotWithAclTestBase.AccessSnapshotAction</h2>
 </div>
 <div class="contentContainer">
 <ul class="inheritance">
 <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessReadAction</li>
+<li>org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessSnapshotAction</li>
 </ul>
 </li>
 </ul>
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.61">SnapshotWithAclTestBase.AccessReadAction</a>
+<pre>final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.236">SnapshotWithAclTestBase.AccessSnapshotAction</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a></pre>
 </li>
@@ -139,8 +139,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.TableName</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#tableName">tableName</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#snapshotName">snapshotName</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -154,10 +154,12 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
-<th class="colOne" scope="col">Constructor and Description</th>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#AccessReadAction-org.apache.hadoop.hbase.TableName-">AccessReadAction</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#AccessSnapshotAction-java.lang.String-">AccessSnapshotAction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -176,7 +178,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#run--">run</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#run--">run</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -200,13 +202,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="tableName">
+<a name="snapshotName">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>tableName</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.63">tableName</a></pre>
+<h4>snapshotName</h4>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#line.237">snapshotName</a></pre>
 </li>
 </ul>
 </li>
@@ -217,13 +219,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="AccessReadAction-org.apache.hadoop.hbase.TableName-">
+<a name="AccessSnapshotAction-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>AccessReadAction</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.65">AccessReadAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<h4>AccessSnapshotAction</h4>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#line.238">AccessSnapshotAction</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)</pre>
 </li>
 </ul>
 </li>
@@ -240,7 +242,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html#line.70">run</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html#line.242">run</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -269,7 +271,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <li><a href="../../../../../overview-summary.html">Overview</a></li>
 <li><a href="package-summary.html">Package</a></li>
 <li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/SnapshotWithAclTestBase.AccessReadAction.html">Use</a></li>
+<li><a href="class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html">Use</a></li>
 <li><a href="package-tree.html">Tree</a></li>
 <li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
 <li><a href="../../../../../index-all.html">Index</a></li>
@@ -278,12 +280,12 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" target="_top">Frames</a></li>
-<li><a href="SnapshotWithAclTestBase.AccessReadAction.html" target="_top">No&nbsp;Frames</a></li>
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">Frames</a></li>
+<li><a href="SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">No&nbsp;Frames</a></li>
 </ul>
 <ul class="navList" id="allclasses_navbar_bottom">
 <li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html
index f05c934..57dc102 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.81">SnapshotWithAclTestBase.AccessWriteAction</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.84">SnapshotWithAclTestBase.AccessWriteAction</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAction</a></pre>
 </li>
@@ -206,7 +206,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#line.82">tableName</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#line.85">tableName</a></pre>
 </li>
 </ul>
 </li>
@@ -223,7 +223,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AccessWriteAction</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#line.84">AccessWriteAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#line.87">AccessWriteAction</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
 </li>
 </ul>
 </li>
@@ -240,7 +240,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#line.89">run</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html#line.92">run</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -278,7 +278,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/security/access/Secur
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html
index bbb0ecc..4f20fa5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":10,"i2":6,"i3":10,"i4":9,"i5":6,"i6":9,"i7":10,"i8":10};
+var methods = {"i0":6,"i1":10,"i2":6,"i3":10,"i4":9,"i5":6,"i6":9,"i7":10,"i8":10,"i9":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.40">SnapshotWithAclTestBase</a>
+<pre>public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.43">SnapshotWithAclTestBase</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.html" title="class in org.apache.hadoop.hbase.security.access">SecureTestUtil</a></pre>
 </li>
 </ul>
@@ -143,6 +143,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>(package private) class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></span></code>&nbsp;</td>
 </tr>
@@ -274,9 +278,13 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 </tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testRestoreSnapshot--">testRestoreSnapshot</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testDeleteSnapshot--">testDeleteSnapshot</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testRestoreSnapshot--">testRestoreSnapshot</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#verifyRows-org.apache.hadoop.hbase.TableName-">verifyRows</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
 </tr>
@@ -315,7 +323,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_TABLE</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.42">TEST_TABLE</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.45">TEST_TABLE</a></pre>
 </li>
 </ul>
 <a name="ROW_COUNT">
@@ -324,7 +332,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW_COUNT</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.44">ROW_COUNT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.47">ROW_COUNT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.ROW_COUNT">Constant Field Values</a></dd>
@@ -337,7 +345,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_FAMILY</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.46">TEST_FAMILY</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.49">TEST_FAMILY</a></pre>
 </li>
 </ul>
 <a name="TEST_QUALIFIER">
@@ -346,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_QUALIFIER</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.47">TEST_QUALIFIER</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.50">TEST_QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="TEST_ROW">
@@ -355,7 +363,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_ROW</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.48">TEST_ROW</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.51">TEST_ROW</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -364,7 +372,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.50">TEST_UTIL</a></pre>
+<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.53">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="USER_OWNER">
@@ -373,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_OWNER</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.53">USER_OWNER</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.56">USER_OWNER</a></pre>
 </li>
 </ul>
 <a name="USER_RW">
@@ -382,7 +390,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_RW</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.55">USER_RW</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.58">USER_RW</a></pre>
 </li>
 </ul>
 <a name="USER_RO">
@@ -391,7 +399,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>USER_RO</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.57">USER_RO</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.60">USER_RO</a></pre>
 </li>
 </ul>
 <a name="USER_NONE">
@@ -400,7 +408,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>USER_NONE</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.59">USER_NONE</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.security.User <a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.62">USER_NONE</a></pre>
 </li>
 </ul>
 </li>
@@ -417,7 +425,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SnapshotWithAclTestBase</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.40">SnapshotWithAclTestBase</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.43">SnapshotWithAclTestBase</a>()</pre>
 </li>
 </ul>
 </li>
@@ -434,7 +442,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>setupBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.101">setupBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.104">setupBeforeClass</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -448,7 +456,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.123">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.126">setUp</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -462,7 +470,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>loadData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.137">loadData</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.140">loadData</a>()
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -476,7 +484,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.150">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.153">tearDownAfterClass</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -490,7 +498,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyRows</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.154">verifyRows</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.157">verifyRows</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -504,7 +512,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.167">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.170">snapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                  org.apache.hadoop.hbase.TableName&nbsp;tableName)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -519,7 +527,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>cloneSnapshot</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.169">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.172">cloneSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                       org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                       boolean&nbsp;restoreAcl)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -535,7 +543,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.172">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.175">restoreSnapshot</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                         boolean&nbsp;restoreAcl)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
@@ -547,10 +555,10 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 <a name="testRestoreSnapshot--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testRestoreSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.175">testRestoreSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.178">testRestoreSnapshot</a>()
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -558,6 +566,20 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTe
 </dl>
 </li>
 </ul>
+<a name="testDeleteSnapshot--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testDeleteSnapshot</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#line.252">testDeleteSnapshot</a>()
+                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html
index 281aa80..b8f54d3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html
@@ -138,7 +138,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTe
 <!--   -->
 </a>
 <h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessW [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.security.access.SecureTestUtil">
@@ -226,7 +226,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setUp--">setUp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setupBeforeClass--">setupBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testRestoreSnapshot--">testRestoreSnapshot [...]
+<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setUp--">setUp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setupBeforeClass--">setupBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testDeleteSnapshot--">testDeleteSnapshot</ [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.security.access.SecureTestUtil">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAclAsyncAdmin.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAclAsyncAdmin.html
index c27e3d7..8a649e6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAclAsyncAdmin.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestSnapshotWithAclAsyncAdmin.html
@@ -138,7 +138,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTe
 <!--   -->
 </a>
 <h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessW [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.security.access.SecureTestUtil">
@@ -226,7 +226,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setUp--">setUp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setupBeforeClass--">setupBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testRestoreSnapshot--">testRestoreSnapshot [...]
+<code><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setUp--">setUp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#setupBeforeClass--">setupBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html#testDeleteSnapshot--">testDeleteSnapshot</ [...]
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.security.access.SecureTestUtil">
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html
new file mode 100644
index 0000000..50095c1
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessSnapshotAction (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessSnapshotAction (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">Frames</a></li>
+<li><a href="SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessSnapshotAction" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessSnapshotAction</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.SnapshotWithAclTestBase.AccessSnapshotAction</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">Frames</a></li>
+<li><a href="SnapshotWithAclTestBase.AccessSnapshotAction.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
index c7c19c8..7757bcd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -303,1153 +303,1153 @@
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin.html" title="class in org.apache.hadoop.hbase.client">TestAdmin</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin1.html" title="class in org.apache.hadoop.hbase.client">TestAdmin1</a></td>
 <td class="colLast">
 <div class="block">Class to test HBaseAdmin.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin2.html" title="class in org.apache.hadoop.hbase.client">TestAdmin2</a></td>
 <td class="colLast">
 <div class="block">Class to test HBaseAdmin.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin3.html" title="class in org.apache.hadoop.hbase.client">TestAdmin3</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminBase.html" title="class in org.apache.hadoop.hbase.client">TestAdminBase</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell.html" title="class in org.apache.hadoop.hbase.client">TestAdminShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell2.html" title="class in org.apache.hadoop.hbase.client">TestAdminShell2</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAllowPartialScanResultCache.html" title="class in org.apache.hadoop.hbase.client">TestAllowPartialScanResultCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAlwaysSetScannerId.html" title="class in org.apache.hadoop.hbase.client">TestAlwaysSetScannerId</a></td>
 <td class="colLast">
 <div class="block">Testcase to make sure that we always set scanner id in ScanResponse.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAppendFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestAppendFromClientSide</a></td>
 <td class="colLast">
 <div class="block">Run Append tests that use the HBase clients;</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAccessControlAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAccessControlAdminApi</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBase.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBase</a></td>
 <td class="colLast">
 <div class="block">Class to test AsyncAdmin.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBuilder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.TestMaxRetriesCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBuilder.TestMaxRetriesCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.TestOperationTimeoutCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBuilder.TestOperationTimeoutCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.TestRpcTimeoutCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBuilder.TestRpcTimeoutCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminMasterSwitch.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminMasterSwitch</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-22135.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminRpcPriority.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminRpcPriority</a></td>
 <td class="colLast">
 <div class="block">Confirm that we will set the priority in <code>HBaseRpcController</code> for several admin operations.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAggregationClient.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAggregationClient</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncBufferMutator.html" title="class in org.apache.hadoop.hbase.client">TestAsyncBufferMutator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncBufferMutator.AsyncBufferMutatorForTest.html" title="class in org.apache.hadoop.hbase.client">TestAsyncBufferMutator.AsyncBufferMutatorForTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClientPauseForCallQueueTooBig.html" title="class in org.apache.hadoop.hbase.client">TestAsyncClientPauseForCallQueueTooBig</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClientPauseForCallQueueTooBig.CQTBERpcScheduler.html" title="class in org.apache.hadoop.hbase.client">TestAsyncClientPauseForCallQueueTooBig.CQTBERpcScheduler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClientPauseForCallQueueTooBig.CQTBERpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.client">TestAsyncClientPauseForCallQueueTooBig.CQTBERpcSchedulerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClientPushback.html" title="class in org.apache.hadoop.hbase.client">TestAsyncClientPushback</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClusterAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncClusterAdminApi</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClusterAdminApi2.html" title="class in org.apache.hadoop.hbase.client">TestAsyncClusterAdminApi2</a></td>
 <td class="colLast">
 <div class="block">Only used to test stopMaster/stopRegionServer/shutdown methods.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncDecommissionAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncDecommissionAdminApi</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.html" title="class in org.apache.hadoop.hbase.client">TestAsyncMetaRegionLocator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocatorFailFast.html" title="class in org.apache.hadoop.hbase.client">TestAsyncMetaRegionLocatorFailFast</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocatorFailFast.FaultyConnectionRegistry.html" title="class in org.apache.hadoop.hbase.client">TestAsyncMetaRegionLocatorFailFast.FaultyConnectionRegistry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncNamespaceAdminApi</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous namespace admin operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html" title="class in org.apache.hadoop.hbase.client">TestAsyncNonMetaRegionLocator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocatorConcurrenyLimit.html" title="class in org.apache.hadoop.hbase.client">TestAsyncNonMetaRegionLocatorConcurrenyLimit</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocatorConcurrenyLimit.CountingRegionObserver.html" title="class in org.apache.hadoop.hbase.client">TestAsyncNonMetaRegionLocatorConcurrenyLimit.CountingRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncProcedureAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcedureAdminApi</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous procedure admin operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncQuotaAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncQuotaAdminApi</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncRegionAdminApi</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous region admin operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi2.html" title="class in org.apache.hadoop.hbase.client">TestAsyncRegionAdminApi2</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous region admin operations.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionLocator.html" title="class in org.apache.hadoop.hbase.client">TestAsyncRegionLocator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionLocator.SleepRegionObserver.html" title="class in org.apache.hadoop.hbase.client">TestAsyncRegionLocator.SleepRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncReplicationAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncReplicationAdminApi</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous replication admin operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncReplicationAdminApiWithClusters.html" title="class in org.apache.hadoop.hbase.client">TestAsyncReplicationAdminApiWithClusters</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous replication admin operations when more than 1 cluster</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncResultScannerCursor.html" title="class in org.apache.hadoop.hbase.client">TestAsyncResultScannerCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncSingleRequestRpcRetryingCaller.html" title="class in org.apache.hadoop.hbase.client">TestAsyncSingleRequestRpcRetryingCaller</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncSnapshotAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncSnapshotAdminApi</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTable.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableAdminApi</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous table admin operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableAdminApi2</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous table admin operations</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableAdminApi3</a></td>
 <td class="colLast">
 <div class="block">Class to test asynchronous table admin operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableBatch.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableBatch</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableBatch.ErrorInjectObserver.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableBatch.ErrorInjectObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableBatchRetryImmediately.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableBatchRetryImmediately</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreaded.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableGetMultiThreaded</a></td>
 <td class="colLast">
 <div class="block">Will split the table, and move region randomly when testing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreadedWithBasicCompaction.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableGetMultiThreadedWithBasicCompaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreadedWithEagerCompaction.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableGetMultiThreadedWithEagerCompaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableLocatePrefetch.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableLocatePrefetch</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableLocateRegionForDeletedTable.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableLocateRegionForDeletedTable</a></td>
 <td class="colLast">
 <div class="block">Fix an infinite loop in <code>AsyncNonMetaRegionLocator</code>, see the comments on HBASE-21943 for
  more details.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableNoncedRetry.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableNoncedRetry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableNoncedRetry.SleepOnceCP.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableNoncedRetry.SleepOnceCP</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableRegionLocator.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableRegionLocator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableRegionReplicasGet.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableRegionReplicasGet</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableRegionReplicasScan.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableRegionReplicasScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableRpcPriority.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableRpcPriority</a></td>
 <td class="colLast">
 <div class="block">Confirm that we will set the priority in <code>HBaseRpcController</code> for several table operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableRSCrashPublish.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableRSCrashPublish</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanAll.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanAll</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanException.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanException.ErrorCP.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanException.ErrorCP</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanner.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScannerCloseWhileSuspending</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanRenewLease</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.RenewLeaseConsumer.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableScanRenewLease.RenewLeaseConsumer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableUseMetaReplicas.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableUseMetaReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableUseMetaReplicas.FailPrimaryMetaScanCp.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTableUseMetaReplicas.FailPrimaryMetaScanCp</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncToolAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncToolAdminApi</a></td>
 <td class="colLast">
 <div class="block">Test the admin operations for Balancer, Normalizer, CleanerChore, and CatalogJanitor.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAttributes.html" title="class in org.apache.hadoop.hbase.client">TestAttributes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html" title="class in org.apache.hadoop.hbase.client">TestAvoidCellReferencesIntoShippedBlocks</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.CompactorInternalScanner.html" title="class in org.apache.hadoop.hbase.client">TestAvoidCellReferencesIntoShippedBlocks.CompactorInternalScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.CompactorRegionObserver.html" title="class in org.apache.hadoop.hbase.client">TestAvoidCellReferencesIntoShippedBlocks.CompactorRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.ScannerThread.html" title="class in org.apache.hadoop.hbase.client">TestAvoidCellReferencesIntoShippedBlocks.ScannerThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBatchScanResultCache.html" title="class in org.apache.hadoop.hbase.client">TestBatchScanResultCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserver.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.CustomInnerRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomInnerRegionObserverWrapper.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.CustomInnerRegionObserverWrapper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.CustomScanner.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.CustomScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.GetThread.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.GetThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.MultiGetThread.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.MultiGetThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.ScanThread.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.ScanThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBufferedMutator.html" title="class in org.apache.hadoop.hbase.client">TestBufferedMutator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client">TestBufferedMutatorParams</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestBufferedMutatorParams.MockExceptionListener.html" title="class in org.apache.hadoop.hbase.client">TestBufferedMutatorParams.MockExceptionListener</a></td>
 <td class="colLast">
 <div class="block">Just to create an instance, this doesn't actually function.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCheckAndMutate.html" title="class in org.apache.hadoop.hbase.client">TestCheckAndMutate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIBadHostname.html" title="class in org.apache.hadoop.hbase.client">TestCIBadHostname</a></td>
 <td class="colLast">
 <div class="block">Tests that we fail fast when hostname resolution is not working and do not cache unresolved
  InetSocketAddresses.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIDeleteOperationTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIDeleteOperationTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIDeleteRpcTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIDeleteRpcTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIGetOperationTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIGetOperationTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIGetRpcTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIGetRpcTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIIncrementRpcTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIIncrementRpcTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIPutOperationTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIPutOperationTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIPutRpcTimeout.html" title="class in org.apache.hadoop.hbase.client">TestCIPutRpcTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCISleep.html" title="class in org.apache.hadoop.hbase.client">TestCISleep</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientExponentialBackoff.html" title="class in org.apache.hadoop.hbase.client">TestClientExponentialBackoff</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html" title="class in org.apache.hadoop.hbase.client">TestClientOperationInterrupt</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.TestCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestClientOperationInterrupt.TestCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html" title="class in org.apache.hadoop.hbase.client">TestClientScannerRPCTimeout</a></td>
 <td class="colLast">
 <div class="block">Test the scenario where a HRegionServer#scan() call, while scanning, timeout at client side and
  getting retried.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html" title="class in org.apache.hadoop.hbase.client">TestClientScannerRPCTimeout.RegionServerWithScanTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RSRpcServicesWithScanTimeout.html" title="class in org.apache.hadoop.hbase.client">TestClientScannerRPCTimeout.RSRpcServicesWithScanTimeout</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientTimeouts.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutBlockingRpcChannel.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutBlockingRpcChannel</a></td>
 <td class="colLast">
 <div class="block">Blocking rpc channel that goes via hbase rpc.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcChannel.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutRpcChannel</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcClient.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutRpcClient</a></td>
 <td class="colLast">
 <div class="block">Rpc Channel implementation with RandomTimeoutBlockingRpcChannel</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientAfterSplittingRegion.html" title="class in org.apache.hadoop.hbase.client">TestCloneSnapshotFromClientAfterSplittingRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class in org.apache.hadoop.hbase.client">TestCloneSnapshotFromClientCloneLinksAfterDelete</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientError.html" title="class in org.apache.hadoop.hbase.client">TestCloneSnapshotFromClientError</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientNormal.html" title="class in org.apache.hadoop.hbase.client">TestCloneSnapshotFromClientNormal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestColumnFamilyDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TestColumnFamilyDescriptorBuilder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestColumnFamilyDescriptorLowerCaseEnum.html" title="class in org.apache.hadoop.hbase.client">TestColumnFamilyDescriptorLowerCaseEnum</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-21732.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html" title="class in org.apache.hadoop.hbase.client">TestCompleteResultScanResultCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnection.html" title="class in org.apache.hadoop.hbase.client">TestConnection</a></td>
 <td class="colLast">
 <div class="block">This class is for testing <code>Connection</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionRegistryLeak.html" title="class in org.apache.hadoop.hbase.client">TestConnectionRegistryLeak</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionRegistryLeak.ConnectionRegistryForTest.html" title="class in org.apache.hadoop.hbase.client">TestConnectionRegistryLeak.ConnectionRegistryForTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionUtils.html" title="class in org.apache.hadoop.hbase.client">TestConnectionUtils</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestCoprocessorDescriptor.html" title="class in org.apache.hadoop.hbase.client">TestCoprocessorDescriptor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestDeleteTimeStamp.html" title="class in org.apache.hadoop.hbase.client">TestDeleteTimeStamp</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestDropTimeoutRequest.html" title="class in org.apache.hadoop.hbase.client">TestDropTimeoutRequest</a></td>
 <td class="colLast">
 <div class="block">Test a drop timeout request.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestDropTimeoutRequest.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestDropTimeoutRequest.SleepLongerAtFirstCoprocessor</a></td>
 <td class="colLast">
 <div class="block">Coprocessor that sleeps a while the first time you do a Get</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestEnableTable.html" title="class in org.apache.hadoop.hbase.client">TestEnableTable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html" title="class in org.apache.hadoop.hbase.client">TestEnableTable.MasterSyncObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFlushFromClient.html" title="class in org.apache.hadoop.hbase.client">TestFlushFromClient</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></td>
 <td class="colLast">
 <div class="block">Run tests that use the HBase clients; <code>Table</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3.WaitingForMultiMutationsObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide3.WaitingForScanObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide4.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide4</a></td>
 <td class="colLast">
 <div class="block">Run tests that use the HBase clients; <code>Table</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide5</a></td>
 <td class="colLast">
 <div class="block">Run tests that use the HBase clients; <code>Table</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideNoCodec</a></td>
 <td class="colLast">
 <div class="block">Do some ops and prove that client and server can work w/o codecs; that we can pb all the time.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideScanExcpetion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHRegion.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideScanExcpetion.MyHRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideScanExcpetion.MyHStore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideScanExcpetion.MyStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetionWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideScanExcpetionWithCoprocessor</a></td>
 <td class="colLast">
 <div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
  policy.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideWithCoprocessor</a></td>
 <td class="colLast">
 <div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
  policy.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor4.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideWithCoprocessor4</a></td>
 <td class="colLast">
 <div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
  policy.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor5.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideWithCoprocessor5</a></td>
 <td class="colLast">
 <div class="block">Test all client operations with a coprocessor that just implements the default flush/compact/scan
  policy.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestGet.html" title="class in org.apache.hadoop.hbase.client">TestGet</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-19608.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult.DummyProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a
  get scan and cause returning only 1 cell per rpc call.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a
  get scan and cause returning only 1 cell per rpc call.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestHbck.html" title="class in org.apache.hadoop.hbase.client">TestHbck</a></td>
 <td class="colLast">
 <div class="block">Class to test HBaseHbck.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestHbck.FailingMergeAfterMetaUpdatedMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestHbck.FailingMergeAfterMetaUpdatedMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestHbck.FailingSplitAfterMetaUpdatedMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestHbck.FailingSplitAfterMetaUpdatedMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestHbck.SuspendProcedure.html" title="class in org.apache.hadoop.hbase.client">TestHbck.SuspendProcedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIllegalTableDescriptor.html" title="class in org.apache.hadoop.hbase.client">TestIllegalTableDescriptor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client">TestIncrement</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></td>
 <td class="colLast">
 <div class="block">Test all <code>Increment</code> client operations with a coprocessor that
  just implements the default flush/compact/scan policy.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></td>
 <td class="colLast">
 <div class="block">Run Increment tests that use the HBase clients; <code>TableBuilder</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestInterfaceAlign.html" title="class in org.apache.hadoop.hbase.client">TestInterfaceAlign</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client">TestIntraRowPagination</a></td>
 <td class="colLast">
 <div class="block">Test scan/get offset and limit settings within one row through HRegion API.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestLimitedScanWithFilter</a></td>
 <td class="colLast">
 <div class="block">With filter we may stop at a middle of row and think that we still have more cells for the
  current row but actually all the remaining cells will be filtered out by the filter.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMalformedCellFromClient.html" title="class in org.apache.hadoop.hbase.client">TestMalformedCellFromClient</a></td>
 <td class="colLast">
 <div class="block">The purpose of this test is to ensure whether rs deals with the malformed cells correctly.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMasterRegistry.html" title="class in org.apache.hadoop.hbase.client">TestMasterRegistry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.CallQueueTooBigExceptionInjector.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.CallQueueTooBigExceptionInjector</a></td>
 <td class="colLast">
 <div class="block">Throws CallQueueTooBigException for all gets.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.ExceptionInjector.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.ExceptionInjector</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.FakeRSRpcServices.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.FakeRSRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.RegionServerWithFakeRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.RoundRobinExceptionInjector.html" title="class in org.apache.hadoop.hbase.client">TestMetaCache.RoundRobinExceptionInjector</a></td>
 <td class="colLast">
 <div class="block">Rotates through the possible cache clearing and non-cache clearing exceptions
  for requests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaRegionLocationCache.html" title="class in org.apache.hadoop.hbase.client">TestMetaRegionLocationCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaTableAccessorNoCluster.html" title="class in org.apache.hadoop.hbase.client">TestMetaTableAccessorNoCluster</a></td>
 <td class="colLast">
 <div class="block">Test MetaTableAccessor but without spinning up a cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html" title="class in org.apache.hadoop.hbase.client">TestMetaWithReplicas</a></td>
 <td class="colLast">
 <div class="block">Tests the scenarios where replicas are enabled for the meta table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetricsConnection.html" title="class in org.apache.hadoop.hbase.client">TestMetricsConnection</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientAfterSplittingRegion.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientAfterSplittingRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientCloneLinksAfterDelete.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientCloneLinksAfterDelete</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientCloneLinksAfterDelete.DelayFlushCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientCloneLinksAfterDelete.DelayFlushCoprocessor</a></td>
 <td class="colLast">
 <div class="block">This coprocessor is used to delay the flush.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientError.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientError</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClientNormal.html" title="class in org.apache.hadoop.hbase.client">TestMobCloneSnapshotFromClientNormal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterSplittingRegions.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientAfterSplittingRegions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientAfterTruncate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientClone.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientClone</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientGetCompactionState</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSchemaChange.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientSchemaChange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientSimple.html" title="class in org.apache.hadoop.hbase.client">TestMobRestoreSnapshotFromClientSimple</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestMobSnapshotCloneIndependence</a></td>
 <td class="colLast">
 <div class="block">Test to verify that the cloned table is independent of the table from which it was cloned</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestMobSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiActionMetricsFromClient.html" title="class in org.apache.hadoop.hbase.client">TestMultiActionMetricsFromClient</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client">TestMultipleTimestamps</a></td>
 <td class="colLast">
 <div class="block">Run tests related to <code>TimestampsFilter</code> using HBase client APIs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client">TestMultiRespectsLimits</a></td>
 <td class="colLast">
 <div class="block">This test sets the multi size WAAAAAY low and then checks to make sure that gets will still make
  progress.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMutation.html" title="class in org.apache.hadoop.hbase.client">TestMutation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMutationGetCellBuilder.html" title="class in org.apache.hadoop.hbase.client">TestMutationGetCellBuilder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html" title="class in org.apache.hadoop.hbase.client">TestMvccConsistentScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></td>
 <td class="colLast">
 <div class="block">Run tests that use the functionality of the Operation superclass for
  Puts, Gets, Deletes, Scans, and MultiPuts.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html" title="class in org.apache.hadoop.hbase.client">TestPutDeleteEtcCellIteration</a></td>
 <td class="colLast">
 <div class="block">Test that I can Iterate Client Actions that hold Cells (Get does not have Cells).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDotHas.html" title="class in org.apache.hadoop.hbase.client">TestPutDotHas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html" title="class in org.apache.hadoop.hbase.client">TestPutWithDelete</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWriteToWal.html" title="class in org.apache.hadoop.hbase.client">TestPutWriteToWal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestQuotasShell.html" title="class in org.apache.hadoop.hbase.client">TestQuotasShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncScanCursor.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncScanCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableLimitedScanWithFilter</a></td>
 <td class="colLast">
 <div class="block">With filter we may stop at a middle of row and think that we still have more cells for the
  current row but actually all the remaining cells will be filtered out by the filter.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTablePartialScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoDisplay.html" title="class in org.apache.hadoop.hbase.client">TestRegionInfoDisplay</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionLocationCaching.html" title="class in org.apache.hadoop.hbase.client">TestRegionLocationCaching</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionLocator.html" title="class in org.apache.hadoop.hbase.client">TestRegionLocator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient</a></td>
 <td class="colLast">
 <div class="block">Tests for region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicasClient.SlowMeCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient.SlowMeCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to synchronize the tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html" title="class in org.apache.hadoop.hbase.client">TestReplicationShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to slow down the primary meta region scan a bit</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerStoppedCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerStoppedCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to simulate region server down exception for Get and Scan</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.SlowMeCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.SlowMeCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to synchronize the tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterSplittingRegions.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientAfterSplittingRegions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientAfterTruncate.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientAfterTruncate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientClone.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientClone</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientGetCompactionState.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientGetCompactionState</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSchemaChange.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientSchemaChange</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientSimple</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.html" title="class in org.apache.hadoop.hbase.client">TestResult</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.MyObserver.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor.MyObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html" title="class in org.apache.hadoop.hbase.client">TestResultScannerCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html" title="class in org.apache.hadoop.hbase.client">TestResultSizeEstimation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultStatsUtil.html" title="class in org.apache.hadoop.hbase.client">TestResultStatsUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">TestRetriesExhaustedWithDetailsException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRowComparator.html" title="class in org.apache.hadoop.hbase.client">TestRowComparator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.CountingRpcController.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.CountingRpcController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.StaticRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.StaticRpcControllerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRSGroupShell.html" title="class in org.apache.hadoop.hbase.client">TestRSGroupShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScan.html" title="class in org.apache.hadoop.hbase.client">TestScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></td>
 <td class="colLast">
 <div class="block">A client-side test, mostly testing scanners with various parameters.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.LimitKVsReturnFilter.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide.LimitKVsReturnFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide2</a></td>
 <td class="colLast">
 <div class="block">Testcase for newly added feature in HBASE-17143, such as startRow and stopRow
  inclusive/exclusive, limit for rows, etc.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client">TestScannerTimeout</a></td>
 <td class="colLast">
 <div class="block">Test various scanner timeout issues.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client">TestScanWithoutFetchingData</a></td>
 <td class="colLast">
 <div class="block">Testcase to make sure that we do not close scanners if ScanRequest.numberOfRows is zero.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></td>
 <td class="colLast">
 <div class="block">This class is for testing HBaseConnectionManager ServerBusyException.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.TestGetThread.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.TestGetThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.TestPutThread.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.TestPutThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html" title="class in org.apache.hadoop.hbase.client">TestServerLoadDurability</a></td>
 <td class="colLast">
 <div class="block">HBASE-19496 noticed that the RegionLoad/ServerLoad may be corrupted if rpc server
@@ -1457,127 +1457,127 @@
  invoke HMaster to iterate all stored server/region loads.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html" title="class in org.apache.hadoop.hbase.client">TestShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html" title="class in org.apache.hadoop.hbase.client">TestShellNoCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSimpleRequestController.html" title="class in org.apache.hadoop.hbase.client">TestSimpleRequestController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html" title="class in org.apache.hadoop.hbase.client">TestSmallReversedScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></td>
 <td class="colLast">
 <div class="block">Test to verify that the cloned table is independent of the table from which it was cloned</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotDFSTemporaryDirectory.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotDFSTemporaryDirectory</a></td>
 <td class="colLast">
 <div class="block">This class tests that the use of a temporary snapshot directory supports snapshot functionality
  while the temporary directory is on the same file system as the root directory</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClientWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClientWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotMetadata</a></td>
 <td class="colLast">
 <div class="block">Test class to verify that metadata is consistent before and after a snapshot attempt.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotTemporaryDirectory</a></td>
 <td class="colLast">
 <div class="block">This class tests that the use of a temporary snapshot directory supports snapshot functionality
  while the temporary directory is on a different file system than the root directory</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectoryWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotTemporaryDirectoryWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAclAsyncAdmin.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAclAsyncAdmin</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeAtTableLevel.html" title="class in org.apache.hadoop.hbase.client">TestSplitOrMergeAtTableLevel</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html" title="class in org.apache.hadoop.hbase.client">TestSplitOrMergeStatus</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TestTableDescriptorBuilder</a></td>
 <td class="colLast">
 <div class="block">Test setting values in the descriptor.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorUtils.html" title="class in org.apache.hadoop.hbase.client">TestTableDescriptorUtils</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client">TestTableFavoredNodes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowDoNotRetryIOExceptionCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.ThrowIOExceptionCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestTableOperationException.ThrowIOExceptionCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client">TestTableShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client">TestTimestampsFilter</a></td>
 <td class="colLast">
 <div class="block">Run tests related to <code>TimestampsFilter</code> using HBase client APIs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestUpdateConfiguration</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestZKConnectionRegistry.html" title="class in org.apache.hadoop.hbase.client">TestZKConnectionRegistry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 5a57fda..699a901 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -413,6 +413,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SimpleScanResultConsumer.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SimpleScanResultConsumer</span></a> (implements org.apache.hadoop.hbase.client.ScanResultConsumer)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SleepAtFirstRpcCall.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SleepAtFirstRpcCall</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessReadAction</span></a> (implements org.apache.hadoop.hbase.security.access.<a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access" [...]
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessSnapshotAction</span></a> (implements org.apache.hadoop.hbase.security.access.<a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security [...]
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessWriteAction</span></a> (implements org.apache.hadoop.hbase.security.access.<a href="../../../../../org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.acces [...]
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestAdminBase.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestAdminBase</span></a>
 <ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index d4d7436..f32920e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -165,8 +165,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TagUsage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index d4e4034..824027a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -620,15 +620,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 180fd43..358bddc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -242,9 +242,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureBypass.StuckStateMachineState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureBypass.StuckStateMachineState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 10e6ec4..8460c25 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -719,11 +719,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html
index dc31242..363608b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html
@@ -99,7 +99,7 @@
 </dl>
 <dl>
 <dt>All Known Implementing Classes:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a>, <a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a>, <a href="../../../../../../org/apache/hadoop/hbase/security/access/TestAccessController. [...]
+<dd><a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a>, <a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a>, <a href="../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase. [...]
 </dl>
 <dl>
 <dt>Enclosing class:</dt>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/security/access/class-use/SecureTestUtil.AccessTestAction.html b/testdevapidocs/org/apache/hadoop/hbase/security/access/class-use/SecureTestUtil.AccessTestAction.html
index 1595066..728367c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/security/access/class-use/SecureTestUtil.AccessTestAction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/security/access/class-use/SecureTestUtil.AccessTestAction.html
@@ -115,6 +115,10 @@
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessReadAction</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>(package private) class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessSnapshotAction</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">SnapshotWithAclTestBase.AccessWriteAction</a></span></code>&nbsp;</td>
 </tr>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 74c2878..93c7d15 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,10 +253,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index da87dd9..45aafc7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -164,8 +164,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true [...]
 <ul>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
 </ul>
 </li>
 </ul>
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 9e11a97..8546427 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2514,6 +2514,7 @@
 <li type="circle">org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.RegionData.html" title="class in org.apache.hadoop.hbase.snapshot"><span class="typeNameLink">SnapshotTestingUtils.SnapshotMock.RegionData</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.SnapshotBuilder.html" title="class in org.apache.hadoop.hbase.snapshot"><span class="typeNameLink">SnapshotTestingUtils.SnapshotMock.SnapshotBuilder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessReadAction</span></a> (implements org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestActi [...]
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessSnapshotAction</span></a> (implements org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.Access [...]
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotWithAclTestBase.AccessWriteAction</span></a> (implements org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/SecureTestUtil.AccessTestAction.html" title="interface in org.apache.hadoop.hbase.security.access">SecureTestUtil.AccessTestAc [...]
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceQuotaHelperForTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.NoFilesToDischarge.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceQuotaHelperForTests.NoFilesToDischarge</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;E&gt;)</li>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
index 08ec907..cf1c9e9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessReadAction.html
@@ -26,217 +26,261 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.conf.Configuration;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.TableName;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.security.User;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.AfterClass;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.junit.Assert;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.junit.Before;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.junit.BeforeClass;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.junit.Test;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private static final int ROW_COUNT = 30000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  // user is table owner. will have all permissions on table<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private static User USER_OWNER;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  // user with rw permissions on column family.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  private static User USER_RW;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  // user with read-only permissions<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private static User USER_RO;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  // user with none permissions<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static User USER_NONE;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  static class AccessReadAction implements AccessTestAction {<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>    private TableName tableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>    public AccessReadAction(TableName tableName) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      this.tableName = tableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @Override<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    public Object run() throws Exception {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      Get g = new Get(TEST_ROW);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      g.addFamily(TEST_FAMILY);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        Table t = conn.getTable(tableName)) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>        t.get(g);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      return null;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    private TableName tableName;<a name="line.82"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.regex.Pattern;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseCommonTestingUtility;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TableName;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.User;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.AfterClass;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.Assert;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Before;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.BeforeClass;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final int ROW_COUNT = 30000;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  // user is table owner. will have all permissions on table<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static User USER_OWNER;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  // user with rw permissions on column family.<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static User USER_RW;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  // user with read-only permissions<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static User USER_RO;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  // user with none permissions<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static User USER_NONE;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static class AccessReadAction implements AccessTestAction {<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>    private TableName tableName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    public AccessReadAction(TableName tableName) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.tableName = tableName;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public Object run() throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      Get g = new Get(TEST_ROW);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      g.addFamily(TEST_FAMILY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        Table t = conn.getTable(tableName)) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        t.get(g);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return null;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
 <span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public AccessWriteAction(TableName tableName) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.tableName = tableName;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    public Object run() throws Exception {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      Put p = new Put(TEST_ROW);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        Table t = conn.getTable(tableName)) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        t.put(p);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      return null;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  @BeforeClass<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static void setupBeforeClass() throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    // Enable security<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    enableSecurity(conf);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // Verify enableSecurity sets up what we require<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    verifyConfiguration(conf);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    // Enable EXEC permission checking<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    TEST_UTIL.startMiniCluster();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    MasterCoprocessorHost cpHost =<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  @Before<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public void setUp() throws Exception {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      .setColumnFamily(<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.131"></a>
+<span class="sourceLineNo">084</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    private TableName tableName;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public AccessWriteAction(TableName tableName) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.tableName = tableName;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    @Override<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public Object run() throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      Put p = new Put(TEST_ROW);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        Table t = conn.getTable(tableName)) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        t.put(p);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return null;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @BeforeClass<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public static void setupBeforeClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // Enable security<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    enableSecurity(conf);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    // Verify enableSecurity sets up what we require<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    verifyConfiguration(conf);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // Enable EXEC permission checking<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    TEST_UTIL.startMiniCluster();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    MasterCoprocessorHost cpHost =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  @Before<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public void setUp() throws Exception {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      .setColumnFamily(<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.131"></a>
 <span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      Permission.Action.READ);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private void loadData() throws IOException {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          t.put(put);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  @AfterClass<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public static void tearDownAfterClass() throws Exception {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      Result result;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      int rowCount = 0;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      while ((result = scanner.next()) != null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      boolean restoreAcl) throws Exception;<a name="line.170"></a>
+<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      Permission.Action.READ);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private void loadData() throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          t.put(put);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @AfterClass<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static void tearDownAfterClass() throws Exception {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      Result result;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      int rowCount = 0;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      while ((result = scanner.next()) != null) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.170"></a>
 <span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Test<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public void testRestoreSnapshot() throws Exception {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    loadData();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    verifyRows(TEST_TABLE);<a name="line.182"></a>
+<span class="sourceLineNo">172</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      boolean restoreAcl) throws Exception;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  @Test<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public void testRestoreSnapshot() throws Exception {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.182"></a>
 <span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.185"></a>
+<span class="sourceLineNo">184</span>    loadData();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    verifyRows(TEST_TABLE);<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // clone snapshot with restoreAcl true.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    verifyRows(tableName1);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // clone snapshot with restoreAcl false.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    verifyRows(tableName2);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // remove read permission for USER_RO.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      Permission.Action.READ);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // restore snapshot with restoreAcl false.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    restoreSnapshot(snapshotName1, false);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // restore snapshot with restoreAcl true.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    restoreSnapshot(snapshotName1, true);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>}<a name="line.231"></a>
+<span class="sourceLineNo">187</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>    // clone snapshot with restoreAcl true.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    verifyRows(tableName1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // clone snapshot with restoreAcl false.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    verifyRows(tableName2);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // remove read permission for USER_RO.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      Permission.Action.READ);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // restore snapshot with restoreAcl false.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    restoreSnapshot(snapshotName1, false);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // restore snapshot with restoreAcl true.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    restoreSnapshot(snapshotName1, true);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  final class AccessSnapshotAction implements AccessTestAction {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    private String snapshotName;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private AccessSnapshotAction(String snapshotName) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      this.snapshotName = snapshotName;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public Object run() throws Exception {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Admin admin = conn.getAdmin()) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        admin.snapshot(this.snapshotName, TEST_TABLE);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return null;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testDeleteSnapshot() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    String testSnapshotName = HBaseCommonTestingUtility.getRandomUUID().toString();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    verifyAllowed(new AccessSnapshotAction(testSnapshotName), USER_OWNER);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    verifyDenied(new AccessSnapshotAction(HBaseCommonTestingUtility.getRandomUUID().toString()),<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      USER_RO, USER_RW, USER_NONE);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    List&lt;SnapshotDescription&gt; snapshotDescriptions = TEST_UTIL.getAdmin().listSnapshots(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      Pattern.compile(testSnapshotName));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(1, snapshotDescriptions.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    Assert.assertEquals(USER_OWNER.getShortName(), snapshotDescriptions.get(0).getOwner());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    AccessTestAction deleteSnapshotAction = () -&gt; {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        Admin admin = conn.getAdmin()) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        admin.deleteSnapshot(testSnapshotName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    };<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    verifyDenied(deleteSnapshotAction, USER_RO, USER_RW, USER_NONE);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    verifyAllowed(deleteSnapshotAction, USER_OWNER);<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>    List&lt;SnapshotDescription&gt; snapshotsAfterDelete = TEST_UTIL.getAdmin().listSnapshots(<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      Pattern.compile(testSnapshotName));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    Assert.assertEquals(0, snapshotsAfterDelete.size());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>}<a name="line.275"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html
new file mode 100644
index 0000000..cf1c9e9
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessSnapshotAction.html
@@ -0,0 +1,347 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.regex.Pattern;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseCommonTestingUtility;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TableName;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.User;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.AfterClass;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.Assert;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Before;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.BeforeClass;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final int ROW_COUNT = 30000;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  // user is table owner. will have all permissions on table<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static User USER_OWNER;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  // user with rw permissions on column family.<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static User USER_RW;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  // user with read-only permissions<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static User USER_RO;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  // user with none permissions<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static User USER_NONE;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static class AccessReadAction implements AccessTestAction {<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>    private TableName tableName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    public AccessReadAction(TableName tableName) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.tableName = tableName;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public Object run() throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      Get g = new Get(TEST_ROW);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      g.addFamily(TEST_FAMILY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        Table t = conn.getTable(tableName)) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        t.get(g);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return null;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    private TableName tableName;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public AccessWriteAction(TableName tableName) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.tableName = tableName;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    @Override<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public Object run() throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      Put p = new Put(TEST_ROW);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        Table t = conn.getTable(tableName)) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        t.put(p);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return null;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @BeforeClass<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public static void setupBeforeClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // Enable security<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    enableSecurity(conf);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    // Verify enableSecurity sets up what we require<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    verifyConfiguration(conf);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // Enable EXEC permission checking<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    TEST_UTIL.startMiniCluster();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    MasterCoprocessorHost cpHost =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  @Before<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public void setUp() throws Exception {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      .setColumnFamily(<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      Permission.Action.READ);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private void loadData() throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          t.put(put);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @AfterClass<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static void tearDownAfterClass() throws Exception {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      Result result;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      int rowCount = 0;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      while ((result = scanner.next()) != null) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      boolean restoreAcl) throws Exception;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  @Test<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public void testRestoreSnapshot() throws Exception {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    loadData();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    verifyRows(TEST_TABLE);<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>    // clone snapshot with restoreAcl true.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    verifyRows(tableName1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // clone snapshot with restoreAcl false.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    verifyRows(tableName2);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // remove read permission for USER_RO.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      Permission.Action.READ);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // restore snapshot with restoreAcl false.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    restoreSnapshot(snapshotName1, false);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // restore snapshot with restoreAcl true.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    restoreSnapshot(snapshotName1, true);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  final class AccessSnapshotAction implements AccessTestAction {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    private String snapshotName;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private AccessSnapshotAction(String snapshotName) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      this.snapshotName = snapshotName;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public Object run() throws Exception {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Admin admin = conn.getAdmin()) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        admin.snapshot(this.snapshotName, TEST_TABLE);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return null;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testDeleteSnapshot() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    String testSnapshotName = HBaseCommonTestingUtility.getRandomUUID().toString();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    verifyAllowed(new AccessSnapshotAction(testSnapshotName), USER_OWNER);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    verifyDenied(new AccessSnapshotAction(HBaseCommonTestingUtility.getRandomUUID().toString()),<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      USER_RO, USER_RW, USER_NONE);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    List&lt;SnapshotDescription&gt; snapshotDescriptions = TEST_UTIL.getAdmin().listSnapshots(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      Pattern.compile(testSnapshotName));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(1, snapshotDescriptions.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    Assert.assertEquals(USER_OWNER.getShortName(), snapshotDescriptions.get(0).getOwner());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    AccessTestAction deleteSnapshotAction = () -&gt; {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        Admin admin = conn.getAdmin()) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        admin.deleteSnapshot(testSnapshotName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    };<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    verifyDenied(deleteSnapshotAction, USER_RO, USER_RW, USER_NONE);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    verifyAllowed(deleteSnapshotAction, USER_OWNER);<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>    List&lt;SnapshotDescription&gt; snapshotsAfterDelete = TEST_UTIL.getAdmin().listSnapshots(<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      Pattern.compile(testSnapshotName));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    Assert.assertEquals(0, snapshotsAfterDelete.size());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>}<a name="line.275"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html
index 08ec907..cf1c9e9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.AccessWriteAction.html
@@ -26,217 +26,261 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.conf.Configuration;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.TableName;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.security.User;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.AfterClass;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.junit.Assert;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.junit.Before;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.junit.BeforeClass;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.junit.Test;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private static final int ROW_COUNT = 30000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  // user is table owner. will have all permissions on table<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private static User USER_OWNER;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  // user with rw permissions on column family.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  private static User USER_RW;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  // user with read-only permissions<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private static User USER_RO;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  // user with none permissions<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static User USER_NONE;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  static class AccessReadAction implements AccessTestAction {<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>    private TableName tableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>    public AccessReadAction(TableName tableName) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      this.tableName = tableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @Override<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    public Object run() throws Exception {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      Get g = new Get(TEST_ROW);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      g.addFamily(TEST_FAMILY);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        Table t = conn.getTable(tableName)) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>        t.get(g);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      return null;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    private TableName tableName;<a name="line.82"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.regex.Pattern;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseCommonTestingUtility;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TableName;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.User;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.AfterClass;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.Assert;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Before;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.BeforeClass;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final int ROW_COUNT = 30000;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  // user is table owner. will have all permissions on table<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static User USER_OWNER;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  // user with rw permissions on column family.<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static User USER_RW;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  // user with read-only permissions<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static User USER_RO;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  // user with none permissions<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static User USER_NONE;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static class AccessReadAction implements AccessTestAction {<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>    private TableName tableName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    public AccessReadAction(TableName tableName) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.tableName = tableName;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public Object run() throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      Get g = new Get(TEST_ROW);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      g.addFamily(TEST_FAMILY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        Table t = conn.getTable(tableName)) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        t.get(g);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return null;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
 <span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public AccessWriteAction(TableName tableName) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.tableName = tableName;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    public Object run() throws Exception {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      Put p = new Put(TEST_ROW);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        Table t = conn.getTable(tableName)) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        t.put(p);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      return null;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  @BeforeClass<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static void setupBeforeClass() throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    // Enable security<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    enableSecurity(conf);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // Verify enableSecurity sets up what we require<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    verifyConfiguration(conf);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    // Enable EXEC permission checking<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    TEST_UTIL.startMiniCluster();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    MasterCoprocessorHost cpHost =<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  @Before<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public void setUp() throws Exception {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      .setColumnFamily(<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.131"></a>
+<span class="sourceLineNo">084</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    private TableName tableName;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public AccessWriteAction(TableName tableName) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.tableName = tableName;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    @Override<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public Object run() throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      Put p = new Put(TEST_ROW);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        Table t = conn.getTable(tableName)) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        t.put(p);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return null;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @BeforeClass<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public static void setupBeforeClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // Enable security<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    enableSecurity(conf);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    // Verify enableSecurity sets up what we require<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    verifyConfiguration(conf);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // Enable EXEC permission checking<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    TEST_UTIL.startMiniCluster();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    MasterCoprocessorHost cpHost =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  @Before<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public void setUp() throws Exception {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      .setColumnFamily(<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.131"></a>
 <span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      Permission.Action.READ);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private void loadData() throws IOException {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          t.put(put);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  @AfterClass<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public static void tearDownAfterClass() throws Exception {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      Result result;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      int rowCount = 0;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      while ((result = scanner.next()) != null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      boolean restoreAcl) throws Exception;<a name="line.170"></a>
+<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      Permission.Action.READ);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private void loadData() throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          t.put(put);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @AfterClass<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static void tearDownAfterClass() throws Exception {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      Result result;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      int rowCount = 0;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      while ((result = scanner.next()) != null) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.170"></a>
 <span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Test<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public void testRestoreSnapshot() throws Exception {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    loadData();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    verifyRows(TEST_TABLE);<a name="line.182"></a>
+<span class="sourceLineNo">172</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      boolean restoreAcl) throws Exception;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  @Test<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public void testRestoreSnapshot() throws Exception {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.182"></a>
 <span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.185"></a>
+<span class="sourceLineNo">184</span>    loadData();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    verifyRows(TEST_TABLE);<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // clone snapshot with restoreAcl true.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    verifyRows(tableName1);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // clone snapshot with restoreAcl false.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    verifyRows(tableName2);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // remove read permission for USER_RO.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      Permission.Action.READ);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // restore snapshot with restoreAcl false.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    restoreSnapshot(snapshotName1, false);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // restore snapshot with restoreAcl true.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    restoreSnapshot(snapshotName1, true);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>}<a name="line.231"></a>
+<span class="sourceLineNo">187</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>    // clone snapshot with restoreAcl true.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    verifyRows(tableName1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // clone snapshot with restoreAcl false.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    verifyRows(tableName2);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // remove read permission for USER_RO.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      Permission.Action.READ);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // restore snapshot with restoreAcl false.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    restoreSnapshot(snapshotName1, false);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // restore snapshot with restoreAcl true.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    restoreSnapshot(snapshotName1, true);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  final class AccessSnapshotAction implements AccessTestAction {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    private String snapshotName;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private AccessSnapshotAction(String snapshotName) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      this.snapshotName = snapshotName;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public Object run() throws Exception {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Admin admin = conn.getAdmin()) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        admin.snapshot(this.snapshotName, TEST_TABLE);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return null;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testDeleteSnapshot() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    String testSnapshotName = HBaseCommonTestingUtility.getRandomUUID().toString();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    verifyAllowed(new AccessSnapshotAction(testSnapshotName), USER_OWNER);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    verifyDenied(new AccessSnapshotAction(HBaseCommonTestingUtility.getRandomUUID().toString()),<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      USER_RO, USER_RW, USER_NONE);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    List&lt;SnapshotDescription&gt; snapshotDescriptions = TEST_UTIL.getAdmin().listSnapshots(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      Pattern.compile(testSnapshotName));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(1, snapshotDescriptions.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    Assert.assertEquals(USER_OWNER.getShortName(), snapshotDescriptions.get(0).getOwner());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    AccessTestAction deleteSnapshotAction = () -&gt; {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        Admin admin = conn.getAdmin()) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        admin.deleteSnapshot(testSnapshotName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    };<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    verifyDenied(deleteSnapshotAction, USER_RO, USER_RW, USER_NONE);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    verifyAllowed(deleteSnapshotAction, USER_OWNER);<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>    List&lt;SnapshotDescription&gt; snapshotsAfterDelete = TEST_UTIL.getAdmin().listSnapshots(<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      Pattern.compile(testSnapshotName));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    Assert.assertEquals(0, snapshotsAfterDelete.size());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>}<a name="line.275"></a>
 
 
 
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html
index 08ec907..cf1c9e9 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/SnapshotWithAclTestBase.html
@@ -26,217 +26,261 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.conf.Configuration;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.TableName;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.security.User;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.AfterClass;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.junit.Assert;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.junit.Before;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.junit.BeforeClass;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.junit.Test;<a name="line.38"></a>
-<span class="sourceLineNo">039</span><a name="line.39"></a>
-<span class="sourceLineNo">040</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private static final int ROW_COUNT = 30000;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  // user is table owner. will have all permissions on table<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  private static User USER_OWNER;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  // user with rw permissions on column family.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  private static User USER_RW;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  // user with read-only permissions<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private static User USER_RO;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  // user with none permissions<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static User USER_NONE;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  static class AccessReadAction implements AccessTestAction {<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>    private TableName tableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>    public AccessReadAction(TableName tableName) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      this.tableName = tableName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @Override<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    public Object run() throws Exception {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      Get g = new Get(TEST_ROW);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      g.addFamily(TEST_FAMILY);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        Table t = conn.getTable(tableName)) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>        t.get(g);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      return null;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    private TableName tableName;<a name="line.82"></a>
+<span class="sourceLineNo">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.regex.Pattern;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Coprocessor;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseCommonTestingUtility;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TableName;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.security.User;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.security.access.AccessControlConstants;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.security.access.AccessController;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.security.access.Permission;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.security.access.PermissionStorage;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.security.access.SecureTestUtil;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.AfterClass;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.Assert;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Before;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.BeforeClass;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Test;<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>public abstract class SnapshotWithAclTestBase extends SecureTestUtil {<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private TableName TEST_TABLE = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final int ROW_COUNT = 30000;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static byte[] TEST_FAMILY = Bytes.toBytes("f1");<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static byte[] TEST_QUALIFIER = Bytes.toBytes("cq");<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static byte[] TEST_ROW = Bytes.toBytes(0);<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  protected static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  // user is table owner. will have all permissions on table<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static User USER_OWNER;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  // user with rw permissions on column family.<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static User USER_RW;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  // user with read-only permissions<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static User USER_RO;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  // user with none permissions<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static User USER_NONE;<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static class AccessReadAction implements AccessTestAction {<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>    private TableName tableName;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    public AccessReadAction(TableName tableName) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      this.tableName = tableName;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public Object run() throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      Get g = new Get(TEST_ROW);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      g.addFamily(TEST_FAMILY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        Table t = conn.getTable(tableName)) {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        t.get(g);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      return null;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
 <span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public AccessWriteAction(TableName tableName) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.tableName = tableName;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    public Object run() throws Exception {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      Put p = new Put(TEST_ROW);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        Table t = conn.getTable(tableName)) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        t.put(p);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      return null;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  @BeforeClass<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  public static void setupBeforeClass() throws Exception {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    // Enable security<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    enableSecurity(conf);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // Verify enableSecurity sets up what we require<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    verifyConfiguration(conf);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    // Enable EXEC permission checking<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    TEST_UTIL.startMiniCluster();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    MasterCoprocessorHost cpHost =<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  @Before<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public void setUp() throws Exception {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      .setColumnFamily(<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.131"></a>
+<span class="sourceLineNo">084</span>  static class AccessWriteAction implements AccessTestAction {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    private TableName tableName;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public AccessWriteAction(TableName tableName) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      this.tableName = tableName;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    @Override<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public Object run() throws Exception {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      Put p = new Put(TEST_ROW);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      p.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(0));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        Table t = conn.getTable(tableName)) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        t.put(p);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return null;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @BeforeClass<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public static void setupBeforeClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // Enable security<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    enableSecurity(conf);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    conf.set(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY, AccessController.class.getName());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    // Verify enableSecurity sets up what we require<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    verifyConfiguration(conf);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    // Enable EXEC permission checking<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    conf.setBoolean(AccessControlConstants.EXEC_PERMISSION_CHECKS_KEY, true);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    TEST_UTIL.startMiniCluster();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    TEST_UTIL.waitUntilAllRegionsAssigned(PermissionStorage.ACL_TABLE_NAME);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    MasterCoprocessorHost cpHost =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      TEST_UTIL.getMiniHBaseCluster().getMaster().getMasterCoprocessorHost();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    cpHost.load(AccessController.class, Coprocessor.PRIORITY_HIGHEST, conf);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    USER_OWNER = User.createUserForTesting(conf, "owner", new String[0]);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    USER_RW = User.createUserForTesting(conf, "rwuser", new String[0]);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    USER_RO = User.createUserForTesting(conf, "rouser", new String[0]);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    USER_NONE = User.createUserForTesting(conf, "usernone", new String[0]);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  @Before<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public void setUp() throws Exception {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    TEST_UTIL.createTable(TableDescriptorBuilder.newBuilder(TEST_TABLE)<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      .setColumnFamily(<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        ColumnFamilyDescriptorBuilder.newBuilder(TEST_FAMILY).setMaxVersions(100).build())<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      .setOwner(USER_OWNER).build(), new byte[][] { Bytes.toBytes("s") });<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    TEST_UTIL.waitTableEnabled(TEST_TABLE);<a name="line.131"></a>
 <span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      Permission.Action.READ);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private void loadData() throws IOException {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          t.put(put);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  @AfterClass<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  public static void tearDownAfterClass() throws Exception {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      Result result;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      int rowCount = 0;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      while ((result = scanner.next()) != null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.167"></a>
-<span class="sourceLineNo">168</span><a name="line.168"></a>
-<span class="sourceLineNo">169</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      boolean restoreAcl) throws Exception;<a name="line.170"></a>
+<span class="sourceLineNo">133</span>    grantOnTable(TEST_UTIL, USER_RW.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      Permission.Action.READ, Permission.Action.WRITE);<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    grantOnTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      Permission.Action.READ);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  private void loadData() throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration())) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      try (Table t = conn.getTable(TEST_TABLE)) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          Put put = new Put(Bytes.toBytes(i));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          put.addColumn(TEST_FAMILY, TEST_QUALIFIER, Bytes.toBytes(i));<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          t.put(put);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @AfterClass<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public static void tearDownAfterClass() throws Exception {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private void verifyRows(TableName tableName) throws IOException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      Table t = conn.getTable(tableName); ResultScanner scanner = t.getScanner(new Scan())) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      Result result;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      int rowCount = 0;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      while ((result = scanner.next()) != null) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        byte[] value = result.getValue(TEST_FAMILY, TEST_QUALIFIER);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        Assert.assertArrayEquals(value, Bytes.toBytes(rowCount++));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      Assert.assertEquals(ROW_COUNT, rowCount);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  protected abstract void snapshot(String snapshotName, TableName tableName) throws Exception;<a name="line.170"></a>
 <span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  @Test<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public void testRestoreSnapshot() throws Exception {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    loadData();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    verifyRows(TEST_TABLE);<a name="line.182"></a>
+<span class="sourceLineNo">172</span>  protected abstract void cloneSnapshot(String snapshotName, TableName tableName,<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      boolean restoreAcl) throws Exception;<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  protected abstract void restoreSnapshot(String snapshotName, boolean restoreAcl) throws Exception;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  @Test<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public void testRestoreSnapshot() throws Exception {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.182"></a>
 <span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.185"></a>
+<span class="sourceLineNo">184</span>    loadData();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    verifyRows(TEST_TABLE);<a name="line.185"></a>
 <span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // clone snapshot with restoreAcl true.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    verifyRows(tableName1);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // clone snapshot with restoreAcl false.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    verifyRows(tableName2);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // remove read permission for USER_RO.<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      Permission.Action.READ);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // restore snapshot with restoreAcl false.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    restoreSnapshot(snapshotName1, false);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // restore snapshot with restoreAcl true.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    restoreSnapshot(snapshotName1, true);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>}<a name="line.231"></a>
+<span class="sourceLineNo">187</span>    String snapshotName1 = TEST_UTIL.getRandomUUID().toString();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    snapshot(snapshotName1, TEST_TABLE);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>    // clone snapshot with restoreAcl true.<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    TableName tableName1 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    cloneSnapshot(snapshotName1, tableName1, true);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    verifyRows(tableName1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    verifyAllowed(new AccessReadAction(tableName1), USER_OWNER, USER_RO, USER_RW);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    verifyDenied(new AccessReadAction(tableName1), USER_NONE);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    verifyAllowed(new AccessWriteAction(tableName1), USER_OWNER, USER_RW);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    verifyDenied(new AccessWriteAction(tableName1), USER_RO, USER_NONE);<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>    // clone snapshot with restoreAcl false.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    TableName tableName2 = TableName.valueOf(TEST_UTIL.getRandomUUID().toString());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    cloneSnapshot(snapshotName1, tableName2, false);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    verifyRows(tableName2);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    verifyAllowed(new AccessReadAction(tableName2), USER_OWNER);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    verifyDenied(new AccessReadAction(tableName2), USER_NONE, USER_RO, USER_RW);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyAllowed(new AccessWriteAction(tableName2), USER_OWNER);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    verifyDenied(new AccessWriteAction(tableName2), USER_RO, USER_RW, USER_NONE);<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // remove read permission for USER_RO.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    revokeFromTable(TEST_UTIL, USER_RO.getShortName(), TEST_TABLE, TEST_FAMILY, null,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      Permission.Action.READ);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // restore snapshot with restoreAcl false.<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    restoreSnapshot(snapshotName1, false);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // restore snapshot with restoreAcl true.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    TEST_UTIL.getAdmin().disableTable(TEST_TABLE);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    restoreSnapshot(snapshotName1, true);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    TEST_UTIL.getAdmin().enableTable(TEST_TABLE);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    verifyAllowed(new AccessReadAction(TEST_TABLE), USER_OWNER, USER_RO, USER_RW);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    verifyDenied(new AccessReadAction(TEST_TABLE), USER_NONE);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    verifyAllowed(new AccessWriteAction(TEST_TABLE), USER_OWNER, USER_RW);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    verifyDenied(new AccessWriteAction(TEST_TABLE), USER_RO, USER_NONE);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  final class AccessSnapshotAction implements AccessTestAction {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    private String snapshotName;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private AccessSnapshotAction(String snapshotName) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      this.snapshotName = snapshotName;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public Object run() throws Exception {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Admin admin = conn.getAdmin()) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        admin.snapshot(this.snapshotName, TEST_TABLE);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return null;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testDeleteSnapshot() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    String testSnapshotName = HBaseCommonTestingUtility.getRandomUUID().toString();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    verifyAllowed(new AccessSnapshotAction(testSnapshotName), USER_OWNER);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    verifyDenied(new AccessSnapshotAction(HBaseCommonTestingUtility.getRandomUUID().toString()),<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      USER_RO, USER_RW, USER_NONE);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    List&lt;SnapshotDescription&gt; snapshotDescriptions = TEST_UTIL.getAdmin().listSnapshots(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      Pattern.compile(testSnapshotName));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    Assert.assertEquals(1, snapshotDescriptions.size());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    Assert.assertEquals(USER_OWNER.getShortName(), snapshotDescriptions.get(0).getOwner());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    AccessTestAction deleteSnapshotAction = () -&gt; {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      try (Connection conn = ConnectionFactory.createConnection(TEST_UTIL.getConfiguration());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        Admin admin = conn.getAdmin()) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        admin.deleteSnapshot(testSnapshotName);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return null;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    };<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    verifyDenied(deleteSnapshotAction, USER_RO, USER_RW, USER_NONE);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    verifyAllowed(deleteSnapshotAction, USER_OWNER);<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>    List&lt;SnapshotDescription&gt; snapshotsAfterDelete = TEST_UTIL.getAdmin().listSnapshots(<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      Pattern.compile(testSnapshotName));<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    Assert.assertEquals(0, snapshotsAfterDelete.size());<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>}<a name="line.275"></a>