Repository: hbase-site Updated Branches: refs/heads/asf-site c93dd16ca -> 545640e1c
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/545640e1/testdevapidocs/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html ---------------------------------------------------------------------- diff --git a/testdevapidocs/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html b/testdevapidocs/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html index 74f7096..2a73722 100644 --- a/testdevapidocs/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html +++ b/testdevapidocs/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html @@ -18,8 +18,8 @@ catch(err) { } //--> -var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10}; -var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":10,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10}; +var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; var altColor = "altColor"; var rowColor = "rowColor"; var tableTab = "tableTab"; @@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab"; </dl> <hr> <br> -<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.56">TestRestoreSnapshotHelper</a> +<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.66">TestRestoreSnapshotHelper</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></pre> <div class="block">Test the restore/clone operation from a file-system point of view.</div> </li> @@ -193,20 +193,29 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html </a> <h3>Method Summary</h3> <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> -<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> <tr> <th class="colFirst" scope="col">Modifier and Type</th> <th class="colLast" scope="col">Method and Description</th> </tr> <tr id="i0" class="altColor"> +<td class="colFirst"><code>private void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#checkNoHFileLinkInTableDir-org.apache.hadoop.hbase.TableName-">checkNoHFileLinkInTableDir</a></span>(org.apache.hadoop.hbase.TableName tableName)</code> </td> +</tr> +<tr id="i1" class="rowColor"> <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotTestingUtils.SnapshotMock</a></code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#createSnapshotMock--">createSnapshotMock</a></span>()</code> </td> </tr> -<tr id="i1" class="rowColor"> +<tr id="i2" class="altColor"> +<td class="colFirst"><code>protected void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#createTableAndSnapshot-org.apache.hadoop.hbase.TableName-java.lang.String-">createTableAndSnapshot</a></span>(org.apache.hadoop.hbase.TableName tableName, + <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> snapshotName)</code> </td> +</tr> +<tr id="i3" class="rowColor"> <td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#getReferredToFile-java.lang.String-">getReferredToFile</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> referenceName)</code> </td> </tr> -<tr id="i2" class="altColor"> +<tr id="i4" class="altColor"> <td class="colFirst"><code>private org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#getRestoreHelper-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">getRestoreHelper</a></span>(org.apache.hadoop.fs.Path rootDir, org.apache.hadoop.fs.Path snapshotDir, @@ -215,28 +224,44 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <div class="block">Initialize the restore helper, based on the snapshot and table information provided.</div> </td> </tr> -<tr id="i3" class="rowColor"> +<tr id="i5" class="rowColor"> +<td class="colFirst"><code>private boolean</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#hasHFileLink-org.apache.hadoop.fs.Path-">hasHFileLink</a></span>(org.apache.hadoop.fs.Path tableDir)</code> </td> +</tr> +<tr id="i6" class="altColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#restoreAndVerify-java.lang.String-java.lang.String-">restoreAndVerify</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> snapshotName, <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> tableName)</code> </td> </tr> -<tr id="i4" class="altColor"> +<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/snapshot/TestRestoreSnapshotHelper.html#setup--">setup</a></span>()</code> </td> </tr> -<tr id="i5" class="rowColor"> +<tr id="i8" class="altColor"> +<td class="colFirst"><code>static void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#setupCluster--">setupCluster</a></span>()</code> </td> +</tr> +<tr id="i9" class="rowColor"> <td class="colFirst"><code>protected void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#setupConf-org.apache.hadoop.conf.Configuration-">setupConf</a></span>(org.apache.hadoop.conf.Configuration conf)</code> </td> </tr> -<tr id="i6" class="altColor"> +<tr id="i10" class="altColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#tearDown--">tearDown</a></span>()</code> </td> </tr> -<tr id="i7" class="rowColor"> +<tr id="i11" class="rowColor"> +<td class="colFirst"><code>static void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#tearDownCluster--">tearDownCluster</a></span>()</code> </td> +</tr> +<tr id="i12" class="altColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#testNoHFileLinkInRootDir--">testNoHFileLinkInRootDir</a></span>()</code> </td> +</tr> +<tr id="i13" class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#testRestore--">testRestore</a></span>()</code> </td> </tr> -<tr id="i8" class="altColor"> +<tr id="i14" class="altColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#testRestore-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.hbase.client.TableDescriptor-">testRestore</a></span>(org.apache.hadoop.fs.Path snapshotDir, org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription sd, @@ -244,11 +269,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <div class="block">Execute the restore operation</div> </td> </tr> -<tr id="i9" class="rowColor"> +<tr id="i15" class="rowColor"> <td class="colFirst"><code>void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#testRestoreWithNamespace--">testRestoreWithNamespace</a></span>()</code> </td> </tr> -<tr id="i10" class="altColor"> +<tr id="i16" class="altColor"> <td class="colFirst"><code>private void</code></td> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#verifyRestore-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyRestore</a></span>(org.apache.hadoop.fs.Path rootDir, org.apache.hadoop.hbase.client.TableDescriptor sourceHtd, @@ -282,7 +307,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>CLASS_RULE</h4> -<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.59">CLASS_RULE</a></pre> +<pre>public static final <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.69">CLASS_RULE</a></pre> </li> </ul> <a name="LOG"> @@ -291,7 +316,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>LOG</h4> -<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.62">LOG</a></pre> +<pre>private static final org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.72">LOG</a></pre> </li> </ul> <a name="TEST_UTIL"> @@ -300,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>TEST_UTIL</h4> -<pre>protected static final <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/snapshot/TestRestoreSnapshotHelper.html#line.64">TEST_UTIL</a></pre> +<pre>protected static final <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/snapshot/TestRestoreSnapshotHelper.html#line.74">TEST_UTIL</a></pre> </li> </ul> <a name="TEST_HFILE"> @@ -309,7 +334,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>TEST_HFILE</h4> -<pre>protected static final <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/snapshot/TestRestoreSnapshotHelper.html#line.65">TEST_HFILE</a></pre> +<pre>protected static final <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/snapshot/TestRestoreSnapshotHelper.html#line.75">TEST_HFILE</a></pre> <dl> <dt><span class="seeLabel">See Also:</span></dt> <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.TEST_HFILE">Constant Field Values</a></dd> @@ -322,7 +347,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>conf</h4> -<pre>protected org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.67">conf</a></pre> +<pre>protected org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.77">conf</a></pre> </li> </ul> <a name="archiveDir"> @@ -331,7 +356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>archiveDir</h4> -<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.68">archiveDir</a></pre> +<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.78">archiveDir</a></pre> </li> </ul> <a name="fs"> @@ -340,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>fs</h4> -<pre>protected org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.69">fs</a></pre> +<pre>protected org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.79">fs</a></pre> </li> </ul> <a name="rootDir"> @@ -349,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockListLast"> <li class="blockList"> <h4>rootDir</h4> -<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.70">rootDir</a></pre> +<pre>protected org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.80">rootDir</a></pre> </li> </ul> </li> @@ -366,7 +391,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockListLast"> <li class="blockList"> <h4>TestRestoreSnapshotHelper</h4> -<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.56">TestRestoreSnapshotHelper</a>()</pre> +<pre>public <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.66">TestRestoreSnapshotHelper</a>()</pre> </li> </ul> </li> @@ -383,7 +408,35 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>setupConf</h4> -<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.72">setupConf</a>(org.apache.hadoop.conf.Configuration conf)</pre> +<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.82">setupConf</a>(org.apache.hadoop.conf.Configuration conf)</pre> +</li> +</ul> +<a name="setupCluster--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>setupCluster</h4> +<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.86">setupCluster</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> +<a name="tearDownCluster--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>tearDownCluster</h4> +<pre>public static void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.91">tearDownCluster</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> <a name="setup--"> @@ -392,7 +445,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>setup</h4> -<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.76">setup</a>() +<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.96">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> @@ -406,7 +459,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>tearDown</h4> -<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.86">tearDown</a>() +<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.106">tearDown</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> @@ -420,7 +473,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>createSnapshotMock</h4> -<pre>protected <a href="../../../../../org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotTestingUtils.SnapshotMock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.90">createSnapshotMock</a>() +<pre>protected <a href="../../../../../org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.SnapshotMock.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotTestingUtils.SnapshotMock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.110">createSnapshotMock</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> @@ -434,7 +487,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>testRestore</h4> -<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.95">testRestore</a>() +<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.115">testRestore</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> @@ -448,7 +501,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>testRestoreWithNamespace</h4> -<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.100">testRestoreWithNamespace</a>() +<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.120">testRestoreWithNamespace</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> @@ -456,13 +509,70 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html </dl> </li> </ul> +<a name="testNoHFileLinkInRootDir--"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>testNoHFileLinkInRootDir</h4> +<pre>public void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.125">testNoHFileLinkInRootDir</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> +<dd><code><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></code></dd> +</dl> +</li> +</ul> +<a name="createTableAndSnapshot-org.apache.hadoop.hbase.TableName-java.lang.String-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>createTableAndSnapshot</h4> +<pre>protected void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.139">createTableAndSnapshot</a>(org.apache.hadoop.hbase.TableName tableName, + <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> snapshotName) + 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> +<dd><code><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></code></dd> +</dl> +</li> +</ul> +<a name="checkNoHFileLinkInTableDir-org.apache.hadoop.hbase.TableName-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>checkNoHFileLinkInTableDir</h4> +<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.147">checkNoHFileLinkInTableDir</a>(org.apache.hadoop.hbase.TableName 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> +<dd><code><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></code></dd> +</dl> +</li> +</ul> +<a name="hasHFileLink-org.apache.hadoop.fs.Path-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>hasHFileLink</h4> +<pre>private boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.156">hasHFileLink</a>(org.apache.hadoop.fs.Path tableDir) + 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> +<dd><code><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></code></dd> +</dl> +</li> +</ul> <a name="restoreAndVerify-java.lang.String-java.lang.String-"> <!-- --> </a> <ul class="blockList"> <li class="blockList"> <h4>restoreAndVerify</h4> -<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.104">restoreAndVerify</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> snapshotName, +<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.169">restoreAndVerify</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> snapshotName, <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> 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> @@ -477,7 +587,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>verifyRestore</h4> -<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.133">verifyRestore</a>(org.apache.hadoop.fs.Path rootDir, +<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.198">verifyRestore</a>(org.apache.hadoop.fs.Path rootDir, org.apache.hadoop.hbase.client.TableDescriptor sourceHtd, org.apache.hadoop.hbase.client.TableDescriptor htdClone) 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> @@ -493,7 +603,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>testRestore</h4> -<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.157">testRestore</a>(org.apache.hadoop.fs.Path snapshotDir, +<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.222">testRestore</a>(org.apache.hadoop.fs.Path snapshotDir, org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription sd, org.apache.hadoop.hbase.client.TableDescriptor htdClone) 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> @@ -514,7 +624,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockList"> <li class="blockList"> <h4>getRestoreHelper</h4> -<pre>private org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.173">getRestoreHelper</a>(org.apache.hadoop.fs.Path rootDir, +<pre>private org.apache.hadoop.hbase.snapshot.RestoreSnapshotHelper <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.238">getRestoreHelper</a>(org.apache.hadoop.fs.Path rootDir, org.apache.hadoop.fs.Path snapshotDir, org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription sd, org.apache.hadoop.hbase.client.TableDescriptor htdClone) @@ -532,7 +642,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html <ul class="blockListLast"> <li class="blockList"> <h4>getReferredToFile</h4> -<pre>private org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.183">getReferredToFile</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> referenceName)</pre> +<pre>private org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#line.248">getReferredToFile</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> referenceName)</pre> </li> </ul> </li> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/545640e1/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html ---------------------------------------------------------------------- diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html index 4d297af..ec4ec49 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><E> (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><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>) <ul> -<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/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.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/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> </ul> </li> </ul> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/545640e1/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html ---------------------------------------------------------------------- diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html index f62b3ca..2981b5a 100644 --- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html +++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html @@ -147,8 +147,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><E> (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><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>) <ul> -<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> <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> </ul> </li> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/545640e1/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestMobRestoreSnapshotHelper.html ---------------------------------------------------------------------- diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestMobRestoreSnapshotHelper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestMobRestoreSnapshotHelper.html index 4a73374..07844a3 100644 --- a/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestMobRestoreSnapshotHelper.html +++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestMobRestoreSnapshotHelper.html @@ -28,36 +28,48 @@ <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.HBaseClassTestRule;<a name="line.22"></a> -<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.23"></a> -<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils.SnapshotMock;<a name="line.24"></a> -<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.25"></a> -<span class="sourceLineNo">026</span>import org.junit.ClassRule;<a name="line.26"></a> -<span class="sourceLineNo">027</span>import org.junit.experimental.categories.Category;<a name="line.27"></a> -<span class="sourceLineNo">028</span>import org.slf4j.Logger;<a name="line.28"></a> -<span class="sourceLineNo">029</span>import org.slf4j.LoggerFactory;<a name="line.29"></a> -<span class="sourceLineNo">030</span><a name="line.30"></a> -<span class="sourceLineNo">031</span>/**<a name="line.31"></a> -<span class="sourceLineNo">032</span> * Test the restore/clone operation from a file-system point of view.<a name="line.32"></a> -<span class="sourceLineNo">033</span> */<a name="line.33"></a> -<span class="sourceLineNo">034</span>@Category(SmallTests.class)<a name="line.34"></a> -<span class="sourceLineNo">035</span>public class TestMobRestoreSnapshotHelper extends TestRestoreSnapshotHelper {<a name="line.35"></a> -<span class="sourceLineNo">036</span><a name="line.36"></a> -<span class="sourceLineNo">037</span> @ClassRule<a name="line.37"></a> -<span class="sourceLineNo">038</span> public static final HBaseClassTestRule CLASS_RULE =<a name="line.38"></a> -<span class="sourceLineNo">039</span> HBaseClassTestRule.forClass(TestMobRestoreSnapshotHelper.class);<a name="line.39"></a> -<span class="sourceLineNo">040</span><a name="line.40"></a> -<span class="sourceLineNo">041</span> final Logger LOG = LoggerFactory.getLogger(getClass());<a name="line.41"></a> -<span class="sourceLineNo">042</span><a name="line.42"></a> -<span class="sourceLineNo">043</span> @Override<a name="line.43"></a> -<span class="sourceLineNo">044</span> protected void setupConf(Configuration conf) {<a name="line.44"></a> -<span class="sourceLineNo">045</span> conf.setInt(MobConstants.MOB_FILE_CACHE_SIZE_KEY, 0);<a name="line.45"></a> -<span class="sourceLineNo">046</span> }<a name="line.46"></a> -<span class="sourceLineNo">047</span><a name="line.47"></a> -<span class="sourceLineNo">048</span> @Override<a name="line.48"></a> -<span class="sourceLineNo">049</span> protected SnapshotMock createSnapshotMock() throws IOException {<a name="line.49"></a> -<span class="sourceLineNo">050</span> return new SnapshotMock(TEST_UTIL.getConfiguration(), fs, rootDir);<a name="line.50"></a> -<span class="sourceLineNo">051</span> }<a name="line.51"></a> -<span class="sourceLineNo">052</span>}<a name="line.52"></a> +<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.TableName;<a name="line.23"></a> +<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.client.Table;<a name="line.24"></a> +<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.25"></a> +<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.snapshot.MobSnapshotTestingUtils.SnapshotMock;<a name="line.26"></a> +<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.27"></a> +<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.28"></a> +<span class="sourceLineNo">029</span>import org.junit.ClassRule;<a name="line.29"></a> +<span class="sourceLineNo">030</span>import org.junit.experimental.categories.Category;<a name="line.30"></a> +<span class="sourceLineNo">031</span>import org.slf4j.Logger;<a name="line.31"></a> +<span class="sourceLineNo">032</span>import org.slf4j.LoggerFactory;<a name="line.32"></a> +<span class="sourceLineNo">033</span><a name="line.33"></a> +<span class="sourceLineNo">034</span>/**<a name="line.34"></a> +<span class="sourceLineNo">035</span> * Test the restore/clone operation from a file-system point of view.<a name="line.35"></a> +<span class="sourceLineNo">036</span> */<a name="line.36"></a> +<span class="sourceLineNo">037</span>@Category(MediumTests.class)<a name="line.37"></a> +<span class="sourceLineNo">038</span>public class TestMobRestoreSnapshotHelper extends TestRestoreSnapshotHelper {<a name="line.38"></a> +<span class="sourceLineNo">039</span><a name="line.39"></a> +<span class="sourceLineNo">040</span> @ClassRule<a name="line.40"></a> +<span class="sourceLineNo">041</span> public static final HBaseClassTestRule CLASS_RULE =<a name="line.41"></a> +<span class="sourceLineNo">042</span> HBaseClassTestRule.forClass(TestMobRestoreSnapshotHelper.class);<a name="line.42"></a> +<span class="sourceLineNo">043</span><a name="line.43"></a> +<span class="sourceLineNo">044</span> final Logger LOG = LoggerFactory.getLogger(getClass());<a name="line.44"></a> +<span class="sourceLineNo">045</span><a name="line.45"></a> +<span class="sourceLineNo">046</span> @Override<a name="line.46"></a> +<span class="sourceLineNo">047</span> protected void setupConf(Configuration conf) {<a name="line.47"></a> +<span class="sourceLineNo">048</span> conf.setInt(MobConstants.MOB_FILE_CACHE_SIZE_KEY, 0);<a name="line.48"></a> +<span class="sourceLineNo">049</span> }<a name="line.49"></a> +<span class="sourceLineNo">050</span><a name="line.50"></a> +<span class="sourceLineNo">051</span> @Override<a name="line.51"></a> +<span class="sourceLineNo">052</span> protected SnapshotMock createSnapshotMock() throws IOException {<a name="line.52"></a> +<span class="sourceLineNo">053</span> return new SnapshotMock(TEST_UTIL.getConfiguration(), fs, rootDir);<a name="line.53"></a> +<span class="sourceLineNo">054</span> }<a name="line.54"></a> +<span class="sourceLineNo">055</span><a name="line.55"></a> +<span class="sourceLineNo">056</span> @Override<a name="line.56"></a> +<span class="sourceLineNo">057</span> protected void createTableAndSnapshot(TableName tableName, String snapshotName)<a name="line.57"></a> +<span class="sourceLineNo">058</span> throws IOException {<a name="line.58"></a> +<span class="sourceLineNo">059</span> byte[] column = Bytes.toBytes("A");<a name="line.59"></a> +<span class="sourceLineNo">060</span> Table table = MobSnapshotTestingUtils.createMobTable(TEST_UTIL, tableName, column);<a name="line.60"></a> +<span class="sourceLineNo">061</span> TEST_UTIL.loadTable(table, column);<a name="line.61"></a> +<span class="sourceLineNo">062</span> TEST_UTIL.getAdmin().snapshot(snapshotName, tableName);<a name="line.62"></a> +<span class="sourceLineNo">063</span> }<a name="line.63"></a> +<span class="sourceLineNo">064</span>}<a name="line.64"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/545640e1/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html ---------------------------------------------------------------------- diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html index 59c4e5e..3560b81 100644 --- a/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html +++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html @@ -32,167 +32,232 @@ <span class="sourceLineNo">024</span>import java.util.List;<a name="line.24"></a> <span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a> <span class="sourceLineNo">026</span>import org.apache.hadoop.fs.FileSystem;<a name="line.26"></a> -<span class="sourceLineNo">027</span>import org.apache.hadoop.fs.Path;<a name="line.27"></a> -<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.28"></a> -<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.29"></a> -<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HConstants;<a name="line.30"></a> -<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.31"></a> -<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher;<a name="line.32"></a> -<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.33"></a> -<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.34"></a> -<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.regionserver.StoreFileInfo;<a name="line.35"></a> -<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils.SnapshotMock;<a name="line.36"></a> -<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.37"></a> -<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.38"></a> -<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.FSTableDescriptors;<a name="line.39"></a> -<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.40"></a> -<span class="sourceLineNo">041</span>import org.junit.After;<a name="line.41"></a> -<span class="sourceLineNo">042</span>import org.junit.Before;<a name="line.42"></a> -<span class="sourceLineNo">043</span>import org.junit.ClassRule;<a name="line.43"></a> -<span class="sourceLineNo">044</span>import org.junit.Test;<a name="line.44"></a> -<span class="sourceLineNo">045</span>import org.junit.experimental.categories.Category;<a name="line.45"></a> -<span class="sourceLineNo">046</span>import org.mockito.Mockito;<a name="line.46"></a> -<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a> -<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a> -<span class="sourceLineNo">049</span><a name="line.49"></a> -<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.50"></a> -<span class="sourceLineNo">051</span><a name="line.51"></a> -<span class="sourceLineNo">052</span>/**<a name="line.52"></a> -<span class="sourceLineNo">053</span> * Test the restore/clone operation from a file-system point of view.<a name="line.53"></a> -<span class="sourceLineNo">054</span> */<a name="line.54"></a> -<span class="sourceLineNo">055</span>@Category({RegionServerTests.class, SmallTests.class})<a name="line.55"></a> -<span class="sourceLineNo">056</span>public class TestRestoreSnapshotHelper {<a name="line.56"></a> -<span class="sourceLineNo">057</span><a name="line.57"></a> -<span class="sourceLineNo">058</span> @ClassRule<a name="line.58"></a> -<span class="sourceLineNo">059</span> public static final HBaseClassTestRule CLASS_RULE =<a name="line.59"></a> -<span class="sourceLineNo">060</span> HBaseClassTestRule.forClass(TestRestoreSnapshotHelper.class);<a name="line.60"></a> +<span class="sourceLineNo">027</span>import org.apache.hadoop.fs.LocatedFileStatus;<a name="line.27"></a> +<span class="sourceLineNo">028</span>import org.apache.hadoop.fs.Path;<a name="line.28"></a> +<span class="sourceLineNo">029</span>import org.apache.hadoop.fs.RemoteIterator;<a name="line.29"></a> +<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.30"></a> +<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.31"></a> +<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HConstants;<a name="line.32"></a> +<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.TableName;<a name="line.33"></a> +<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Table;<a name="line.34"></a> +<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.35"></a> +<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher;<a name="line.36"></a> +<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.HFileLink;<a name="line.37"></a> +<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.38"></a> +<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.39"></a> +<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.regionserver.StoreFileInfo;<a name="line.40"></a> +<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.snapshot.SnapshotTestingUtils.SnapshotMock;<a name="line.41"></a> +<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.42"></a> +<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.43"></a> +<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.44"></a> +<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.CommonFSUtils;<a name="line.45"></a> +<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.FSTableDescriptors;<a name="line.46"></a> +<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.47"></a> +<span class="sourceLineNo">048</span>import org.junit.After;<a name="line.48"></a> +<span class="sourceLineNo">049</span>import org.junit.AfterClass;<a name="line.49"></a> +<span class="sourceLineNo">050</span>import org.junit.Assert;<a name="line.50"></a> +<span class="sourceLineNo">051</span>import org.junit.Before;<a name="line.51"></a> +<span class="sourceLineNo">052</span>import org.junit.BeforeClass;<a name="line.52"></a> +<span class="sourceLineNo">053</span>import org.junit.ClassRule;<a name="line.53"></a> +<span class="sourceLineNo">054</span>import org.junit.Test;<a name="line.54"></a> +<span class="sourceLineNo">055</span>import org.junit.experimental.categories.Category;<a name="line.55"></a> +<span class="sourceLineNo">056</span>import org.mockito.Mockito;<a name="line.56"></a> +<span class="sourceLineNo">057</span>import org.slf4j.Logger;<a name="line.57"></a> +<span class="sourceLineNo">058</span>import org.slf4j.LoggerFactory;<a name="line.58"></a> +<span class="sourceLineNo">059</span><a name="line.59"></a> +<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.60"></a> <span class="sourceLineNo">061</span><a name="line.61"></a> -<span class="sourceLineNo">062</span> private static final Logger LOG = LoggerFactory.getLogger(TestRestoreSnapshotHelper.class);<a name="line.62"></a> -<span class="sourceLineNo">063</span><a name="line.63"></a> -<span class="sourceLineNo">064</span> protected final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.64"></a> -<span class="sourceLineNo">065</span> protected final static String TEST_HFILE = "abc";<a name="line.65"></a> -<span class="sourceLineNo">066</span><a name="line.66"></a> -<span class="sourceLineNo">067</span> protected Configuration conf;<a name="line.67"></a> -<span class="sourceLineNo">068</span> protected Path archiveDir;<a name="line.68"></a> -<span class="sourceLineNo">069</span> protected FileSystem fs;<a name="line.69"></a> -<span class="sourceLineNo">070</span> protected Path rootDir;<a name="line.70"></a> +<span class="sourceLineNo">062</span>/**<a name="line.62"></a> +<span class="sourceLineNo">063</span> * Test the restore/clone operation from a file-system point of view.<a name="line.63"></a> +<span class="sourceLineNo">064</span> */<a name="line.64"></a> +<span class="sourceLineNo">065</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.65"></a> +<span class="sourceLineNo">066</span>public class TestRestoreSnapshotHelper {<a name="line.66"></a> +<span class="sourceLineNo">067</span><a name="line.67"></a> +<span class="sourceLineNo">068</span> @ClassRule<a name="line.68"></a> +<span class="sourceLineNo">069</span> public static final HBaseClassTestRule CLASS_RULE =<a name="line.69"></a> +<span class="sourceLineNo">070</span> HBaseClassTestRule.forClass(TestRestoreSnapshotHelper.class);<a name="line.70"></a> <span class="sourceLineNo">071</span><a name="line.71"></a> -<span class="sourceLineNo">072</span> protected void setupConf(Configuration conf) {<a name="line.72"></a> -<span class="sourceLineNo">073</span> }<a name="line.73"></a> -<span class="sourceLineNo">074</span><a name="line.74"></a> -<span class="sourceLineNo">075</span> @Before<a name="line.75"></a> -<span class="sourceLineNo">076</span> public void setup() throws Exception {<a name="line.76"></a> -<span class="sourceLineNo">077</span> rootDir = TEST_UTIL.getDataTestDir("testRestore");<a name="line.77"></a> -<span class="sourceLineNo">078</span> archiveDir = new Path(rootDir, HConstants.HFILE_ARCHIVE_DIRECTORY);<a name="line.78"></a> -<span class="sourceLineNo">079</span> fs = TEST_UTIL.getTestFileSystem();<a name="line.79"></a> -<span class="sourceLineNo">080</span> conf = TEST_UTIL.getConfiguration();<a name="line.80"></a> -<span class="sourceLineNo">081</span> setupConf(conf);<a name="line.81"></a> -<span class="sourceLineNo">082</span> FSUtils.setRootDir(conf, rootDir);<a name="line.82"></a> +<span class="sourceLineNo">072</span> private static final Logger LOG = LoggerFactory.getLogger(TestRestoreSnapshotHelper.class);<a name="line.72"></a> +<span class="sourceLineNo">073</span><a name="line.73"></a> +<span class="sourceLineNo">074</span> protected final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.74"></a> +<span class="sourceLineNo">075</span> protected final static String TEST_HFILE = "abc";<a name="line.75"></a> +<span class="sourceLineNo">076</span><a name="line.76"></a> +<span class="sourceLineNo">077</span> protected Configuration conf;<a name="line.77"></a> +<span class="sourceLineNo">078</span> protected Path archiveDir;<a name="line.78"></a> +<span class="sourceLineNo">079</span> protected FileSystem fs;<a name="line.79"></a> +<span class="sourceLineNo">080</span> protected Path rootDir;<a name="line.80"></a> +<span class="sourceLineNo">081</span><a name="line.81"></a> +<span class="sourceLineNo">082</span> protected void setupConf(Configuration conf) {<a name="line.82"></a> <span class="sourceLineNo">083</span> }<a name="line.83"></a> <span class="sourceLineNo">084</span><a name="line.84"></a> -<span class="sourceLineNo">085</span> @After<a name="line.85"></a> -<span class="sourceLineNo">086</span> public void tearDown() throws Exception {<a name="line.86"></a> -<span class="sourceLineNo">087</span> fs.delete(TEST_UTIL.getDataTestDir(), true);<a name="line.87"></a> +<span class="sourceLineNo">085</span> @BeforeClass<a name="line.85"></a> +<span class="sourceLineNo">086</span> public static void setupCluster() throws Exception {<a name="line.86"></a> +<span class="sourceLineNo">087</span> TEST_UTIL.startMiniCluster();<a name="line.87"></a> <span class="sourceLineNo">088</span> }<a name="line.88"></a> <span class="sourceLineNo">089</span><a name="line.89"></a> -<span class="sourceLineNo">090</span> protected SnapshotMock createSnapshotMock() throws IOException {<a name="line.90"></a> -<span class="sourceLineNo">091</span> return new SnapshotMock(TEST_UTIL.getConfiguration(), fs, rootDir);<a name="line.91"></a> -<span class="sourceLineNo">092</span> }<a name="line.92"></a> -<span class="sourceLineNo">093</span><a name="line.93"></a> -<span class="sourceLineNo">094</span> @Test<a name="line.94"></a> -<span class="sourceLineNo">095</span> public void testRestore() throws IOException {<a name="line.95"></a> -<span class="sourceLineNo">096</span> restoreAndVerify("snapshot", "testRestore");<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> @Test<a name="line.99"></a> -<span class="sourceLineNo">100</span> public void testRestoreWithNamespace() throws IOException {<a name="line.100"></a> -<span class="sourceLineNo">101</span> restoreAndVerify("snapshot", "namespace1:testRestoreWithNamespace");<a name="line.101"></a> -<span class="sourceLineNo">102</span> }<a name="line.102"></a> -<span class="sourceLineNo">103</span><a name="line.103"></a> -<span class="sourceLineNo">104</span> private void restoreAndVerify(final String snapshotName, final String tableName) throws IOException {<a name="line.104"></a> -<span class="sourceLineNo">105</span> // Test Rolling-Upgrade like Snapshot.<a name="line.105"></a> -<span class="sourceLineNo">106</span> // half machines writing using v1 and the others using v2 format.<a name="line.106"></a> -<span class="sourceLineNo">107</span> SnapshotMock snapshotMock = createSnapshotMock();<a name="line.107"></a> -<span class="sourceLineNo">108</span> SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV2("snapshot", tableName);<a name="line.108"></a> -<span class="sourceLineNo">109</span> builder.addRegionV1();<a name="line.109"></a> -<span class="sourceLineNo">110</span> builder.addRegionV2();<a name="line.110"></a> -<span class="sourceLineNo">111</span> builder.addRegionV2();<a name="line.111"></a> -<span class="sourceLineNo">112</span> builder.addRegionV1();<a name="line.112"></a> -<span class="sourceLineNo">113</span> Path snapshotDir = builder.commit();<a name="line.113"></a> -<span class="sourceLineNo">114</span> TableDescriptor htd = builder.getTableDescriptor();<a name="line.114"></a> -<span class="sourceLineNo">115</span> SnapshotDescription desc = builder.getSnapshotDescription();<a name="line.115"></a> -<span class="sourceLineNo">116</span><a name="line.116"></a> -<span class="sourceLineNo">117</span> // Test clone a snapshot<a name="line.117"></a> -<span class="sourceLineNo">118</span> TableDescriptor htdClone = snapshotMock.createHtd("testtb-clone");<a name="line.118"></a> -<span class="sourceLineNo">119</span> testRestore(snapshotDir, desc, htdClone);<a name="line.119"></a> -<span class="sourceLineNo">120</span> verifyRestore(rootDir, htd, htdClone);<a name="line.120"></a> -<span class="sourceLineNo">121</span><a name="line.121"></a> -<span class="sourceLineNo">122</span> // Test clone a clone ("link to link")<a name="line.122"></a> -<span class="sourceLineNo">123</span> SnapshotDescription cloneDesc = SnapshotDescription.newBuilder()<a name="line.123"></a> -<span class="sourceLineNo">124</span> .setName("cloneSnapshot")<a name="line.124"></a> -<span class="sourceLineNo">125</span> .setTable("testtb-clone")<a name="line.125"></a> -<span class="sourceLineNo">126</span> .build();<a name="line.126"></a> -<span class="sourceLineNo">127</span> Path cloneDir = FSUtils.getTableDir(rootDir, htdClone.getTableName());<a name="line.127"></a> -<span class="sourceLineNo">128</span> TableDescriptor htdClone2 = snapshotMock.createHtd("testtb-clone2");<a name="line.128"></a> -<span class="sourceLineNo">129</span> testRestore(cloneDir, cloneDesc, htdClone2);<a name="line.129"></a> -<span class="sourceLineNo">130</span> verifyRestore(rootDir, htd, htdClone2);<a name="line.130"></a> -<span class="sourceLineNo">131</span> }<a name="line.131"></a> -<span class="sourceLineNo">132</span><a name="line.132"></a> -<span class="sourceLineNo">133</span> private void verifyRestore(final Path rootDir, final TableDescriptor sourceHtd,<a name="line.133"></a> -<span class="sourceLineNo">134</span> final TableDescriptor htdClone) throws IOException {<a name="line.134"></a> -<span class="sourceLineNo">135</span> List<String> files = SnapshotTestingUtils.listHFileNames(fs,<a name="line.135"></a> -<span class="sourceLineNo">136</span> FSUtils.getTableDir(rootDir, htdClone.getTableName()));<a name="line.136"></a> -<span class="sourceLineNo">137</span> assertEquals(12, files.size());<a name="line.137"></a> -<span class="sourceLineNo">138</span> for (int i = 0; i < files.size(); i += 2) {<a name="line.138"></a> -<span class="sourceLineNo">139</span> String linkFile = files.get(i);<a name="line.139"></a> -<span class="sourceLineNo">140</span> String refFile = files.get(i+1);<a name="line.140"></a> -<span class="sourceLineNo">141</span> assertTrue(linkFile + " should be a HFileLink", HFileLink.isHFileLink(linkFile));<a name="line.141"></a> -<span class="sourceLineNo">142</span> assertTrue(refFile + " should be a Referene", StoreFileInfo.isReference(refFile));<a name="line.142"></a> -<span class="sourceLineNo">143</span> assertEquals(sourceHtd.getTableName(), HFileLink.getReferencedTableName(linkFile));<a name="line.143"></a> -<span class="sourceLineNo">144</span> Path refPath = getReferredToFile(refFile);<a name="line.144"></a> -<span class="sourceLineNo">145</span> LOG.debug("get reference name for file " + refFile + " = " + refPath);<a name="line.145"></a> -<span class="sourceLineNo">146</span> assertTrue(refPath.getName() + " should be a HFileLink", HFileLink.isHFileLink(refPath.getName()));<a name="line.146"></a> -<span class="sourceLineNo">147</span> assertEquals(linkFile, refPath.getName());<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> * Execute the restore operation<a name="line.152"></a> -<span class="sourceLineNo">153</span> * @param snapshotDir The snapshot directory to use as "restore source"<a name="line.153"></a> -<span class="sourceLineNo">154</span> * @param sd The snapshot descriptor<a name="line.154"></a> -<span class="sourceLineNo">155</span> * @param htdClone The HTableDescriptor of the table to restore/clone.<a name="line.155"></a> -<span class="sourceLineNo">156</span> */<a name="line.156"></a> -<span class="sourceLineNo">157</span> private void testRestore(final Path snapshotDir, final SnapshotDescription sd,<a name="line.157"></a> -<span class="sourceLineNo">158</span> final TableDescriptor htdClone) throws IOException {<a name="line.158"></a> -<span class="sourceLineNo">159</span> LOG.debug("pre-restore table=" + htdClone.getTableName() + " snapshot=" + snapshotDir);<a name="line.159"></a> -<span class="sourceLineNo">160</span> FSUtils.logFileSystemState(fs, rootDir, LOG);<a name="line.160"></a> -<span class="sourceLineNo">161</span><a name="line.161"></a> -<span class="sourceLineNo">162</span> new FSTableDescriptors(conf).createTableDescriptor(htdClone);<a name="line.162"></a> -<span class="sourceLineNo">163</span> RestoreSnapshotHelper helper = getRestoreHelper(rootDir, snapshotDir, sd, htdClone);<a name="line.163"></a> -<span class="sourceLineNo">164</span> helper.restoreHdfsRegions();<a name="line.164"></a> -<span class="sourceLineNo">165</span><a name="line.165"></a> -<span class="sourceLineNo">166</span> LOG.debug("post-restore table=" + htdClone.getTableName() + " snapshot=" + snapshotDir);<a name="line.166"></a> -<span class="sourceLineNo">167</span> FSUtils.logFileSystemState(fs, rootDir, LOG);<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> /**<a name="line.170"></a> -<span class="sourceLineNo">171</span> * Initialize the restore helper, based on the snapshot and table information provided.<a name="line.171"></a> -<span class="sourceLineNo">172</span> */<a name="line.172"></a> -<span class="sourceLineNo">173</span> private RestoreSnapshotHelper getRestoreHelper(final Path rootDir, final Path snapshotDir,<a name="line.173"></a> -<span class="sourceLineNo">174</span> final SnapshotDescription sd, final TableDescriptor htdClone) throws IOException {<a name="line.174"></a> -<span class="sourceLineNo">175</span> ForeignExceptionDispatcher monitor = Mockito.mock(ForeignExceptionDispatcher.class);<a name="line.175"></a> -<span class="sourceLineNo">176</span> MonitoredTask status = Mockito.mock(MonitoredTask.class);<a name="line.176"></a> -<span class="sourceLineNo">177</span><a name="line.177"></a> -<span class="sourceLineNo">178</span> SnapshotManifest manifest = SnapshotManifest.open(conf, fs, snapshotDir, sd);<a name="line.178"></a> -<span class="sourceLineNo">179</span> return new RestoreSnapshotHelper(conf, fs, manifest,<a name="line.179"></a> -<span class="sourceLineNo">180</span> htdClone, rootDir, monitor, status);<a name="line.180"></a> -<span class="sourceLineNo">181</span> }<a name="line.181"></a> -<span class="sourceLineNo">182</span><a name="line.182"></a> -<span class="sourceLineNo">183</span> private Path getReferredToFile(final String referenceName) {<a name="line.183"></a> -<span class="sourceLineNo">184</span> Path fakeBasePath = new Path(new Path("table", "region"), "cf");<a name="line.184"></a> -<span class="sourceLineNo">185</span> return StoreFileInfo.getReferredToFile(new Path(fakeBasePath, referenceName));<a name="line.185"></a> -<span class="sourceLineNo">186</span> }<a name="line.186"></a> -<span class="sourceLineNo">187</span>}<a name="line.187"></a> +<span class="sourceLineNo">090</span> @AfterClass<a name="line.90"></a> +<span class="sourceLineNo">091</span> public static void tearDownCluster() throws Exception {<a name="line.91"></a> +<span class="sourceLineNo">092</span> TEST_UTIL.shutdownMiniCluster();<a name="line.92"></a> +<span class="sourceLineNo">093</span> }<a name="line.93"></a> +<span class="sourceLineNo">094</span><a name="line.94"></a> +<span class="sourceLineNo">095</span> @Before<a name="line.95"></a> +<span class="sourceLineNo">096</span> public void setup() throws Exception {<a name="line.96"></a> +<span class="sourceLineNo">097</span> rootDir = TEST_UTIL.getDataTestDir("testRestore");<a name="line.97"></a> +<span class="sourceLineNo">098</span> archiveDir = new Path(rootDir, HConstants.HFILE_ARCHIVE_DIRECTORY);<a name="line.98"></a> +<span class="sourceLineNo">099</span> fs = TEST_UTIL.getTestFileSystem();<a name="line.99"></a> +<span class="sourceLineNo">100</span> conf = TEST_UTIL.getConfiguration();<a name="line.100"></a> +<span class="sourceLineNo">101</span> setupConf(conf);<a name="line.101"></a> +<span class="sourceLineNo">102</span> FSUtils.setRootDir(conf, rootDir);<a name="line.102"></a> +<span class="sourceLineNo">103</span> }<a name="line.103"></a> +<span class="sourceLineNo">104</span><a name="line.104"></a> +<span class="sourceLineNo">105</span> @After<a name="line.105"></a> +<span class="sourceLineNo">106</span> public void tearDown() throws Exception {<a name="line.106"></a> +<span class="sourceLineNo">107</span> fs.delete(TEST_UTIL.getDataTestDir(), true);<a name="line.107"></a> +<span class="sourceLineNo">108</span> }<a name="line.108"></a> +<span class="sourceLineNo">109</span><a name="line.109"></a> +<span class="sourceLineNo">110</span> protected SnapshotMock createSnapshotMock() throws IOException {<a name="line.110"></a> +<span class="sourceLineNo">111</span> return new SnapshotMock(TEST_UTIL.getConfiguration(), fs, rootDir);<a name="line.111"></a> +<span class="sourceLineNo">112</span> }<a name="line.112"></a> +<span class="sourceLineNo">113</span><a name="line.113"></a> +<span class="sourceLineNo">114</span> @Test<a name="line.114"></a> +<span class="sourceLineNo">115</span> public void testRestore() throws IOException {<a name="line.115"></a> +<span class="sourceLineNo">116</span> restoreAndVerify("snapshot", "testRestore");<a name="line.116"></a> +<span class="sourceLineNo">117</span> }<a name="line.117"></a> +<span class="sourceLineNo">118</span><a name="line.118"></a> +<span class="sourceLineNo">119</span> @Test<a name="line.119"></a> +<span class="sourceLineNo">120</span> public void testRestoreWithNamespace() throws IOException {<a name="line.120"></a> +<span class="sourceLineNo">121</span> restoreAndVerify("snapshot", "namespace1:testRestoreWithNamespace");<a name="line.121"></a> +<span class="sourceLineNo">122</span> }<a name="line.122"></a> +<span class="sourceLineNo">123</span><a name="line.123"></a> +<span class="sourceLineNo">124</span> @Test<a name="line.124"></a> +<span class="sourceLineNo">125</span> public void testNoHFileLinkInRootDir() throws IOException {<a name="line.125"></a> +<span class="sourceLineNo">126</span> rootDir = TEST_UTIL.getDefaultRootDirPath();<a name="line.126"></a> +<span class="sourceLineNo">127</span> FSUtils.setRootDir(conf, rootDir);<a name="line.127"></a> +<span class="sourceLineNo">128</span> fs = rootDir.getFileSystem(conf);<a name="line.128"></a> +<span class="sourceLineNo">129</span><a name="line.129"></a> +<span class="sourceLineNo">130</span> TableName tableName = TableName.valueOf("testNoHFileLinkInRootDir");<a name="line.130"></a> +<span class="sourceLineNo">131</span> String snapshotName = tableName.getNameAsString() + "-snapshot";<a name="line.131"></a> +<span class="sourceLineNo">132</span> createTableAndSnapshot(tableName, snapshotName);<a name="line.132"></a> +<span class="sourceLineNo">133</span><a name="line.133"></a> +<span class="sourceLineNo">134</span> Path restoreDir = new Path("/hbase/.tmp-restore");<a name="line.134"></a> +<span class="sourceLineNo">135</span> RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.135"></a> +<span class="sourceLineNo">136</span> checkNoHFileLinkInTableDir(tableName);<a name="line.136"></a> +<span class="sourceLineNo">137</span> }<a name="line.137"></a> +<span class="sourceLineNo">138</span><a name="line.138"></a> +<span class="sourceLineNo">139</span> protected void createTableAndSnapshot(TableName tableName, String snapshotName)<a name="line.139"></a> +<span class="sourceLineNo">140</span> throws IOException {<a name="line.140"></a> +<span class="sourceLineNo">141</span> byte[] column = Bytes.toBytes("A");<a name="line.141"></a> +<span class="sourceLineNo">142</span> Table table = TEST_UTIL.createTable(tableName, column, 2);<a name="line.142"></a> +<span class="sourceLineNo">143</span> TEST_UTIL.loadTable(table, column);<a name="line.143"></a> +<span class="sourceLineNo">144</span> TEST_UTIL.getAdmin().snapshot(snapshotName, tableName);<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> private void checkNoHFileLinkInTableDir(TableName tableName) throws IOException {<a name="line.147"></a> +<span class="sourceLineNo">148</span> Path[] tableDirs = new Path[] { CommonFSUtils.getTableDir(rootDir, tableName),<a name="line.148"></a> +<span class="sourceLineNo">149</span> CommonFSUtils.getTableDir(new Path(rootDir, HConstants.HFILE_ARCHIVE_DIRECTORY), tableName),<a name="line.149"></a> +<span class="sourceLineNo">150</span> CommonFSUtils.getTableDir(MobUtils.getMobHome(rootDir), tableName) };<a name="line.150"></a> +<span class="sourceLineNo">151</span> for (Path tableDir : tableDirs) {<a name="line.151"></a> +<span class="sourceLineNo">152</span> Assert.assertFalse(hasHFileLink(tableDir));<a name="line.152"></a> +<span class="sourceLineNo">153</span> }<a name="line.153"></a> +<span class="sourceLineNo">154</span> }<a name="line.154"></a> +<span class="sourceLineNo">155</span><a name="line.155"></a> +<span class="sourceLineNo">156</span> private boolean hasHFileLink(Path tableDir) throws IOException {<a name="line.156"></a> +<span class="sourceLineNo">157</span> if (fs.exists(tableDir)) {<a name="line.157"></a> +<span class="sourceLineNo">158</span> RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(tableDir, true);<a name="line.158"></a> +<span class="sourceLineNo">159</span> while (iterator.hasNext()) {<a name="line.159"></a> +<span class="sourceLineNo">160</span> LocatedFileStatus fileStatus = iterator.next();<a name="line.160"></a> +<span class="sourceLineNo">161</span> if (fileStatus.isFile() && HFileLink.isHFileLink(fileStatus.getPath())) {<a name="line.161"></a> +<span class="sourceLineNo">162</span> return true;<a name="line.162"></a> +<span class="sourceLineNo">163</span> }<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> return false;<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> private void restoreAndVerify(final String snapshotName, final String tableName) throws IOException {<a name="line.169"></a> +<span class="sourceLineNo">170</span> // Test Rolling-Upgrade like Snapshot.<a name="line.170"></a> +<span class="sourceLineNo">171</span> // half machines writing using v1 and the others using v2 format.<a name="line.171"></a> +<span class="sourceLineNo">172</span> SnapshotMock snapshotMock = createSnapshotMock();<a name="line.172"></a> +<span class="sourceLineNo">173</span> SnapshotMock.SnapshotBuilder builder = snapshotMock.createSnapshotV2("snapshot", tableName);<a name="line.173"></a> +<span class="sourceLineNo">174</span> builder.addRegionV1();<a name="line.174"></a> +<span class="sourceLineNo">175</span> builder.addRegionV2();<a name="line.175"></a> +<span class="sourceLineNo">176</span> builder.addRegionV2();<a name="line.176"></a> +<span class="sourceLineNo">177</span> builder.addRegionV1();<a name="line.177"></a> +<span class="sourceLineNo">178</span> Path snapshotDir = builder.commit();<a name="line.178"></a> +<span class="sourceLineNo">179</span> TableDescriptor htd = builder.getTableDescriptor();<a name="line.179"></a> +<span class="sourceLineNo">180</span> SnapshotDescription desc = builder.getSnapshotDescription();<a name="line.180"></a> +<span class="sourceLineNo">181</span><a name="line.181"></a> +<span class="sourceLineNo">182</span> // Test clone a snapshot<a name="line.182"></a> +<span class="sourceLineNo">183</span> TableDescriptor htdClone = snapshotMock.createHtd("testtb-clone");<a name="line.183"></a> +<span class="sourceLineNo">184</span> testRestore(snapshotDir, desc, htdClone);<a name="line.184"></a> +<span class="sourceLineNo">185</span> verifyRestore(rootDir, htd, htdClone);<a name="line.185"></a> +<span class="sourceLineNo">186</span><a name="line.186"></a> +<span class="sourceLineNo">187</span> // Test clone a clone ("link to link")<a name="line.187"></a> +<span class="sourceLineNo">188</span> SnapshotDescription cloneDesc = SnapshotDescription.newBuilder()<a name="line.188"></a> +<span class="sourceLineNo">189</span> .setName("cloneSnapshot")<a name="line.189"></a> +<span class="sourceLineNo">190</span> .setTable("testtb-clone")<a name="line.190"></a> +<span class="sourceLineNo">191</span> .build();<a name="line.191"></a> +<span class="sourceLineNo">192</span> Path cloneDir = FSUtils.getTableDir(rootDir, htdClone.getTableName());<a name="line.192"></a> +<span class="sourceLineNo">193</span> TableDescriptor htdClone2 = snapshotMock.createHtd("testtb-clone2");<a name="line.193"></a> +<span class="sourceLineNo">194</span> testRestore(cloneDir, cloneDesc, htdClone2);<a name="line.194"></a> +<span class="sourceLineNo">195</span> verifyRestore(rootDir, htd, htdClone2);<a name="line.195"></a> +<span class="sourceLineNo">196</span> }<a name="line.196"></a> +<span class="sourceLineNo">197</span><a name="line.197"></a> +<span class="sourceLineNo">198</span> private void verifyRestore(final Path rootDir, final TableDescriptor sourceHtd,<a name="line.198"></a> +<span class="sourceLineNo">199</span> final TableDescriptor htdClone) throws IOException {<a name="line.199"></a> +<span class="sourceLineNo">200</span> List<String> files = SnapshotTestingUtils.listHFileNames(fs,<a name="line.200"></a> +<span class="sourceLineNo">201</span> FSUtils.getTableDir(rootDir, htdClone.getTableName()));<a name="line.201"></a> +<span class="sourceLineNo">202</span> assertEquals(12, files.size());<a name="line.202"></a> +<span class="sourceLineNo">203</span> for (int i = 0; i < files.size(); i += 2) {<a name="line.203"></a> +<span class="sourceLineNo">204</span> String linkFile = files.get(i);<a name="line.204"></a> +<span class="sourceLineNo">205</span> String refFile = files.get(i+1);<a name="line.205"></a> +<span class="sourceLineNo">206</span> assertTrue(linkFile + " should be a HFileLink", HFileLink.isHFileLink(linkFile));<a name="line.206"></a> +<span class="sourceLineNo">207</span> assertTrue(refFile + " should be a Referene", StoreFileInfo.isReference(refFile));<a name="line.207"></a> +<span class="sourceLineNo">208</span> assertEquals(sourceHtd.getTableName(), HFileLink.getReferencedTableName(linkFile));<a name="line.208"></a> +<span class="sourceLineNo">209</span> Path refPath = getReferredToFile(refFile);<a name="line.209"></a> +<span class="sourceLineNo">210</span> LOG.debug("get reference name for file " + refFile + " = " + refPath);<a name="line.210"></a> +<span class="sourceLineNo">211</span> assertTrue(refPath.getName() + " should be a HFileLink", HFileLink.isHFileLink(refPath.getName()));<a name="line.211"></a> +<span class="sourceLineNo">212</span> assertEquals(linkFile, refPath.getName());<a name="line.212"></a> +<span class="sourceLineNo">213</span> }<a name="line.213"></a> +<span class="sourceLineNo">214</span> }<a name="line.214"></a> +<span class="sourceLineNo">215</span><a name="line.215"></a> +<span class="sourceLineNo">216</span> /**<a name="line.216"></a> +<span class="sourceLineNo">217</span> * Execute the restore operation<a name="line.217"></a> +<span class="sourceLineNo">218</span> * @param snapshotDir The snapshot directory to use as "restore source"<a name="line.218"></a> +<span class="sourceLineNo">219</span> * @param sd The snapshot descriptor<a name="line.219"></a> +<span class="sourceLineNo">220</span> * @param htdClone The HTableDescriptor of the table to restore/clone.<a name="line.220"></a> +<span class="sourceLineNo">221</span> */<a name="line.221"></a> +<span class="sourceLineNo">222</span> private void testRestore(final Path snapshotDir, final SnapshotDescription sd,<a name="line.222"></a> +<span class="sourceLineNo">223</span> final TableDescriptor htdClone) throws IOException {<a name="line.223"></a> +<span class="sourceLineNo">224</span> LOG.debug("pre-restore table=" + htdClone.getTableName() + " snapshot=" + snapshotDir);<a name="line.224"></a> +<span class="sourceLineNo">225</span> FSUtils.logFileSystemState(fs, rootDir, LOG);<a name="line.225"></a> +<span class="sourceLineNo">226</span><a name="line.226"></a> +<span class="sourceLineNo">227</span> new FSTableDescriptors(conf).createTableDescriptor(htdClone);<a name="line.227"></a> +<span class="sourceLineNo">228</span> RestoreSnapshotHelper helper = getRestoreHelper(rootDir, snapshotDir, sd, htdClone);<a name="line.228"></a> +<span class="sourceLineNo">229</span> helper.restoreHdfsRegions();<a name="line.229"></a> +<span class="sourceLineNo">230</span><a name="line.230"></a> +<span class="sourceLineNo">231</span> LOG.debug("post-restore table=" + htdClone.getTableName() + " snapshot=" + snapshotDir);<a name="line.231"></a> +<span class="sourceLineNo">232</span> FSUtils.logFileSystemState(fs, rootDir, LOG);<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> * Initialize the restore helper, based on the snapshot and table information provided.<a name="line.236"></a> +<span class="sourceLineNo">237</span> */<a name="line.237"></a> +<span class="sourceLineNo">238</span> private RestoreSnapshotHelper getRestoreHelper(final Path rootDir, final Path snapshotDir,<a name="line.238"></a> +<span class="sourceLineNo">239</span> final SnapshotDescription sd, final TableDescriptor htdClone) throws IOException {<a name="line.239"></a> +<span class="sourceLineNo">240</span> ForeignExceptionDispatcher monitor = Mockito.mock(ForeignExceptionDispatcher.class);<a name="line.240"></a> +<span class="sourceLineNo">241</span> MonitoredTask status = Mockito.mock(MonitoredTask.class);<a name="line.241"></a> +<span class="sourceLineNo">242</span><a name="line.242"></a> +<span class="sourceLineNo">243</span> SnapshotManifest manifest = SnapshotManifest.open(conf, fs, snapshotDir, sd);<a name="line.243"></a> +<span class="sourceLineNo">244</span> return new RestoreSnapshotHelper(conf, fs, manifest,<a name="line.244"></a> +<span class="sourceLineNo">245</span> htdClone, rootDir, monitor, status);<a name="line.245"></a> +<span class="sourceLineNo">246</span> }<a name="line.246"></a> +<span class="sourceLineNo">247</span><a name="line.247"></a> +<span class="sourceLineNo">248</span> private Path getReferredToFile(final String referenceName) {<a name="line.248"></a> +<span class="sourceLineNo">249</span> Path fakeBasePath = new Path(new Path("table", "region"), "cf");<a name="line.249"></a> +<span class="sourceLineNo">250</span> return StoreFileInfo.getReferredToFile(new Path(fakeBasePath, referenceName));<a name="line.250"></a> +<span class="sourceLineNo">251</span> }<a name="line.251"></a> +<span class="sourceLineNo">252</span>}<a name="line.252"></a>