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 >= 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 >= initialSeekCount );<a name="line.86"></a> +<span class="sourceLineNo">087</span> assertTrue(finalSeekCount < 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 <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) <= 0); -<a class="jxr_linenumber" name="414" href="#414">414</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 0); -<a class="jxr_linenumber" name="420" href="#420">420</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 0); -<a class="jxr_linenumber" name="426" href="#426">426</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) <= 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) < 0); -<a class="jxr_linenumber" name="432" href="#432">432</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) < 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) < 0); -<a class="jxr_linenumber" name="439" href="#439">439</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 0); -<a class="jxr_linenumber" name="445" href="#445">445</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) < 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) <= 0); +<a class="jxr_linenumber" name="434" href="#434">434</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 0); +<a class="jxr_linenumber" name="440" href="#440">440</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 0); +<a class="jxr_linenumber" name="446" href="#446">446</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 0); <a class="jxr_linenumber" name="452" href="#452">452</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) < 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) < 0); <a class="jxr_linenumber" name="459" href="#459">459</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 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) < 0); -<a class="jxr_linenumber" name="486" href="#486">486</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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) < 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) < 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) < 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) < 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) < 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) < 0); -<a class="jxr_linenumber" name="511" href="#511">511</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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) < 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) < 0); +<a class="jxr_linenumber" name="465" href="#465">465</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) < 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) < 0); +<a class="jxr_linenumber" name="472" href="#472">472</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) < 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) < 0); +<a class="jxr_linenumber" name="479" href="#479">479</a> assertTrue(CellComparator.COMPARATOR.compareKeyIgnoresMvcc(mid, right) <= 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) < 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) < 0); +<a class="jxr_linenumber" name="506" href="#506">506</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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) < 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) < 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) < 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) < 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) < 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) < 0); <a class="jxr_linenumber" name="531" href="#531">531</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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) < 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) < 0); -<a class="jxr_linenumber" name="541" href="#541">541</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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) < 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) < 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) < 0); +<a class="jxr_linenumber" name="551" href="#551">551</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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) < 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) < 0); +<a class="jxr_linenumber" name="561" href="#561">561</a> assertTrue((keyComparator.compare(kv2, newKey)) > 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>
