You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mi...@apache.org on 2016/03/24 16:54:44 UTC

[04/51] [partial] hbase-site git commit: Published site at 52fd70500e0a00e273e2ec0c09d7c914b89432ce.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f30982bd/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html
new file mode 100644
index 0000000..a8cacf0
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html
@@ -0,0 +1,178 @@
+<!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> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.google.common.collect.ImmutableList;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.lang.RandomStringUtils;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Get;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.client.Put;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.filter.TimestampsFilter;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.Before;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.Test;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.junit.experimental.categories.Category;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>import static org.junit.Assert.assertTrue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>@Category({RegionServerTests.class, LargeTests.class})<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class TestTimestampFilterSeekHint {<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private final static HBaseTestingUtility TEST_UTIL = HBaseTestingUtility.createLocalHTU();<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  private final static String RK = "myRK";<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private final static byte[] RK_BYTES = Bytes.toBytes(RK);<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private final static String FAMILY = "D";<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private final static byte[] FAMILY_BYTES = Bytes.toBytes(FAMILY);<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final static String QUAL = "0";<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final static byte[] QUAL_BYTES = Bytes.toBytes(QUAL);<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final int MAX_VERSIONS = 50000;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private HRegion region;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private int regionCount = 0;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @Test<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public void testGetSeek() throws IOException {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    StoreFileScanner.instrument();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    prepareRegion();<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>    Get g = new Get(RK_BYTES);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    final TimestampsFilter timestampsFilter = new TimestampsFilter(ImmutableList.of(5L), true);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    g.setFilter(timestampsFilter);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    final long initialSeekCount = StoreFileScanner.getSeekCount();<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    region.get(g);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    final long finalSeekCount = StoreFileScanner.getSeekCount();<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>      Make sure there's more than one.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      Aka one seek to get to the row, and one to get to the time.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    */<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    assertTrue(finalSeekCount &gt;= initialSeekCount + 3 );<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>  @Test<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  public void testGetDoesntSeekWithNoHint() throws IOException {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    StoreFileScanner.instrument();<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    prepareRegion();<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    Get g = new Get(RK_BYTES);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    g.setFilter(new TimestampsFilter(ImmutableList.of(5L)));<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    final long initialSeekCount = StoreFileScanner.getSeekCount();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    region.get(g);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    final long finalSeekCount = StoreFileScanner.getSeekCount();<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    assertTrue(finalSeekCount &gt;= initialSeekCount );<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    assertTrue(finalSeekCount &lt; initialSeekCount + 3);<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>  @Before<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void prepareRegion() throws IOException {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    region =<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        TEST_UTIL.createTestRegion("TestTimestampFilterSeekHint" + regionCount++,<a name="line.93"></a>
+<span class="sourceLineNo">094</span>            new HColumnDescriptor(FAMILY)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>                .setBlocksize(1024)<a name="line.95"></a>
+<span class="sourceLineNo">096</span>                .setMaxVersions(MAX_VERSIONS)<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>    for (long i = 0; i &lt;MAX_VERSIONS - 2; i++) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      Put p = new Put(RK_BYTES, i);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      p.addColumn(FAMILY_BYTES, QUAL_BYTES, Bytes.toBytes(RandomStringUtils.randomAlphabetic(255)));<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      region.put(p);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    region.flush(true);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span>}<a name="line.106"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f30982bd/xref-test/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/xref-test/allclasses-frame.html b/xref-test/allclasses-frame.html
index df3cf49..8436de0 100644
--- a/xref-test/allclasses-frame.html
+++ b/xref-test/allclasses-frame.html
@@ -261,6 +261,9 @@
 				<a href="org/apache/hadoop/hbase/CategoryBasedTimeout.html" target="classFrame">CategoryBasedTimeout</a>
 			</li>
 						<li>
+				<a href="org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" target="classFrame">CellGridStoreScanner</a>
+			</li>
+						<li>
 				<a href="org/apache/hadoop/hbase/chaos/actions/ChangeBloomFilterAction.html" target="classFrame">ChangeBloomFilterAction</a>
 			</li>
 						<li>
@@ -4863,6 +4866,9 @@
 				<a href="org/apache/hadoop/hbase/codec/prefixtree/timestamp/TestTimestampEncoder.html" target="classFrame">TestTimestampEncoder</a>
 			</li>
 						<li>
+				<a href="org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html" target="classFrame">TestTimestampFilterSeekHint</a>
+			</li>
+						<li>
 				<a href="org/apache/hadoop/hbase/client/TestTimestampsFilter.html" target="classFrame">TestTimestampsFilter</a>
 			</li>
 						<li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/f30982bd/xref-test/org/apache/hadoop/hbase/io/hfile/TestHFile.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/io/hfile/TestHFile.html b/xref-test/org/apache/hadoop/hbase/io/hfile/TestHFile.html
index 1ef6cd4..99167e8 100644
--- a/xref-test/org/apache/hadoop/hbase/io/hfile/TestHFile.html
+++ b/xref-test/org/apache/hadoop/hbase/io/hfile/TestHFile.html
@@ -407,155 +407,175 @@
 <a class="jxr_linenumber" name="397" href="#397">397</a>   <em class="jxr_javadoccomment">/**</em>
 <a class="jxr_linenumber" name="398" href="#398">398</a> <em class="jxr_javadoccomment">   * Make sure the ordinals for our compression algorithms do not change on us.</em>
 <a class="jxr_linenumber" name="399" href="#399">399</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="400" href="#400">400</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCompressionOrdinance() {
-<a class="jxr_linenumber" name="401" href="#401">401</a>     assertTrue(Compression.Algorithm.LZO.ordinal() == 0);
-<a class="jxr_linenumber" name="402" href="#402">402</a>     assertTrue(Compression.Algorithm.GZ.ordinal() == 1);
-<a class="jxr_linenumber" name="403" href="#403">403</a>     assertTrue(Compression.Algorithm.NONE.ordinal() == 2);
-<a class="jxr_linenumber" name="404" href="#404">404</a>     assertTrue(Compression.Algorithm.SNAPPY.ordinal() == 3);
-<a class="jxr_linenumber" name="405" href="#405">405</a>     assertTrue(Compression.Algorithm.LZ4.ordinal() == 4);
-<a class="jxr_linenumber" name="406" href="#406">406</a>   }
-<a class="jxr_linenumber" name="407" href="#407">407</a> 
-<a class="jxr_linenumber" name="408" href="#408">408</a>   @Test
-<a class="jxr_linenumber" name="409" href="#409">409</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetShortMidpoint() {
-<a class="jxr_linenumber" name="410" href="#410">410</a>     Cell left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="411" href="#411">411</a>     Cell right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="412" href="#412">412</a>     Cell mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
-<a class="jxr_linenumber" name="413" href="#413">413</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt;= 0);
-<a class="jxr_linenumber" name="414" href="#414">414</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
-<a class="jxr_linenumber" name="415" href="#415">415</a> 
-<a class="jxr_linenumber" name="416" href="#416">416</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="417" href="#417">417</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"b"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="418" href="#418">418</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
-<a class="jxr_linenumber" name="419" href="#419">419</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
-<a class="jxr_linenumber" name="420" href="#420">420</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
-<a class="jxr_linenumber" name="421" href="#421">421</a> 
-<a class="jxr_linenumber" name="422" href="#422">422</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"g"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="423" href="#423">423</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"i"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="424" href="#424">424</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
-<a class="jxr_linenumber" name="425" href="#425">425</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
-<a class="jxr_linenumber" name="426" href="#426">426</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
+<a class="jxr_linenumber" name="400" href="#400">400</a>   @Test
+<a class="jxr_linenumber" name="401" href="#401">401</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testCompressionOrdinance() {
+<a class="jxr_linenumber" name="402" href="#402">402</a>     assertTrue(Compression.Algorithm.LZO.ordinal() == 0);
+<a class="jxr_linenumber" name="403" href="#403">403</a>     assertTrue(Compression.Algorithm.GZ.ordinal() == 1);
+<a class="jxr_linenumber" name="404" href="#404">404</a>     assertTrue(Compression.Algorithm.NONE.ordinal() == 2);
+<a class="jxr_linenumber" name="405" href="#405">405</a>     assertTrue(Compression.Algorithm.SNAPPY.ordinal() == 3);
+<a class="jxr_linenumber" name="406" href="#406">406</a>     assertTrue(Compression.Algorithm.LZ4.ordinal() == 4);
+<a class="jxr_linenumber" name="407" href="#407">407</a>   }
+<a class="jxr_linenumber" name="408" href="#408">408</a> 
+<a class="jxr_linenumber" name="409" href="#409">409</a>   @Test
+<a class="jxr_linenumber" name="410" href="#410">410</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testShortMidpointSameQual() {
+<a class="jxr_linenumber" name="411" href="#411">411</a>     Cell left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>),
+<a class="jxr_linenumber" name="412" href="#412">412</a>         Bytes.toBytes(<span class="jxr_string">"a"</span>),
+<a class="jxr_linenumber" name="413" href="#413">413</a>         Bytes.toBytes(<span class="jxr_string">"a"</span>),
+<a class="jxr_linenumber" name="414" href="#414">414</a>         9,
+<a class="jxr_linenumber" name="415" href="#415">415</a>         KeyValue.Type.Maximum.getCode(),
+<a class="jxr_linenumber" name="416" href="#416">416</a>         HConstants.EMPTY_BYTE_ARRAY);
+<a class="jxr_linenumber" name="417" href="#417">417</a>     Cell right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>),
+<a class="jxr_linenumber" name="418" href="#418">418</a>         Bytes.toBytes(<span class="jxr_string">"a"</span>),
+<a class="jxr_linenumber" name="419" href="#419">419</a>         Bytes.toBytes(<span class="jxr_string">"a"</span>),
+<a class="jxr_linenumber" name="420" href="#420">420</a>         11,
+<a class="jxr_linenumber" name="421" href="#421">421</a>         KeyValue.Type.Maximum.getCode(),
+<a class="jxr_linenumber" name="422" href="#422">422</a>         HConstants.EMPTY_BYTE_ARRAY);
+<a class="jxr_linenumber" name="423" href="#423">423</a>     Cell mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="424" href="#424">424</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt;= 0);
+<a class="jxr_linenumber" name="425" href="#425">425</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) == 0);
+<a class="jxr_linenumber" name="426" href="#426">426</a>   }
 <a class="jxr_linenumber" name="427" href="#427">427</a> 
-<a class="jxr_linenumber" name="428" href="#428">428</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="429" href="#429">429</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"bbbbbbb"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="430" href="#430">430</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
-<a class="jxr_linenumber" name="431" href="#431">431</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
-<a class="jxr_linenumber" name="432" href="#432">432</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt; 0);
-<a class="jxr_linenumber" name="433" href="#433">433</a>     assertEquals(1, (<strong class="jxr_keyword">int</strong>) mid.getRowLength());
-<a class="jxr_linenumber" name="434" href="#434">434</a> 
-<a class="jxr_linenumber" name="435" href="#435">435</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="436" href="#436">436</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"b"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="437" href="#437">437</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
-<a class="jxr_linenumber" name="438" href="#438">438</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
-<a class="jxr_linenumber" name="439" href="#439">439</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
-<a class="jxr_linenumber" name="440" href="#440">440</a> 
-<a class="jxr_linenumber" name="441" href="#441">441</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="442" href="#442">442</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"aaaaaaaa"</span>), Bytes.toBytes(<span class="jxr_string">"b"</span>));
-<a class="jxr_linenumber" name="443" href="#443">443</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
-<a class="jxr_linenumber" name="444" href="#444">444</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
-<a class="jxr_linenumber" name="445" href="#445">445</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt; 0);
-<a class="jxr_linenumber" name="446" href="#446">446</a>     assertEquals(2, (<strong class="jxr_keyword">int</strong>) mid.getFamilyLength());
+<a class="jxr_linenumber" name="428" href="#428">428</a>   @Test
+<a class="jxr_linenumber" name="429" href="#429">429</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGetShortMidpoint() {
+<a class="jxr_linenumber" name="430" href="#430">430</a>     Cell left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="431" href="#431">431</a>     Cell right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="432" href="#432">432</a>     Cell mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="433" href="#433">433</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt;= 0);
+<a class="jxr_linenumber" name="434" href="#434">434</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
+<a class="jxr_linenumber" name="435" href="#435">435</a> 
+<a class="jxr_linenumber" name="436" href="#436">436</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="437" href="#437">437</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"b"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="438" href="#438">438</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="439" href="#439">439</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
+<a class="jxr_linenumber" name="440" href="#440">440</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
+<a class="jxr_linenumber" name="441" href="#441">441</a> 
+<a class="jxr_linenumber" name="442" href="#442">442</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"g"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="443" href="#443">443</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"i"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="444" href="#444">444</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="445" href="#445">445</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
+<a class="jxr_linenumber" name="446" href="#446">446</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
 <a class="jxr_linenumber" name="447" href="#447">447</a> 
 <a class="jxr_linenumber" name="448" href="#448">448</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="449" href="#449">449</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"aaaaaaaaa"</span>));
+<a class="jxr_linenumber" name="449" href="#449">449</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"bbbbbbb"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
 <a class="jxr_linenumber" name="450" href="#450">450</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
 <a class="jxr_linenumber" name="451" href="#451">451</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
 <a class="jxr_linenumber" name="452" href="#452">452</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt; 0);
-<a class="jxr_linenumber" name="453" href="#453">453</a>     assertEquals(2, (<strong class="jxr_keyword">int</strong>) mid.getQualifierLength());
+<a class="jxr_linenumber" name="453" href="#453">453</a>     assertEquals(1, (<strong class="jxr_keyword">int</strong>) mid.getRowLength());
 <a class="jxr_linenumber" name="454" href="#454">454</a> 
 <a class="jxr_linenumber" name="455" href="#455">455</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="456" href="#456">456</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"b"</span>));
+<a class="jxr_linenumber" name="456" href="#456">456</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"b"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
 <a class="jxr_linenumber" name="457" href="#457">457</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
 <a class="jxr_linenumber" name="458" href="#458">458</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
 <a class="jxr_linenumber" name="459" href="#459">459</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
-<a class="jxr_linenumber" name="460" href="#460">460</a>     assertEquals(1, (<strong class="jxr_keyword">int</strong>) mid.getQualifierLength());
-<a class="jxr_linenumber" name="461" href="#461">461</a> 
-<a class="jxr_linenumber" name="462" href="#462">462</a>     <em class="jxr_comment">// Assert that if meta comparator, it returns the right cell -- i.e. no</em>
-<a class="jxr_linenumber" name="463" href="#463">463</a>     <em class="jxr_comment">// optimization done.</em>
-<a class="jxr_linenumber" name="464" href="#464">464</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"g"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="465" href="#465">465</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"i"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
-<a class="jxr_linenumber" name="466" href="#466">466</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.META_COMPARATOR, left, right);
-<a class="jxr_linenumber" name="467" href="#467">467</a>     assertTrue(CellComparator.META_COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
-<a class="jxr_linenumber" name="468" href="#468">468</a>     assertTrue(CellComparator.META_COMPARATOR.compareKeyIgnoresMvcc(mid, right) == 0);
-<a class="jxr_linenumber" name="469" href="#469">469</a> 
-<a class="jxr_linenumber" name="470" href="#470">470</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="471" href="#471">471</a> <em class="jxr_javadoccomment">     * See HBASE-7845</em>
-<a class="jxr_linenumber" name="472" href="#472">472</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="473" href="#473">473</a>     byte[] rowA = Bytes.toBytes(<span class="jxr_string">"rowA"</span>);
-<a class="jxr_linenumber" name="474" href="#474">474</a>     byte[] rowB = Bytes.toBytes(<span class="jxr_string">"rowB"</span>);
-<a class="jxr_linenumber" name="475" href="#475">475</a> 
-<a class="jxr_linenumber" name="476" href="#476">476</a>     byte[] family = Bytes.toBytes(<span class="jxr_string">"family"</span>);
-<a class="jxr_linenumber" name="477" href="#477">477</a>     byte[] qualA = Bytes.toBytes(<span class="jxr_string">"qfA"</span>);
-<a class="jxr_linenumber" name="478" href="#478">478</a>     byte[] qualB = Bytes.toBytes(<span class="jxr_string">"qfB"</span>);
-<a class="jxr_linenumber" name="479" href="#479">479</a>     <strong class="jxr_keyword">final</strong> CellComparator keyComparator = CellComparator.COMPARATOR;
-<a class="jxr_linenumber" name="480" href="#480">480</a>     <em class="jxr_comment">// verify that faked shorter rowkey could be generated</em>
-<a class="jxr_linenumber" name="481" href="#481">481</a>     <strong class="jxr_keyword">long</strong> ts = 5;
-<a class="jxr_linenumber" name="482" href="#482">482</a>     KeyValue kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"the quick brown fox"</span>), family, qualA, ts, Type.Put);
-<a class="jxr_linenumber" name="483" href="#483">483</a>     KeyValue kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"the who test text"</span>), family, qualA, ts, Type.Put);
-<a class="jxr_linenumber" name="484" href="#484">484</a>     Cell newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
-<a class="jxr_linenumber" name="485" href="#485">485</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
-<a class="jxr_linenumber" name="486" href="#486">486</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
-<a class="jxr_linenumber" name="487" href="#487">487</a>     byte[] expectedArray = Bytes.toBytes(<span class="jxr_string">"the r"</span>);
-<a class="jxr_linenumber" name="488" href="#488">488</a>     Bytes.equals(newKey.getRowArray(), newKey.getRowOffset(), newKey.getRowLength(), expectedArray,
-<a class="jxr_linenumber" name="489" href="#489">489</a>         0, expectedArray.length);
-<a class="jxr_linenumber" name="490" href="#490">490</a> 
-<a class="jxr_linenumber" name="491" href="#491">491</a>     <em class="jxr_comment">// verify: same with "row + family + qualifier", return rightKey directly</em>
-<a class="jxr_linenumber" name="492" href="#492">492</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, 5, Type.Put);
-<a class="jxr_linenumber" name="493" href="#493">493</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, 0, Type.Put);
-<a class="jxr_linenumber" name="494" href="#494">494</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
-<a class="jxr_linenumber" name="495" href="#495">495</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
-<a class="jxr_linenumber" name="496" href="#496">496</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
-<a class="jxr_linenumber" name="497" href="#497">497</a>     assertTrue((keyComparator.compare(kv2, newKey)) == 0);
-<a class="jxr_linenumber" name="498" href="#498">498</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, -5, Type.Put);
-<a class="jxr_linenumber" name="499" href="#499">499</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, -10, Type.Put);
-<a class="jxr_linenumber" name="500" href="#500">500</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
-<a class="jxr_linenumber" name="501" href="#501">501</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
-<a class="jxr_linenumber" name="502" href="#502">502</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
-<a class="jxr_linenumber" name="503" href="#503">503</a>     assertTrue((keyComparator.compare(kv2, newKey)) == 0);
-<a class="jxr_linenumber" name="504" href="#504">504</a> 
-<a class="jxr_linenumber" name="505" href="#505">505</a>     <em class="jxr_comment">// verify: same with row, different with qualifier</em>
-<a class="jxr_linenumber" name="506" href="#506">506</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, 5, Type.Put);
-<a class="jxr_linenumber" name="507" href="#507">507</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualB, 5, Type.Put);
-<a class="jxr_linenumber" name="508" href="#508">508</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
-<a class="jxr_linenumber" name="509" href="#509">509</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
-<a class="jxr_linenumber" name="510" href="#510">510</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
-<a class="jxr_linenumber" name="511" href="#511">511</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
-<a class="jxr_linenumber" name="512" href="#512">512</a>     assertTrue(Arrays.equals(CellUtil.cloneFamily(newKey), family));
-<a class="jxr_linenumber" name="513" href="#513">513</a>     assertTrue(Arrays.equals(CellUtil.cloneQualifier(newKey), qualB));
-<a class="jxr_linenumber" name="514" href="#514">514</a>     assertTrue(newKey.getTimestamp() == HConstants.LATEST_TIMESTAMP);
-<a class="jxr_linenumber" name="515" href="#515">515</a>     assertTrue(newKey.getTypeByte() == Type.Maximum.getCode());
-<a class="jxr_linenumber" name="516" href="#516">516</a> 
-<a class="jxr_linenumber" name="517" href="#517">517</a>     <em class="jxr_comment">// verify metaKeyComparator's getShortMidpointKey output</em>
-<a class="jxr_linenumber" name="518" href="#518">518</a>     <strong class="jxr_keyword">final</strong> CellComparator metaKeyComparator = CellComparator.META_COMPARATOR;
-<a class="jxr_linenumber" name="519" href="#519">519</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase123"</span>), family, qualA, 5, Type.Put);
-<a class="jxr_linenumber" name="520" href="#520">520</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase234"</span>), family, qualA, 0, Type.Put);
-<a class="jxr_linenumber" name="521" href="#521">521</a>     newKey = HFileWriterImpl.getMidpoint(metaKeyComparator, kv1, kv2);
-<a class="jxr_linenumber" name="522" href="#522">522</a>     assertTrue(metaKeyComparator.compare(kv1, newKey) &lt; 0);
-<a class="jxr_linenumber" name="523" href="#523">523</a>     assertTrue((metaKeyComparator.compare(kv2, newKey) == 0));
+<a class="jxr_linenumber" name="460" href="#460">460</a> 
+<a class="jxr_linenumber" name="461" href="#461">461</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="462" href="#462">462</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"aaaaaaaa"</span>), Bytes.toBytes(<span class="jxr_string">"b"</span>));
+<a class="jxr_linenumber" name="463" href="#463">463</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="464" href="#464">464</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
+<a class="jxr_linenumber" name="465" href="#465">465</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt; 0);
+<a class="jxr_linenumber" name="466" href="#466">466</a>     assertEquals(2, (<strong class="jxr_keyword">int</strong>) mid.getFamilyLength());
+<a class="jxr_linenumber" name="467" href="#467">467</a> 
+<a class="jxr_linenumber" name="468" href="#468">468</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="469" href="#469">469</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"aaaaaaaaa"</span>));
+<a class="jxr_linenumber" name="470" href="#470">470</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="471" href="#471">471</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
+<a class="jxr_linenumber" name="472" href="#472">472</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt; 0);
+<a class="jxr_linenumber" name="473" href="#473">473</a>     assertEquals(2, (<strong class="jxr_keyword">int</strong>) mid.getQualifierLength());
+<a class="jxr_linenumber" name="474" href="#474">474</a> 
+<a class="jxr_linenumber" name="475" href="#475">475</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="476" href="#476">476</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"b"</span>));
+<a class="jxr_linenumber" name="477" href="#477">477</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.COMPARATOR, left, right);
+<a class="jxr_linenumber" name="478" href="#478">478</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
+<a class="jxr_linenumber" name="479" href="#479">479</a>     assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) &lt;= 0);
+<a class="jxr_linenumber" name="480" href="#480">480</a>     assertEquals(1, (<strong class="jxr_keyword">int</strong>) mid.getQualifierLength());
+<a class="jxr_linenumber" name="481" href="#481">481</a> 
+<a class="jxr_linenumber" name="482" href="#482">482</a>     <em class="jxr_comment">// Assert that if meta comparator, it returns the right cell -- i.e. no</em>
+<a class="jxr_linenumber" name="483" href="#483">483</a>     <em class="jxr_comment">// optimization done.</em>
+<a class="jxr_linenumber" name="484" href="#484">484</a>     left = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"g"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="485" href="#485">485</a>     right = CellUtil.createCell(Bytes.toBytes(<span class="jxr_string">"i"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>), Bytes.toBytes(<span class="jxr_string">"a"</span>));
+<a class="jxr_linenumber" name="486" href="#486">486</a>     mid = HFileWriterImpl.getMidpoint(CellComparator.META_COMPARATOR, left, right);
+<a class="jxr_linenumber" name="487" href="#487">487</a>     assertTrue(CellComparator.META_COMPARATOR.compareKeyIgnoresMvcc(left, mid) &lt; 0);
+<a class="jxr_linenumber" name="488" href="#488">488</a>     assertTrue(CellComparator.META_COMPARATOR.compareKeyIgnoresMvcc(mid, right) == 0);
+<a class="jxr_linenumber" name="489" href="#489">489</a> 
+<a class="jxr_linenumber" name="490" href="#490">490</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="491" href="#491">491</a> <em class="jxr_javadoccomment">     * See HBASE-7845</em>
+<a class="jxr_linenumber" name="492" href="#492">492</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="493" href="#493">493</a>     byte[] rowA = Bytes.toBytes(<span class="jxr_string">"rowA"</span>);
+<a class="jxr_linenumber" name="494" href="#494">494</a>     byte[] rowB = Bytes.toBytes(<span class="jxr_string">"rowB"</span>);
+<a class="jxr_linenumber" name="495" href="#495">495</a> 
+<a class="jxr_linenumber" name="496" href="#496">496</a>     byte[] family = Bytes.toBytes(<span class="jxr_string">"family"</span>);
+<a class="jxr_linenumber" name="497" href="#497">497</a>     byte[] qualA = Bytes.toBytes(<span class="jxr_string">"qfA"</span>);
+<a class="jxr_linenumber" name="498" href="#498">498</a>     byte[] qualB = Bytes.toBytes(<span class="jxr_string">"qfB"</span>);
+<a class="jxr_linenumber" name="499" href="#499">499</a>     <strong class="jxr_keyword">final</strong> CellComparator keyComparator = CellComparator.COMPARATOR;
+<a class="jxr_linenumber" name="500" href="#500">500</a>     <em class="jxr_comment">// verify that faked shorter rowkey could be generated</em>
+<a class="jxr_linenumber" name="501" href="#501">501</a>     <strong class="jxr_keyword">long</strong> ts = 5;
+<a class="jxr_linenumber" name="502" href="#502">502</a>     KeyValue kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"the quick brown fox"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="503" href="#503">503</a>     KeyValue kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"the who test text"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="504" href="#504">504</a>     Cell newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
+<a class="jxr_linenumber" name="505" href="#505">505</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
+<a class="jxr_linenumber" name="506" href="#506">506</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
+<a class="jxr_linenumber" name="507" href="#507">507</a>     byte[] expectedArray = Bytes.toBytes(<span class="jxr_string">"the r"</span>);
+<a class="jxr_linenumber" name="508" href="#508">508</a>     Bytes.equals(newKey.getRowArray(), newKey.getRowOffset(), newKey.getRowLength(), expectedArray,
+<a class="jxr_linenumber" name="509" href="#509">509</a>         0, expectedArray.length);
+<a class="jxr_linenumber" name="510" href="#510">510</a> 
+<a class="jxr_linenumber" name="511" href="#511">511</a>     <em class="jxr_comment">// verify: same with "row + family + qualifier", return rightKey directly</em>
+<a class="jxr_linenumber" name="512" href="#512">512</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, 5, Type.Put);
+<a class="jxr_linenumber" name="513" href="#513">513</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, 0, Type.Put);
+<a class="jxr_linenumber" name="514" href="#514">514</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
+<a class="jxr_linenumber" name="515" href="#515">515</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
+<a class="jxr_linenumber" name="516" href="#516">516</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
+<a class="jxr_linenumber" name="517" href="#517">517</a>     assertTrue((keyComparator.compare(kv2, newKey)) == 0);
+<a class="jxr_linenumber" name="518" href="#518">518</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, -5, Type.Put);
+<a class="jxr_linenumber" name="519" href="#519">519</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, -10, Type.Put);
+<a class="jxr_linenumber" name="520" href="#520">520</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
+<a class="jxr_linenumber" name="521" href="#521">521</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
+<a class="jxr_linenumber" name="522" href="#522">522</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
+<a class="jxr_linenumber" name="523" href="#523">523</a>     assertTrue((keyComparator.compare(kv2, newKey)) == 0);
 <a class="jxr_linenumber" name="524" href="#524">524</a> 
-<a class="jxr_linenumber" name="525" href="#525">525</a>     <em class="jxr_comment">// verify common fix scenario</em>
-<a class="jxr_linenumber" name="526" href="#526">526</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, ts, Type.Put);
-<a class="jxr_linenumber" name="527" href="#527">527</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbaseandhdfs"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="525" href="#525">525</a>     <em class="jxr_comment">// verify: same with row, different with qualifier</em>
+<a class="jxr_linenumber" name="526" href="#526">526</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, 5, Type.Put);
+<a class="jxr_linenumber" name="527" href="#527">527</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualB, 5, Type.Put);
 <a class="jxr_linenumber" name="528" href="#528">528</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
 <a class="jxr_linenumber" name="529" href="#529">529</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
 <a class="jxr_linenumber" name="530" href="#530">530</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
 <a class="jxr_linenumber" name="531" href="#531">531</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
-<a class="jxr_linenumber" name="532" href="#532">532</a>     expectedArray = Bytes.toBytes(<span class="jxr_string">"ilovehbasea"</span>);
-<a class="jxr_linenumber" name="533" href="#533">533</a>     Bytes.equals(newKey.getRowArray(), newKey.getRowOffset(), newKey.getRowLength(), expectedArray,
-<a class="jxr_linenumber" name="534" href="#534">534</a>         0, expectedArray.length);
-<a class="jxr_linenumber" name="535" href="#535">535</a>     <em class="jxr_comment">// verify only 1 offset scenario</em>
-<a class="jxr_linenumber" name="536" href="#536">536</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"100abcdefg"</span>), family, qualA, ts, Type.Put);
-<a class="jxr_linenumber" name="537" href="#537">537</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"101abcdefg"</span>), family, qualA, ts, Type.Put);
-<a class="jxr_linenumber" name="538" href="#538">538</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
-<a class="jxr_linenumber" name="539" href="#539">539</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
-<a class="jxr_linenumber" name="540" href="#540">540</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
-<a class="jxr_linenumber" name="541" href="#541">541</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
-<a class="jxr_linenumber" name="542" href="#542">542</a>     expectedArray = Bytes.toBytes(<span class="jxr_string">"101"</span>);
-<a class="jxr_linenumber" name="543" href="#543">543</a>     Bytes.equals(newKey.getRowArray(), newKey.getRowOffset(), newKey.getRowLength(), expectedArray,
-<a class="jxr_linenumber" name="544" href="#544">544</a>         0, expectedArray.length);
-<a class="jxr_linenumber" name="545" href="#545">545</a>   }
-<a class="jxr_linenumber" name="546" href="#546">546</a> 
-<a class="jxr_linenumber" name="547" href="#547">547</a> }
-<a class="jxr_linenumber" name="548" href="#548">548</a> 
+<a class="jxr_linenumber" name="532" href="#532">532</a>     assertTrue(Arrays.equals(CellUtil.cloneFamily(newKey), family));
+<a class="jxr_linenumber" name="533" href="#533">533</a>     assertTrue(Arrays.equals(CellUtil.cloneQualifier(newKey), qualB));
+<a class="jxr_linenumber" name="534" href="#534">534</a>     assertTrue(newKey.getTimestamp() == HConstants.LATEST_TIMESTAMP);
+<a class="jxr_linenumber" name="535" href="#535">535</a>     assertTrue(newKey.getTypeByte() == Type.Maximum.getCode());
+<a class="jxr_linenumber" name="536" href="#536">536</a> 
+<a class="jxr_linenumber" name="537" href="#537">537</a>     <em class="jxr_comment">// verify metaKeyComparator's getShortMidpointKey output</em>
+<a class="jxr_linenumber" name="538" href="#538">538</a>     <strong class="jxr_keyword">final</strong> CellComparator metaKeyComparator = CellComparator.META_COMPARATOR;
+<a class="jxr_linenumber" name="539" href="#539">539</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase123"</span>), family, qualA, 5, Type.Put);
+<a class="jxr_linenumber" name="540" href="#540">540</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase234"</span>), family, qualA, 0, Type.Put);
+<a class="jxr_linenumber" name="541" href="#541">541</a>     newKey = HFileWriterImpl.getMidpoint(metaKeyComparator, kv1, kv2);
+<a class="jxr_linenumber" name="542" href="#542">542</a>     assertTrue(metaKeyComparator.compare(kv1, newKey) &lt; 0);
+<a class="jxr_linenumber" name="543" href="#543">543</a>     assertTrue((metaKeyComparator.compare(kv2, newKey) == 0));
+<a class="jxr_linenumber" name="544" href="#544">544</a> 
+<a class="jxr_linenumber" name="545" href="#545">545</a>     <em class="jxr_comment">// verify common fix scenario</em>
+<a class="jxr_linenumber" name="546" href="#546">546</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbase"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="547" href="#547">547</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"ilovehbaseandhdfs"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="548" href="#548">548</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
+<a class="jxr_linenumber" name="549" href="#549">549</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
+<a class="jxr_linenumber" name="550" href="#550">550</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
+<a class="jxr_linenumber" name="551" href="#551">551</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
+<a class="jxr_linenumber" name="552" href="#552">552</a>     expectedArray = Bytes.toBytes(<span class="jxr_string">"ilovehbasea"</span>);
+<a class="jxr_linenumber" name="553" href="#553">553</a>     Bytes.equals(newKey.getRowArray(), newKey.getRowOffset(), newKey.getRowLength(), expectedArray,
+<a class="jxr_linenumber" name="554" href="#554">554</a>         0, expectedArray.length);
+<a class="jxr_linenumber" name="555" href="#555">555</a>     <em class="jxr_comment">// verify only 1 offset scenario</em>
+<a class="jxr_linenumber" name="556" href="#556">556</a>     kv1 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"100abcdefg"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="557" href="#557">557</a>     kv2 = <strong class="jxr_keyword">new</strong> KeyValue(Bytes.toBytes(<span class="jxr_string">"101abcdefg"</span>), family, qualA, ts, Type.Put);
+<a class="jxr_linenumber" name="558" href="#558">558</a>     assertTrue(keyComparator.compare(kv1, kv2) &lt; 0);
+<a class="jxr_linenumber" name="559" href="#559">559</a>     newKey = HFileWriterImpl.getMidpoint(keyComparator, kv1, kv2);
+<a class="jxr_linenumber" name="560" href="#560">560</a>     assertTrue(keyComparator.compare(kv1, newKey) &lt; 0);
+<a class="jxr_linenumber" name="561" href="#561">561</a>     assertTrue((keyComparator.compare(kv2, newKey)) &gt; 0);
+<a class="jxr_linenumber" name="562" href="#562">562</a>     expectedArray = Bytes.toBytes(<span class="jxr_string">"101"</span>);
+<a class="jxr_linenumber" name="563" href="#563">563</a>     Bytes.equals(newKey.getRowArray(), newKey.getRowOffset(), newKey.getRowLength(), expectedArray,
+<a class="jxr_linenumber" name="564" href="#564">564</a>         0, expectedArray.length);
+<a class="jxr_linenumber" name="565" href="#565">565</a>   }
+<a class="jxr_linenumber" name="566" href="#566">566</a> 
+<a class="jxr_linenumber" name="567" href="#567">567</a> }
+<a class="jxr_linenumber" name="568" href="#568">568</a> 
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>